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

package com.yutou.qqbot.bilibili;

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

    public static void registerAllExtensions(
            com.google.protobuf.ExtensionRegistry registry) {
        registerAllExtensions(
                (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    /**
     * <pre>
     * 弹幕属性位值
     * </pre>
     *
     * Protobuf enum {@code com.yutou.qqbot.bilibili.DMAttrBit}
     */
    public enum DMAttrBit
            implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         * 保护弹幕
         * </pre>
         *
         * <code>DMAttrBitProtect = 0;</code>
         */
        DMAttrBitProtect(0),
        /**
         * <pre>
         * 直播弹幕
         * </pre>
         *
         * <code>DMAttrBitFromLive = 1;</code>
         */
        DMAttrBitFromLive(1),
        /**
         * <pre>
         * 高赞弹幕
         * </pre>
         *
         * <code>DMAttrHighLike = 2;</code>
         */
        DMAttrHighLike(2),
        UNRECOGNIZED(-1),
        ;

        /**
         * <pre>
         * 保护弹幕
         * </pre>
         *
         * <code>DMAttrBitProtect = 0;</code>
         */
        public static final int DMAttrBitProtect_VALUE = 0;
        /**
         * <pre>
         * 直播弹幕
         * </pre>
         *
         * <code>DMAttrBitFromLive = 1;</code>
         */
        public static final int DMAttrBitFromLive_VALUE = 1;
        /**
         * <pre>
         * 高赞弹幕
         * </pre>
         *
         * <code>DMAttrHighLike = 2;</code>
         */
        public static final int DMAttrHighLike_VALUE = 2;


        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException(
                        "Can't get the number of an unknown enum value.");
            }
            return value;
        }

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

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

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

        public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException(
                        "Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
            return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.getDescriptor().getEnumTypes().get(0);
        }

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

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

        private final int value;

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

        // @@protoc_insertion_point(enum_scope:com.yutou.qqbot.bilibili.DMAttrBit)
    }

    /**
     * Protobuf enum {@code com.yutou.qqbot.bilibili.SubtitleType}
     */
    public enum SubtitleType
            implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         * CC字幕
         * </pre>
         *
         * <code>CC = 0;</code>
         */
        CC(0),
        /**
         * <pre>
         * AI生成字幕
         * </pre>
         *
         * <code>AI = 1;</code>
         */
        AI(1),
        UNRECOGNIZED(-1),
        ;

        /**
         * <pre>
         * CC字幕
         * </pre>
         *
         * <code>CC = 0;</code>
         */
        public static final int CC_VALUE = 0;
        /**
         * <pre>
         * AI生成字幕
         * </pre>
         *
         * <code>AI = 1;</code>
         */
        public static final int AI_VALUE = 1;


        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException(
                        "Can't get the number of an unknown enum value.");
            }
            return value;
        }

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

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

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

        public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException(
                        "Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
            return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.getDescriptor().getEnumTypes().get(1);
        }

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

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

        private final int value;

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

        // @@protoc_insertion_point(enum_scope:com.yutou.qqbot.bilibili.SubtitleType)
    }

    public interface BuzzwordConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.BuzzwordConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig>
        getKeywordsList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig getKeywords(int index);
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        int getKeywordsCount();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder>
        getKeywordsOrBuilderList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder getKeywordsOrBuilder(
                int index);
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.BuzzwordConfig}
     */
    public static final class BuzzwordConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.BuzzwordConfig)
            BuzzwordConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use BuzzwordConfig.newBuilder() to construct.
        private BuzzwordConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private BuzzwordConfig() {
            keywords_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private BuzzwordConfig(
                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)) {
                                keywords_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            keywords_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    keywords_ = java.util.Collections.unmodifiableList(keywords_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder.class);
        }

        public static final int KEYWORDS_FIELD_NUMBER = 1;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig> keywords_;
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig> getKeywordsList() {
            return keywords_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder>
        getKeywordsOrBuilderList() {
            return keywords_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        @java.lang.Override
        public int getKeywordsCount() {
            return keywords_.size();
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig getKeywords(int index) {
            return keywords_.get(index);
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder getKeywordsOrBuilder(
                int index) {
            return keywords_.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 < keywords_.size(); i++) {
                output.writeMessage(1, keywords_.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 < keywords_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(1, keywords_.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 com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig) obj;

            if (!getKeywordsList()
                    .equals(other.getKeywordsList())) 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 (getKeywordsCount() > 0) {
                hash = (37 * hash) + KEYWORDS_FIELD_NUMBER;
                hash = (53 * hash) + getKeywordsList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.BuzzwordConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.BuzzwordConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig(this);
                int from_bitField0_ = bitField0_;
                if (keywordsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        keywords_ = java.util.Collections.unmodifiableList(keywords_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.keywords_ = keywords_;
                } else {
                    result.keywords_ = keywordsBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.getDefaultInstance()) return this;
                if (keywordsBuilder_ == null) {
                    if (!other.keywords_.isEmpty()) {
                        if (keywords_.isEmpty()) {
                            keywords_ = other.keywords_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureKeywordsIsMutable();
                            keywords_.addAll(other.keywords_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.keywords_.isEmpty()) {
                        if (keywordsBuilder_.isEmpty()) {
                            keywordsBuilder_.dispose();
                            keywordsBuilder_ = null;
                            keywords_ = other.keywords_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            keywordsBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getKeywordsFieldBuilder() : null;
                        } else {
                            keywordsBuilder_.addAllMessages(other.keywords_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig> keywords_ =
                    java.util.Collections.emptyList();
            private void ensureKeywordsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    keywords_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig>(keywords_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder> keywordsBuilder_;

            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig> getKeywordsList() {
                if (keywordsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(keywords_);
                } else {
                    return keywordsBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public int getKeywordsCount() {
                if (keywordsBuilder_ == null) {
                    return keywords_.size();
                } else {
                    return keywordsBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig getKeywords(int index) {
                if (keywordsBuilder_ == null) {
                    return keywords_.get(index);
                } else {
                    return keywordsBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder setKeywords(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig value) {
                if (keywordsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureKeywordsIsMutable();
                    keywords_.set(index, value);
                    onChanged();
                } else {
                    keywordsBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder setKeywords(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder builderForValue) {
                if (keywordsBuilder_ == null) {
                    ensureKeywordsIsMutable();
                    keywords_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    keywordsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder addKeywords(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig value) {
                if (keywordsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureKeywordsIsMutable();
                    keywords_.add(value);
                    onChanged();
                } else {
                    keywordsBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder addKeywords(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig value) {
                if (keywordsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureKeywordsIsMutable();
                    keywords_.add(index, value);
                    onChanged();
                } else {
                    keywordsBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder addKeywords(
                    com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder builderForValue) {
                if (keywordsBuilder_ == null) {
                    ensureKeywordsIsMutable();
                    keywords_.add(builderForValue.build());
                    onChanged();
                } else {
                    keywordsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder addKeywords(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder builderForValue) {
                if (keywordsBuilder_ == null) {
                    ensureKeywordsIsMutable();
                    keywords_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    keywordsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder addAllKeywords(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig> values) {
                if (keywordsBuilder_ == null) {
                    ensureKeywordsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, keywords_);
                    onChanged();
                } else {
                    keywordsBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder clearKeywords() {
                if (keywordsBuilder_ == null) {
                    keywords_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    keywordsBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public Builder removeKeywords(int index) {
                if (keywordsBuilder_ == null) {
                    ensureKeywordsIsMutable();
                    keywords_.remove(index);
                    onChanged();
                } else {
                    keywordsBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder getKeywordsBuilder(
                    int index) {
                return getKeywordsFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder getKeywordsOrBuilder(
                    int index) {
                if (keywordsBuilder_ == null) {
                    return keywords_.get(index);  } else {
                    return keywordsBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder>
            getKeywordsOrBuilderList() {
                if (keywordsBuilder_ != null) {
                    return keywordsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(keywords_);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder addKeywordsBuilder() {
                return getKeywordsFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder addKeywordsBuilder(
                    int index) {
                return getKeywordsFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.BuzzwordShowConfig keywords = 1;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder>
            getKeywordsBuilderList() {
                return getKeywordsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder>
            getKeywordsFieldBuilder() {
                if (keywordsBuilder_ == null) {
                    keywordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder>(
                            keywords_,
                            ((bitField0_ & 0x00000001) != 0),
                            getParentForChildren(),
                            isClean());
                    keywords_ = null;
                }
                return keywordsBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.BuzzwordConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.BuzzwordConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface BuzzwordShowConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.BuzzwordShowConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>string name = 1;</code>
         * @return The name.
         */
        java.lang.String getName();
        /**
         * <pre>
         * </pre>
         *
         * <code>string name = 1;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString
        getNameBytes();

        /**
         * <pre>
         * </pre>
         *
         * <code>string schema = 2;</code>
         * @return The schema.
         */
        java.lang.String getSchema();
        /**
         * <pre>
         * </pre>
         *
         * <code>string schema = 2;</code>
         * @return The bytes for schema.
         */
        com.google.protobuf.ByteString
        getSchemaBytes();

        /**
         * <pre>
         * </pre>
         *
         * <code>int32 source = 3;</code>
         * @return The source.
         */
        int getSource();

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 id = 4;</code>
         * @return The id.
         */
        long getId();

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 buzzword_id = 5;</code>
         * @return The buzzwordId.
         */
        long getBuzzwordId();

        /**
         * <pre>
         * </pre>
         *
         * <code>int32 schema_type = 6;</code>
         * @return The schemaType.
         */
        int getSchemaType();
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.BuzzwordShowConfig}
     */
    public static final class BuzzwordShowConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.BuzzwordShowConfig)
            BuzzwordShowConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use BuzzwordShowConfig.newBuilder() to construct.
        private BuzzwordShowConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private BuzzwordShowConfig() {
            name_ = "";
            schema_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private BuzzwordShowConfig(
                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();

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

                            schema_ = s;
                            break;
                        }
                        case 24: {

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

                            id_ = input.readInt64();
                            break;
                        }
                        case 40: {

                            buzzwordId_ = input.readInt64();
                            break;
                        }
                        case 48: {

                            schemaType_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder.class);
        }

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

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

        public static final int SOURCE_FIELD_NUMBER = 3;
        private int source_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 source = 3;</code>
         * @return The source.
         */
        @java.lang.Override
        public int getSource() {
            return source_;
        }

        public static final int ID_FIELD_NUMBER = 4;
        private long id_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 id = 4;</code>
         * @return The id.
         */
        @java.lang.Override
        public long getId() {
            return id_;
        }

        public static final int BUZZWORD_ID_FIELD_NUMBER = 5;
        private long buzzwordId_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 buzzword_id = 5;</code>
         * @return The buzzwordId.
         */
        @java.lang.Override
        public long getBuzzwordId() {
            return buzzwordId_;
        }

        public static final int SCHEMA_TYPE_FIELD_NUMBER = 6;
        private int schemaType_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 schema_type = 6;</code>
         * @return The schemaType.
         */
        @java.lang.Override
        public int getSchemaType() {
            return schemaType_;
        }

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

            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(schema_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, schema_);
            }
            if (source_ != 0) {
                output.writeInt32(3, source_);
            }
            if (id_ != 0L) {
                output.writeInt64(4, id_);
            }
            if (buzzwordId_ != 0L) {
                output.writeInt64(5, buzzwordId_);
            }
            if (schemaType_ != 0) {
                output.writeInt32(6, schemaType_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(schema_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, schema_);
            }
            if (source_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, source_);
            }
            if (id_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(4, id_);
            }
            if (buzzwordId_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(5, buzzwordId_);
            }
            if (schemaType_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(6, schemaType_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig) obj;

            if (!getName()
                    .equals(other.getName())) return false;
            if (!getSchema()
                    .equals(other.getSchema())) return false;
            if (getSource()
                    != other.getSource()) return false;
            if (getId()
                    != other.getId()) return false;
            if (getBuzzwordId()
                    != other.getBuzzwordId()) return false;
            if (getSchemaType()
                    != other.getSchemaType()) 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) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
            hash = (53 * hash) + getSchema().hashCode();
            hash = (37 * hash) + SOURCE_FIELD_NUMBER;
            hash = (53 * hash) + getSource();
            hash = (37 * hash) + ID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getId());
            hash = (37 * hash) + BUZZWORD_ID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getBuzzwordId());
            hash = (37 * hash) + SCHEMA_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getSchemaType();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.BuzzwordShowConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.BuzzwordShowConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.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();
                name_ = "";

                schema_ = "";

                source_ = 0;

                id_ = 0L;

                buzzwordId_ = 0L;

                schemaType_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig(this);
                result.name_ = name_;
                result.schema_ = schema_;
                result.source_ = source_;
                result.id_ = id_;
                result.buzzwordId_ = buzzwordId_;
                result.schemaType_ = schemaType_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig.getDefaultInstance()) return this;
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    onChanged();
                }
                if (!other.getSchema().isEmpty()) {
                    schema_ = other.schema_;
                    onChanged();
                }
                if (other.getSource() != 0) {
                    setSource(other.getSource());
                }
                if (other.getId() != 0L) {
                    setId(other.getId());
                }
                if (other.getBuzzwordId() != 0L) {
                    setBuzzwordId(other.getBuzzwordId());
                }
                if (other.getSchemaType() != 0) {
                    setSchemaType(other.getSchemaType());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

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

                name_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string name = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {

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

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

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

                schema_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string schema = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearSchema() {

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

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

            private int source_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 source = 3;</code>
             * @return The source.
             */
            @java.lang.Override
            public int getSource() {
                return source_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 source = 3;</code>
             * @param value The source to set.
             * @return This builder for chaining.
             */
            public Builder setSource(int value) {

                source_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 source = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearSource() {

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

            private long id_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 id = 4;</code>
             * @return The id.
             */
            @java.lang.Override
            public long getId() {
                return id_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 id = 4;</code>
             * @param value The id to set.
             * @return This builder for chaining.
             */
            public Builder setId(long value) {

                id_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 id = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearId() {

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

            private long buzzwordId_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 buzzword_id = 5;</code>
             * @return The buzzwordId.
             */
            @java.lang.Override
            public long getBuzzwordId() {
                return buzzwordId_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 buzzword_id = 5;</code>
             * @param value The buzzwordId to set.
             * @return This builder for chaining.
             */
            public Builder setBuzzwordId(long value) {

                buzzwordId_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 buzzword_id = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearBuzzwordId() {

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

            private int schemaType_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 schema_type = 6;</code>
             * @return The schemaType.
             */
            @java.lang.Override
            public int getSchemaType() {
                return schemaType_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 schema_type = 6;</code>
             * @param value The schemaType to set.
             * @return This builder for chaining.
             */
            public Builder setSchemaType(int value) {

                schemaType_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 schema_type = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearSchemaType() {

                schemaType_ = 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:com.yutou.qqbot.bilibili.BuzzwordShowConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.BuzzwordShowConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordShowConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface CommandDmOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.CommandDm)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 弹幕id
         * </pre>
         *
         * <code>int64 id = 1;</code>
         * @return The id.
         */
        long getId();

        /**
         * <pre>
         * 对象视频cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        long getOid();

        /**
         * <pre>
         * 发送者mid
         * </pre>
         *
         * <code>string mid = 3;</code>
         * @return The mid.
         */
        java.lang.String getMid();
        /**
         * <pre>
         * 发送者mid
         * </pre>
         *
         * <code>string mid = 3;</code>
         * @return The bytes for mid.
         */
        com.google.protobuf.ByteString
        getMidBytes();

        /**
         * <pre>
         * 互动弹幕指令
         * </pre>
         *
         * <code>string command = 4;</code>
         * @return The command.
         */
        java.lang.String getCommand();
        /**
         * <pre>
         * 互动弹幕指令
         * </pre>
         *
         * <code>string command = 4;</code>
         * @return The bytes for command.
         */
        com.google.protobuf.ByteString
        getCommandBytes();

        /**
         * <pre>
         * 互动弹幕正文
         * </pre>
         *
         * <code>string content = 5;</code>
         * @return The content.
         */
        java.lang.String getContent();
        /**
         * <pre>
         * 互动弹幕正文
         * </pre>
         *
         * <code>string content = 5;</code>
         * @return The bytes for content.
         */
        com.google.protobuf.ByteString
        getContentBytes();

        /**
         * <pre>
         * 出现时间
         * </pre>
         *
         * <code>int32 progress = 6;</code>
         * @return The progress.
         */
        int getProgress();

        /**
         * <pre>
         * 创建时间
         * </pre>
         *
         * <code>string ctime = 7;</code>
         * @return The ctime.
         */
        java.lang.String getCtime();
        /**
         * <pre>
         * 创建时间
         * </pre>
         *
         * <code>string ctime = 7;</code>
         * @return The bytes for ctime.
         */
        com.google.protobuf.ByteString
        getCtimeBytes();

        /**
         * <pre>
         * 发布时间
         * </pre>
         *
         * <code>string mtime = 8;</code>
         * @return The mtime.
         */
        java.lang.String getMtime();
        /**
         * <pre>
         * 发布时间
         * </pre>
         *
         * <code>string mtime = 8;</code>
         * @return The bytes for mtime.
         */
        com.google.protobuf.ByteString
        getMtimeBytes();

        /**
         * <pre>
         * 扩展json数据
         * </pre>
         *
         * <code>string extra = 9;</code>
         * @return The extra.
         */
        java.lang.String getExtra();
        /**
         * <pre>
         * 扩展json数据
         * </pre>
         *
         * <code>string extra = 9;</code>
         * @return The bytes for extra.
         */
        com.google.protobuf.ByteString
        getExtraBytes();

        /**
         * <pre>
         * 弹幕id str类型
         * </pre>
         *
         * <code>string idStr = 10;</code>
         * @return The idStr.
         */
        java.lang.String getIdStr();
        /**
         * <pre>
         * 弹幕id str类型
         * </pre>
         *
         * <code>string idStr = 10;</code>
         * @return The bytes for idStr.
         */
        com.google.protobuf.ByteString
        getIdStrBytes();
    }
    /**
     * <pre>
     * 互动弹幕条目信息
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.CommandDm}
     */
    public static final class CommandDm extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.CommandDm)
            CommandDmOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use CommandDm.newBuilder() to construct.
        private CommandDm(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private CommandDm() {
            mid_ = "";
            command_ = "";
            content_ = "";
            ctime_ = "";
            mtime_ = "";
            extra_ = "";
            idStr_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private CommandDm(
                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: {

                            id_ = input.readInt64();
                            break;
                        }
                        case 16: {

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

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

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

                            content_ = s;
                            break;
                        }
                        case 48: {

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

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

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

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

                            idStr_ = s;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_CommandDm_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_CommandDm_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.class, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder.class);
        }

        public static final int ID_FIELD_NUMBER = 1;
        private long id_;
        /**
         * <pre>
         * 弹幕id
         * </pre>
         *
         * <code>int64 id = 1;</code>
         * @return The id.
         */
        @java.lang.Override
        public long getId() {
            return id_;
        }

        public static final int OID_FIELD_NUMBER = 2;
        private long oid_;
        /**
         * <pre>
         * 对象视频cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        @java.lang.Override
        public long getOid() {
            return oid_;
        }

        public static final int MID_FIELD_NUMBER = 3;
        private volatile java.lang.Object mid_;
        /**
         * <pre>
         * 发送者mid
         * </pre>
         *
         * <code>string mid = 3;</code>
         * @return The mid.
         */
        @java.lang.Override
        public java.lang.String getMid() {
            java.lang.Object ref = mid_;
            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();
                mid_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 发送者mid
         * </pre>
         *
         * <code>string mid = 3;</code>
         * @return The bytes for mid.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getMidBytes() {
            java.lang.Object ref = mid_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                mid_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int COMMAND_FIELD_NUMBER = 4;
        private volatile java.lang.Object command_;
        /**
         * <pre>
         * 互动弹幕指令
         * </pre>
         *
         * <code>string command = 4;</code>
         * @return The command.
         */
        @java.lang.Override
        public java.lang.String getCommand() {
            java.lang.Object ref = command_;
            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();
                command_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 互动弹幕指令
         * </pre>
         *
         * <code>string command = 4;</code>
         * @return The bytes for command.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getCommandBytes() {
            java.lang.Object ref = command_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                command_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int CONTENT_FIELD_NUMBER = 5;
        private volatile java.lang.Object content_;
        /**
         * <pre>
         * 互动弹幕正文
         * </pre>
         *
         * <code>string content = 5;</code>
         * @return The content.
         */
        @java.lang.Override
        public java.lang.String getContent() {
            java.lang.Object ref = content_;
            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();
                content_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 互动弹幕正文
         * </pre>
         *
         * <code>string content = 5;</code>
         * @return The bytes for content.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getContentBytes() {
            java.lang.Object ref = content_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                content_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int PROGRESS_FIELD_NUMBER = 6;
        private int progress_;
        /**
         * <pre>
         * 出现时间
         * </pre>
         *
         * <code>int32 progress = 6;</code>
         * @return The progress.
         */
        @java.lang.Override
        public int getProgress() {
            return progress_;
        }

        public static final int CTIME_FIELD_NUMBER = 7;
        private volatile java.lang.Object ctime_;
        /**
         * <pre>
         * 创建时间
         * </pre>
         *
         * <code>string ctime = 7;</code>
         * @return The ctime.
         */
        @java.lang.Override
        public java.lang.String getCtime() {
            java.lang.Object ref = ctime_;
            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();
                ctime_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 创建时间
         * </pre>
         *
         * <code>string ctime = 7;</code>
         * @return The bytes for ctime.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getCtimeBytes() {
            java.lang.Object ref = ctime_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                ctime_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int MTIME_FIELD_NUMBER = 8;
        private volatile java.lang.Object mtime_;
        /**
         * <pre>
         * 发布时间
         * </pre>
         *
         * <code>string mtime = 8;</code>
         * @return The mtime.
         */
        @java.lang.Override
        public java.lang.String getMtime() {
            java.lang.Object ref = mtime_;
            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();
                mtime_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 发布时间
         * </pre>
         *
         * <code>string mtime = 8;</code>
         * @return The bytes for mtime.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getMtimeBytes() {
            java.lang.Object ref = mtime_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                mtime_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int EXTRA_FIELD_NUMBER = 9;
        private volatile java.lang.Object extra_;
        /**
         * <pre>
         * 扩展json数据
         * </pre>
         *
         * <code>string extra = 9;</code>
         * @return The extra.
         */
        @java.lang.Override
        public java.lang.String getExtra() {
            java.lang.Object ref = extra_;
            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();
                extra_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 扩展json数据
         * </pre>
         *
         * <code>string extra = 9;</code>
         * @return The bytes for extra.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getExtraBytes() {
            java.lang.Object ref = extra_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                extra_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int IDSTR_FIELD_NUMBER = 10;
        private volatile java.lang.Object idStr_;
        /**
         * <pre>
         * 弹幕id str类型
         * </pre>
         *
         * <code>string idStr = 10;</code>
         * @return The idStr.
         */
        @java.lang.Override
        public java.lang.String getIdStr() {
            java.lang.Object ref = idStr_;
            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();
                idStr_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 弹幕id str类型
         * </pre>
         *
         * <code>string idStr = 10;</code>
         * @return The bytes for idStr.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getIdStrBytes() {
            java.lang.Object ref = idStr_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                idStr_ = 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 (id_ != 0L) {
                output.writeInt64(1, id_);
            }
            if (oid_ != 0L) {
                output.writeInt64(2, oid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mid_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, mid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(command_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, command_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, content_);
            }
            if (progress_ != 0) {
                output.writeInt32(6, progress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ctime_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 7, ctime_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mtime_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 8, mtime_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(extra_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 9, extra_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(idStr_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 10, idStr_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (id_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, id_);
            }
            if (oid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, oid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mid_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, mid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(command_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, command_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, content_);
            }
            if (progress_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(6, progress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ctime_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, ctime_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mtime_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, mtime_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(extra_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, extra_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(idStr_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, idStr_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.CommandDm)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.CommandDm other = (com.yutou.qqbot.bilibili.VideoDanMu.CommandDm) obj;

            if (getId()
                    != other.getId()) return false;
            if (getOid()
                    != other.getOid()) return false;
            if (!getMid()
                    .equals(other.getMid())) return false;
            if (!getCommand()
                    .equals(other.getCommand())) return false;
            if (!getContent()
                    .equals(other.getContent())) return false;
            if (getProgress()
                    != other.getProgress()) return false;
            if (!getCtime()
                    .equals(other.getCtime())) return false;
            if (!getMtime()
                    .equals(other.getMtime())) return false;
            if (!getExtra()
                    .equals(other.getExtra())) return false;
            if (!getIdStr()
                    .equals(other.getIdStr())) 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) + ID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getId());
            hash = (37 * hash) + OID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getOid());
            hash = (37 * hash) + MID_FIELD_NUMBER;
            hash = (53 * hash) + getMid().hashCode();
            hash = (37 * hash) + COMMAND_FIELD_NUMBER;
            hash = (53 * hash) + getCommand().hashCode();
            hash = (37 * hash) + CONTENT_FIELD_NUMBER;
            hash = (53 * hash) + getContent().hashCode();
            hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
            hash = (53 * hash) + getProgress();
            hash = (37 * hash) + CTIME_FIELD_NUMBER;
            hash = (53 * hash) + getCtime().hashCode();
            hash = (37 * hash) + MTIME_FIELD_NUMBER;
            hash = (53 * hash) + getMtime().hashCode();
            hash = (37 * hash) + EXTRA_FIELD_NUMBER;
            hash = (53 * hash) + getExtra().hashCode();
            hash = (37 * hash) + IDSTR_FIELD_NUMBER;
            hash = (53 * hash) + getIdStr().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.CommandDm prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 互动弹幕条目信息
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.CommandDm}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.CommandDm)
                com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_CommandDm_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_CommandDm_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.class, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.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();
                id_ = 0L;

                oid_ = 0L;

                mid_ = "";

                command_ = "";

                content_ = "";

                progress_ = 0;

                ctime_ = "";

                mtime_ = "";

                extra_ = "";

                idStr_ = "";

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_CommandDm_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm build() {
                com.yutou.qqbot.bilibili.VideoDanMu.CommandDm result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.CommandDm result = new com.yutou.qqbot.bilibili.VideoDanMu.CommandDm(this);
                result.id_ = id_;
                result.oid_ = oid_;
                result.mid_ = mid_;
                result.command_ = command_;
                result.content_ = content_;
                result.progress_ = progress_;
                result.ctime_ = ctime_;
                result.mtime_ = mtime_;
                result.extra_ = extra_;
                result.idStr_ = idStr_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.CommandDm) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.CommandDm)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.CommandDm other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.getDefaultInstance()) return this;
                if (other.getId() != 0L) {
                    setId(other.getId());
                }
                if (other.getOid() != 0L) {
                    setOid(other.getOid());
                }
                if (!other.getMid().isEmpty()) {
                    mid_ = other.mid_;
                    onChanged();
                }
                if (!other.getCommand().isEmpty()) {
                    command_ = other.command_;
                    onChanged();
                }
                if (!other.getContent().isEmpty()) {
                    content_ = other.content_;
                    onChanged();
                }
                if (other.getProgress() != 0) {
                    setProgress(other.getProgress());
                }
                if (!other.getCtime().isEmpty()) {
                    ctime_ = other.ctime_;
                    onChanged();
                }
                if (!other.getMtime().isEmpty()) {
                    mtime_ = other.mtime_;
                    onChanged();
                }
                if (!other.getExtra().isEmpty()) {
                    extra_ = other.extra_;
                    onChanged();
                }
                if (!other.getIdStr().isEmpty()) {
                    idStr_ = other.idStr_;
                    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 {
                com.yutou.qqbot.bilibili.VideoDanMu.CommandDm parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.CommandDm) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long id_ ;
            /**
             * <pre>
             * 弹幕id
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @return The id.
             */
            @java.lang.Override
            public long getId() {
                return id_;
            }
            /**
             * <pre>
             * 弹幕id
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @param value The id to set.
             * @return This builder for chaining.
             */
            public Builder setId(long value) {

                id_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕id
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearId() {

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

            private long oid_ ;
            /**
             * <pre>
             * 对象视频cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return The oid.
             */
            @java.lang.Override
            public long getOid() {
                return oid_;
            }
            /**
             * <pre>
             * 对象视频cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @param value The oid to set.
             * @return This builder for chaining.
             */
            public Builder setOid(long value) {

                oid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 对象视频cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOid() {

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

            private java.lang.Object mid_ = "";
            /**
             * <pre>
             * 发送者mid
             * </pre>
             *
             * <code>string mid = 3;</code>
             * @return The mid.
             */
            public java.lang.String getMid() {
                java.lang.Object ref = mid_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    mid_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 发送者mid
             * </pre>
             *
             * <code>string mid = 3;</code>
             * @return The bytes for mid.
             */
            public com.google.protobuf.ByteString
            getMidBytes() {
                java.lang.Object ref = mid_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    mid_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 发送者mid
             * </pre>
             *
             * <code>string mid = 3;</code>
             * @param value The mid to set.
             * @return This builder for chaining.
             */
            public Builder setMid(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                mid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 发送者mid
             * </pre>
             *
             * <code>string mid = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearMid() {

                mid_ = getDefaultInstance().getMid();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 发送者mid
             * </pre>
             *
             * <code>string mid = 3;</code>
             * @param value The bytes for mid to set.
             * @return This builder for chaining.
             */
            public Builder setMidBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object command_ = "";
            /**
             * <pre>
             * 互动弹幕指令
             * </pre>
             *
             * <code>string command = 4;</code>
             * @return The command.
             */
            public java.lang.String getCommand() {
                java.lang.Object ref = command_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    command_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 互动弹幕指令
             * </pre>
             *
             * <code>string command = 4;</code>
             * @return The bytes for command.
             */
            public com.google.protobuf.ByteString
            getCommandBytes() {
                java.lang.Object ref = command_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    command_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 互动弹幕指令
             * </pre>
             *
             * <code>string command = 4;</code>
             * @param value The command to set.
             * @return This builder for chaining.
             */
            public Builder setCommand(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                command_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 互动弹幕指令
             * </pre>
             *
             * <code>string command = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearCommand() {

                command_ = getDefaultInstance().getCommand();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 互动弹幕指令
             * </pre>
             *
             * <code>string command = 4;</code>
             * @param value The bytes for command to set.
             * @return This builder for chaining.
             */
            public Builder setCommandBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object content_ = "";
            /**
             * <pre>
             * 互动弹幕正文
             * </pre>
             *
             * <code>string content = 5;</code>
             * @return The content.
             */
            public java.lang.String getContent() {
                java.lang.Object ref = content_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    content_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 互动弹幕正文
             * </pre>
             *
             * <code>string content = 5;</code>
             * @return The bytes for content.
             */
            public com.google.protobuf.ByteString
            getContentBytes() {
                java.lang.Object ref = content_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    content_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 互动弹幕正文
             * </pre>
             *
             * <code>string content = 5;</code>
             * @param value The content to set.
             * @return This builder for chaining.
             */
            public Builder setContent(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                content_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 互动弹幕正文
             * </pre>
             *
             * <code>string content = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearContent() {

                content_ = getDefaultInstance().getContent();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 互动弹幕正文
             * </pre>
             *
             * <code>string content = 5;</code>
             * @param value The bytes for content to set.
             * @return This builder for chaining.
             */
            public Builder setContentBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int progress_ ;
            /**
             * <pre>
             * 出现时间
             * </pre>
             *
             * <code>int32 progress = 6;</code>
             * @return The progress.
             */
            @java.lang.Override
            public int getProgress() {
                return progress_;
            }
            /**
             * <pre>
             * 出现时间
             * </pre>
             *
             * <code>int32 progress = 6;</code>
             * @param value The progress to set.
             * @return This builder for chaining.
             */
            public Builder setProgress(int value) {

                progress_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 出现时间
             * </pre>
             *
             * <code>int32 progress = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearProgress() {

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

            private java.lang.Object ctime_ = "";
            /**
             * <pre>
             * 创建时间
             * </pre>
             *
             * <code>string ctime = 7;</code>
             * @return The ctime.
             */
            public java.lang.String getCtime() {
                java.lang.Object ref = ctime_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    ctime_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 创建时间
             * </pre>
             *
             * <code>string ctime = 7;</code>
             * @return The bytes for ctime.
             */
            public com.google.protobuf.ByteString
            getCtimeBytes() {
                java.lang.Object ref = ctime_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    ctime_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 创建时间
             * </pre>
             *
             * <code>string ctime = 7;</code>
             * @param value The ctime to set.
             * @return This builder for chaining.
             */
            public Builder setCtime(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                ctime_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 创建时间
             * </pre>
             *
             * <code>string ctime = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearCtime() {

                ctime_ = getDefaultInstance().getCtime();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 创建时间
             * </pre>
             *
             * <code>string ctime = 7;</code>
             * @param value The bytes for ctime to set.
             * @return This builder for chaining.
             */
            public Builder setCtimeBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object mtime_ = "";
            /**
             * <pre>
             * 发布时间
             * </pre>
             *
             * <code>string mtime = 8;</code>
             * @return The mtime.
             */
            public java.lang.String getMtime() {
                java.lang.Object ref = mtime_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    mtime_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 发布时间
             * </pre>
             *
             * <code>string mtime = 8;</code>
             * @return The bytes for mtime.
             */
            public com.google.protobuf.ByteString
            getMtimeBytes() {
                java.lang.Object ref = mtime_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    mtime_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 发布时间
             * </pre>
             *
             * <code>string mtime = 8;</code>
             * @param value The mtime to set.
             * @return This builder for chaining.
             */
            public Builder setMtime(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                mtime_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 发布时间
             * </pre>
             *
             * <code>string mtime = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearMtime() {

                mtime_ = getDefaultInstance().getMtime();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 发布时间
             * </pre>
             *
             * <code>string mtime = 8;</code>
             * @param value The bytes for mtime to set.
             * @return This builder for chaining.
             */
            public Builder setMtimeBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object extra_ = "";
            /**
             * <pre>
             * 扩展json数据
             * </pre>
             *
             * <code>string extra = 9;</code>
             * @return The extra.
             */
            public java.lang.String getExtra() {
                java.lang.Object ref = extra_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    extra_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 扩展json数据
             * </pre>
             *
             * <code>string extra = 9;</code>
             * @return The bytes for extra.
             */
            public com.google.protobuf.ByteString
            getExtraBytes() {
                java.lang.Object ref = extra_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    extra_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 扩展json数据
             * </pre>
             *
             * <code>string extra = 9;</code>
             * @param value The extra to set.
             * @return This builder for chaining.
             */
            public Builder setExtra(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                extra_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 扩展json数据
             * </pre>
             *
             * <code>string extra = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearExtra() {

                extra_ = getDefaultInstance().getExtra();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 扩展json数据
             * </pre>
             *
             * <code>string extra = 9;</code>
             * @param value The bytes for extra to set.
             * @return This builder for chaining.
             */
            public Builder setExtraBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object idStr_ = "";
            /**
             * <pre>
             * 弹幕id str类型
             * </pre>
             *
             * <code>string idStr = 10;</code>
             * @return The idStr.
             */
            public java.lang.String getIdStr() {
                java.lang.Object ref = idStr_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    idStr_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 弹幕id str类型
             * </pre>
             *
             * <code>string idStr = 10;</code>
             * @return The bytes for idStr.
             */
            public com.google.protobuf.ByteString
            getIdStrBytes() {
                java.lang.Object ref = idStr_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    idStr_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 弹幕id str类型
             * </pre>
             *
             * <code>string idStr = 10;</code>
             * @param value The idStr to set.
             * @return This builder for chaining.
             */
            public Builder setIdStr(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                idStr_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕id str类型
             * </pre>
             *
             * <code>string idStr = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearIdStr() {

                idStr_ = getDefaultInstance().getIdStr();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕id str类型
             * </pre>
             *
             * <code>string idStr = 10;</code>
             * @param value The bytes for idStr to set.
             * @return This builder for chaining.
             */
            public Builder setIdStrBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                idStr_ = 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:com.yutou.qqbot.bilibili.CommandDm)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.CommandDm)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.CommandDm DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.CommandDm();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.CommandDm getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmakuAIFlagOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmakuAIFlag)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag>
        getDmFlagsList();
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag getDmFlags(int index);
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        int getDmFlagsCount();
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder>
        getDmFlagsOrBuilderList();
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder getDmFlagsOrBuilder(
                int index);
    }
    /**
     * <pre>
     * 弹幕ai云屏蔽列表
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuAIFlag}
     */
    public static final class DanmakuAIFlag extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmakuAIFlag)
            DanmakuAIFlagOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmakuAIFlag.newBuilder() to construct.
        private DanmakuAIFlag(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmakuAIFlag() {
            dmFlags_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmakuAIFlag(
                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)) {
                                dmFlags_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            dmFlags_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    dmFlags_ = java.util.Collections.unmodifiableList(dmFlags_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder.class);
        }

        public static final int DM_FLAGS_FIELD_NUMBER = 1;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag> dmFlags_;
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag> getDmFlagsList() {
            return dmFlags_;
        }
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder>
        getDmFlagsOrBuilderList() {
            return dmFlags_;
        }
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        @java.lang.Override
        public int getDmFlagsCount() {
            return dmFlags_.size();
        }
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag getDmFlags(int index) {
            return dmFlags_.get(index);
        }
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder getDmFlagsOrBuilder(
                int index) {
            return dmFlags_.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 < dmFlags_.size(); i++) {
                output.writeMessage(1, dmFlags_.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 < dmFlags_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(1, dmFlags_.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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag) obj;

            if (!getDmFlagsList()
                    .equals(other.getDmFlagsList())) 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 (getDmFlagsCount() > 0) {
                hash = (37 * hash) + DM_FLAGS_FIELD_NUMBER;
                hash = (53 * hash) + getDmFlagsList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕ai云屏蔽列表
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuAIFlag}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmakuAIFlag)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlagOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag(this);
                int from_bitField0_ = bitField0_;
                if (dmFlagsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        dmFlags_ = java.util.Collections.unmodifiableList(dmFlags_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.dmFlags_ = dmFlags_;
                } else {
                    result.dmFlags_ = dmFlagsBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.getDefaultInstance()) return this;
                if (dmFlagsBuilder_ == null) {
                    if (!other.dmFlags_.isEmpty()) {
                        if (dmFlags_.isEmpty()) {
                            dmFlags_ = other.dmFlags_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureDmFlagsIsMutable();
                            dmFlags_.addAll(other.dmFlags_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.dmFlags_.isEmpty()) {
                        if (dmFlagsBuilder_.isEmpty()) {
                            dmFlagsBuilder_.dispose();
                            dmFlagsBuilder_ = null;
                            dmFlags_ = other.dmFlags_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            dmFlagsBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getDmFlagsFieldBuilder() : null;
                        } else {
                            dmFlagsBuilder_.addAllMessages(other.dmFlags_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag> dmFlags_ =
                    java.util.Collections.emptyList();
            private void ensureDmFlagsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    dmFlags_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag>(dmFlags_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder> dmFlagsBuilder_;

            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag> getDmFlagsList() {
                if (dmFlagsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(dmFlags_);
                } else {
                    return dmFlagsBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public int getDmFlagsCount() {
                if (dmFlagsBuilder_ == null) {
                    return dmFlags_.size();
                } else {
                    return dmFlagsBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag getDmFlags(int index) {
                if (dmFlagsBuilder_ == null) {
                    return dmFlags_.get(index);
                } else {
                    return dmFlagsBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder setDmFlags(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag value) {
                if (dmFlagsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDmFlagsIsMutable();
                    dmFlags_.set(index, value);
                    onChanged();
                } else {
                    dmFlagsBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder setDmFlags(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder builderForValue) {
                if (dmFlagsBuilder_ == null) {
                    ensureDmFlagsIsMutable();
                    dmFlags_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    dmFlagsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder addDmFlags(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag value) {
                if (dmFlagsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDmFlagsIsMutable();
                    dmFlags_.add(value);
                    onChanged();
                } else {
                    dmFlagsBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder addDmFlags(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag value) {
                if (dmFlagsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDmFlagsIsMutable();
                    dmFlags_.add(index, value);
                    onChanged();
                } else {
                    dmFlagsBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder addDmFlags(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder builderForValue) {
                if (dmFlagsBuilder_ == null) {
                    ensureDmFlagsIsMutable();
                    dmFlags_.add(builderForValue.build());
                    onChanged();
                } else {
                    dmFlagsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder addDmFlags(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder builderForValue) {
                if (dmFlagsBuilder_ == null) {
                    ensureDmFlagsIsMutable();
                    dmFlags_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    dmFlagsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder addAllDmFlags(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag> values) {
                if (dmFlagsBuilder_ == null) {
                    ensureDmFlagsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, dmFlags_);
                    onChanged();
                } else {
                    dmFlagsBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder clearDmFlags() {
                if (dmFlagsBuilder_ == null) {
                    dmFlags_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    dmFlagsBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public Builder removeDmFlags(int index) {
                if (dmFlagsBuilder_ == null) {
                    ensureDmFlagsIsMutable();
                    dmFlags_.remove(index);
                    onChanged();
                } else {
                    dmFlagsBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder getDmFlagsBuilder(
                    int index) {
                return getDmFlagsFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder getDmFlagsOrBuilder(
                    int index) {
                if (dmFlagsBuilder_ == null) {
                    return dmFlags_.get(index);  } else {
                    return dmFlagsBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder>
            getDmFlagsOrBuilderList() {
                if (dmFlagsBuilder_ != null) {
                    return dmFlagsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(dmFlags_);
                }
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder addDmFlagsBuilder() {
                return getDmFlagsFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.getDefaultInstance());
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder addDmFlagsBuilder(
                    int index) {
                return getDmFlagsFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.getDefaultInstance());
            }
            /**
             * <pre>
             * 弹幕ai云屏蔽条目
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmakuFlag dm_flags = 1;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder>
            getDmFlagsBuilderList() {
                return getDmFlagsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder>
            getDmFlagsFieldBuilder() {
                if (dmFlagsBuilder_ == null) {
                    dmFlagsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder>(
                            dmFlags_,
                            ((bitField0_ & 0x00000001) != 0),
                            getParentForChildren(),
                            isClean());
                    dmFlags_ = null;
                }
                return dmFlagsBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.DanmakuAIFlag)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmakuAIFlag)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmakuElemOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmakuElem)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 弹幕dmid
         * </pre>
         *
         * <code>int64 id = 1;</code>
         * @return The id.
         */
        long getId();

        /**
         * <pre>
         * 弹幕出现位置(单位ms)
         * </pre>
         *
         * <code>int32 progress = 2;</code>
         * @return The progress.
         */
        int getProgress();

        /**
         * <pre>
         * 弹幕类型
         * </pre>
         *
         * <code>int32 mode = 3;</code>
         * @return The mode.
         */
        int getMode();

        /**
         * <pre>
         * 弹幕字号
         * </pre>
         *
         * <code>int32 fontsize = 4;</code>
         * @return The fontsize.
         */
        int getFontsize();

        /**
         * <pre>
         * 弹幕颜色
         * </pre>
         *
         * <code>uint32 color = 5;</code>
         * @return The color.
         */
        int getColor();

        /**
         * <pre>
         * 发送着mid hash
         * </pre>
         *
         * <code>string midHash = 6;</code>
         * @return The midHash.
         */
        java.lang.String getMidHash();
        /**
         * <pre>
         * 发送着mid hash
         * </pre>
         *
         * <code>string midHash = 6;</code>
         * @return The bytes for midHash.
         */
        com.google.protobuf.ByteString
        getMidHashBytes();

        /**
         * <pre>
         * 弹幕正文
         * </pre>
         *
         * <code>string content = 7;</code>
         * @return The content.
         */
        java.lang.String getContent();
        /**
         * <pre>
         * 弹幕正文
         * </pre>
         *
         * <code>string content = 7;</code>
         * @return The bytes for content.
         */
        com.google.protobuf.ByteString
        getContentBytes();

        /**
         * <pre>
         * 发送时间
         * </pre>
         *
         * <code>int64 ctime = 8;</code>
         * @return The ctime.
         */
        long getCtime();

        /**
         * <pre>
         * 权重 区间:[1,10]
         * </pre>
         *
         * <code>int32 weight = 9;</code>
         * @return The weight.
         */
        int getWeight();

        /**
         * <pre>
         * 动作
         * </pre>
         *
         * <code>string action = 10;</code>
         * @return The action.
         */
        java.lang.String getAction();
        /**
         * <pre>
         * 动作
         * </pre>
         *
         * <code>string action = 10;</code>
         * @return The bytes for action.
         */
        com.google.protobuf.ByteString
        getActionBytes();

        /**
         * <pre>
         * 弹幕池
         * </pre>
         *
         * <code>int32 pool = 11;</code>
         * @return The pool.
         */
        int getPool();

        /**
         * <pre>
         * 弹幕dmid str
         * </pre>
         *
         * <code>string idStr = 12;</code>
         * @return The idStr.
         */
        java.lang.String getIdStr();
        /**
         * <pre>
         * 弹幕dmid str
         * </pre>
         *
         * <code>string idStr = 12;</code>
         * @return The bytes for idStr.
         */
        com.google.protobuf.ByteString
        getIdStrBytes();

        /**
         * <pre>
         * 弹幕属性位(bin求AND)
         * bit0:保护 bit1:直播 bit2:高赞
         * </pre>
         *
         * <code>int32 attr = 13;</code>
         * @return The attr.
         */
        int getAttr();
    }
    /**
     * <pre>
     * 弹幕条目
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuElem}
     */
    public static final class DanmakuElem extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmakuElem)
            DanmakuElemOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmakuElem.newBuilder() to construct.
        private DanmakuElem(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmakuElem() {
            midHash_ = "";
            content_ = "";
            action_ = "";
            idStr_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmakuElem(
                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: {

                            id_ = input.readInt64();
                            break;
                        }
                        case 16: {

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

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

                            fontsize_ = input.readInt32();
                            break;
                        }
                        case 40: {

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

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

                            content_ = s;
                            break;
                        }
                        case 64: {

                            ctime_ = input.readInt64();
                            break;
                        }
                        case 72: {

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

                            action_ = s;
                            break;
                        }
                        case 88: {

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

                            idStr_ = s;
                            break;
                        }
                        case 104: {

                            attr_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuElem_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuElem_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.Builder.class);
        }

        public static final int ID_FIELD_NUMBER = 1;
        private long id_;
        /**
         * <pre>
         * 弹幕dmid
         * </pre>
         *
         * <code>int64 id = 1;</code>
         * @return The id.
         */
        @java.lang.Override
        public long getId() {
            return id_;
        }

        public static final int PROGRESS_FIELD_NUMBER = 2;
        private int progress_;
        /**
         * <pre>
         * 弹幕出现位置(单位ms)
         * </pre>
         *
         * <code>int32 progress = 2;</code>
         * @return The progress.
         */
        @java.lang.Override
        public int getProgress() {
            return progress_;
        }

        public static final int MODE_FIELD_NUMBER = 3;
        private int mode_;
        /**
         * <pre>
         * 弹幕类型
         * </pre>
         *
         * <code>int32 mode = 3;</code>
         * @return The mode.
         */
        @java.lang.Override
        public int getMode() {
            return mode_;
        }

        public static final int FONTSIZE_FIELD_NUMBER = 4;
        private int fontsize_;
        /**
         * <pre>
         * 弹幕字号
         * </pre>
         *
         * <code>int32 fontsize = 4;</code>
         * @return The fontsize.
         */
        @java.lang.Override
        public int getFontsize() {
            return fontsize_;
        }

        public static final int COLOR_FIELD_NUMBER = 5;
        private int color_;
        /**
         * <pre>
         * 弹幕颜色
         * </pre>
         *
         * <code>uint32 color = 5;</code>
         * @return The color.
         */
        @java.lang.Override
        public int getColor() {
            return color_;
        }

        public static final int MIDHASH_FIELD_NUMBER = 6;
        private volatile java.lang.Object midHash_;
        /**
         * <pre>
         * 发送着mid hash
         * </pre>
         *
         * <code>string midHash = 6;</code>
         * @return The midHash.
         */
        @java.lang.Override
        public java.lang.String getMidHash() {
            java.lang.Object ref = midHash_;
            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();
                midHash_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 发送着mid hash
         * </pre>
         *
         * <code>string midHash = 6;</code>
         * @return The bytes for midHash.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getMidHashBytes() {
            java.lang.Object ref = midHash_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                midHash_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int CONTENT_FIELD_NUMBER = 7;
        private volatile java.lang.Object content_;
        /**
         * <pre>
         * 弹幕正文
         * </pre>
         *
         * <code>string content = 7;</code>
         * @return The content.
         */
        @java.lang.Override
        public java.lang.String getContent() {
            java.lang.Object ref = content_;
            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();
                content_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 弹幕正文
         * </pre>
         *
         * <code>string content = 7;</code>
         * @return The bytes for content.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getContentBytes() {
            java.lang.Object ref = content_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                content_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int CTIME_FIELD_NUMBER = 8;
        private long ctime_;
        /**
         * <pre>
         * 发送时间
         * </pre>
         *
         * <code>int64 ctime = 8;</code>
         * @return The ctime.
         */
        @java.lang.Override
        public long getCtime() {
            return ctime_;
        }

        public static final int WEIGHT_FIELD_NUMBER = 9;
        private int weight_;
        /**
         * <pre>
         * 权重 区间:[1,10]
         * </pre>
         *
         * <code>int32 weight = 9;</code>
         * @return The weight.
         */
        @java.lang.Override
        public int getWeight() {
            return weight_;
        }

        public static final int ACTION_FIELD_NUMBER = 10;
        private volatile java.lang.Object action_;
        /**
         * <pre>
         * 动作
         * </pre>
         *
         * <code>string action = 10;</code>
         * @return The action.
         */
        @java.lang.Override
        public java.lang.String getAction() {
            java.lang.Object ref = action_;
            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();
                action_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 动作
         * </pre>
         *
         * <code>string action = 10;</code>
         * @return The bytes for action.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getActionBytes() {
            java.lang.Object ref = action_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                action_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int POOL_FIELD_NUMBER = 11;
        private int pool_;
        /**
         * <pre>
         * 弹幕池
         * </pre>
         *
         * <code>int32 pool = 11;</code>
         * @return The pool.
         */
        @java.lang.Override
        public int getPool() {
            return pool_;
        }

        public static final int IDSTR_FIELD_NUMBER = 12;
        private volatile java.lang.Object idStr_;
        /**
         * <pre>
         * 弹幕dmid str
         * </pre>
         *
         * <code>string idStr = 12;</code>
         * @return The idStr.
         */
        @java.lang.Override
        public java.lang.String getIdStr() {
            java.lang.Object ref = idStr_;
            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();
                idStr_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 弹幕dmid str
         * </pre>
         *
         * <code>string idStr = 12;</code>
         * @return The bytes for idStr.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getIdStrBytes() {
            java.lang.Object ref = idStr_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                idStr_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int ATTR_FIELD_NUMBER = 13;
        private int attr_;
        /**
         * <pre>
         * 弹幕属性位(bin求AND)
         * bit0:保护 bit1:直播 bit2:高赞
         * </pre>
         *
         * <code>int32 attr = 13;</code>
         * @return The attr.
         */
        @java.lang.Override
        public int getAttr() {
            return attr_;
        }

        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 (id_ != 0L) {
                output.writeInt64(1, id_);
            }
            if (progress_ != 0) {
                output.writeInt32(2, progress_);
            }
            if (mode_ != 0) {
                output.writeInt32(3, mode_);
            }
            if (fontsize_ != 0) {
                output.writeInt32(4, fontsize_);
            }
            if (color_ != 0) {
                output.writeUInt32(5, color_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(midHash_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 6, midHash_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 7, content_);
            }
            if (ctime_ != 0L) {
                output.writeInt64(8, ctime_);
            }
            if (weight_ != 0) {
                output.writeInt32(9, weight_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(action_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 10, action_);
            }
            if (pool_ != 0) {
                output.writeInt32(11, pool_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(idStr_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 12, idStr_);
            }
            if (attr_ != 0) {
                output.writeInt32(13, attr_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (id_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, id_);
            }
            if (progress_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(2, progress_);
            }
            if (mode_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, mode_);
            }
            if (fontsize_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(4, fontsize_);
            }
            if (color_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(5, color_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(midHash_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, midHash_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(content_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, content_);
            }
            if (ctime_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(8, ctime_);
            }
            if (weight_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(9, weight_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(action_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, action_);
            }
            if (pool_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(11, pool_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(idStr_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, idStr_);
            }
            if (attr_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(13, attr_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem) obj;

            if (getId()
                    != other.getId()) return false;
            if (getProgress()
                    != other.getProgress()) return false;
            if (getMode()
                    != other.getMode()) return false;
            if (getFontsize()
                    != other.getFontsize()) return false;
            if (getColor()
                    != other.getColor()) return false;
            if (!getMidHash()
                    .equals(other.getMidHash())) return false;
            if (!getContent()
                    .equals(other.getContent())) return false;
            if (getCtime()
                    != other.getCtime()) return false;
            if (getWeight()
                    != other.getWeight()) return false;
            if (!getAction()
                    .equals(other.getAction())) return false;
            if (getPool()
                    != other.getPool()) return false;
            if (!getIdStr()
                    .equals(other.getIdStr())) return false;
            if (getAttr()
                    != other.getAttr()) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + ID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getId());
            hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
            hash = (53 * hash) + getProgress();
            hash = (37 * hash) + MODE_FIELD_NUMBER;
            hash = (53 * hash) + getMode();
            hash = (37 * hash) + FONTSIZE_FIELD_NUMBER;
            hash = (53 * hash) + getFontsize();
            hash = (37 * hash) + COLOR_FIELD_NUMBER;
            hash = (53 * hash) + getColor();
            hash = (37 * hash) + MIDHASH_FIELD_NUMBER;
            hash = (53 * hash) + getMidHash().hashCode();
            hash = (37 * hash) + CONTENT_FIELD_NUMBER;
            hash = (53 * hash) + getContent().hashCode();
            hash = (37 * hash) + CTIME_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getCtime());
            hash = (37 * hash) + WEIGHT_FIELD_NUMBER;
            hash = (53 * hash) + getWeight();
            hash = (37 * hash) + ACTION_FIELD_NUMBER;
            hash = (53 * hash) + getAction().hashCode();
            hash = (37 * hash) + POOL_FIELD_NUMBER;
            hash = (53 * hash) + getPool();
            hash = (37 * hash) + IDSTR_FIELD_NUMBER;
            hash = (53 * hash) + getIdStr().hashCode();
            hash = (37 * hash) + ATTR_FIELD_NUMBER;
            hash = (53 * hash) + getAttr();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕条目
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuElem}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmakuElem)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuElem_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuElem_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.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();
                id_ = 0L;

                progress_ = 0;

                mode_ = 0;

                fontsize_ = 0;

                color_ = 0;

                midHash_ = "";

                content_ = "";

                ctime_ = 0L;

                weight_ = 0;

                action_ = "";

                pool_ = 0;

                idStr_ = "";

                attr_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuElem_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem(this);
                result.id_ = id_;
                result.progress_ = progress_;
                result.mode_ = mode_;
                result.fontsize_ = fontsize_;
                result.color_ = color_;
                result.midHash_ = midHash_;
                result.content_ = content_;
                result.ctime_ = ctime_;
                result.weight_ = weight_;
                result.action_ = action_;
                result.pool_ = pool_;
                result.idStr_ = idStr_;
                result.attr_ = attr_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.getDefaultInstance()) return this;
                if (other.getId() != 0L) {
                    setId(other.getId());
                }
                if (other.getProgress() != 0) {
                    setProgress(other.getProgress());
                }
                if (other.getMode() != 0) {
                    setMode(other.getMode());
                }
                if (other.getFontsize() != 0) {
                    setFontsize(other.getFontsize());
                }
                if (other.getColor() != 0) {
                    setColor(other.getColor());
                }
                if (!other.getMidHash().isEmpty()) {
                    midHash_ = other.midHash_;
                    onChanged();
                }
                if (!other.getContent().isEmpty()) {
                    content_ = other.content_;
                    onChanged();
                }
                if (other.getCtime() != 0L) {
                    setCtime(other.getCtime());
                }
                if (other.getWeight() != 0) {
                    setWeight(other.getWeight());
                }
                if (!other.getAction().isEmpty()) {
                    action_ = other.action_;
                    onChanged();
                }
                if (other.getPool() != 0) {
                    setPool(other.getPool());
                }
                if (!other.getIdStr().isEmpty()) {
                    idStr_ = other.idStr_;
                    onChanged();
                }
                if (other.getAttr() != 0) {
                    setAttr(other.getAttr());
                }
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

            private long id_ ;
            /**
             * <pre>
             * 弹幕dmid
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @return The id.
             */
            @java.lang.Override
            public long getId() {
                return id_;
            }
            /**
             * <pre>
             * 弹幕dmid
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @param value The id to set.
             * @return This builder for chaining.
             */
            public Builder setId(long value) {

                id_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕dmid
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearId() {

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

            private int progress_ ;
            /**
             * <pre>
             * 弹幕出现位置(单位ms)
             * </pre>
             *
             * <code>int32 progress = 2;</code>
             * @return The progress.
             */
            @java.lang.Override
            public int getProgress() {
                return progress_;
            }
            /**
             * <pre>
             * 弹幕出现位置(单位ms)
             * </pre>
             *
             * <code>int32 progress = 2;</code>
             * @param value The progress to set.
             * @return This builder for chaining.
             */
            public Builder setProgress(int value) {

                progress_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕出现位置(单位ms)
             * </pre>
             *
             * <code>int32 progress = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearProgress() {

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

            private int mode_ ;
            /**
             * <pre>
             * 弹幕类型
             * </pre>
             *
             * <code>int32 mode = 3;</code>
             * @return The mode.
             */
            @java.lang.Override
            public int getMode() {
                return mode_;
            }
            /**
             * <pre>
             * 弹幕类型
             * </pre>
             *
             * <code>int32 mode = 3;</code>
             * @param value The mode to set.
             * @return This builder for chaining.
             */
            public Builder setMode(int value) {

                mode_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕类型
             * </pre>
             *
             * <code>int32 mode = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearMode() {

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

            private int fontsize_ ;
            /**
             * <pre>
             * 弹幕字号
             * </pre>
             *
             * <code>int32 fontsize = 4;</code>
             * @return The fontsize.
             */
            @java.lang.Override
            public int getFontsize() {
                return fontsize_;
            }
            /**
             * <pre>
             * 弹幕字号
             * </pre>
             *
             * <code>int32 fontsize = 4;</code>
             * @param value The fontsize to set.
             * @return This builder for chaining.
             */
            public Builder setFontsize(int value) {

                fontsize_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕字号
             * </pre>
             *
             * <code>int32 fontsize = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearFontsize() {

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

            private int color_ ;
            /**
             * <pre>
             * 弹幕颜色
             * </pre>
             *
             * <code>uint32 color = 5;</code>
             * @return The color.
             */
            @java.lang.Override
            public int getColor() {
                return color_;
            }
            /**
             * <pre>
             * 弹幕颜色
             * </pre>
             *
             * <code>uint32 color = 5;</code>
             * @param value The color to set.
             * @return This builder for chaining.
             */
            public Builder setColor(int value) {

                color_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕颜色
             * </pre>
             *
             * <code>uint32 color = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearColor() {

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

            private java.lang.Object midHash_ = "";
            /**
             * <pre>
             * 发送着mid hash
             * </pre>
             *
             * <code>string midHash = 6;</code>
             * @return The midHash.
             */
            public java.lang.String getMidHash() {
                java.lang.Object ref = midHash_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    midHash_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 发送着mid hash
             * </pre>
             *
             * <code>string midHash = 6;</code>
             * @return The bytes for midHash.
             */
            public com.google.protobuf.ByteString
            getMidHashBytes() {
                java.lang.Object ref = midHash_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    midHash_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 发送着mid hash
             * </pre>
             *
             * <code>string midHash = 6;</code>
             * @param value The midHash to set.
             * @return This builder for chaining.
             */
            public Builder setMidHash(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                midHash_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 发送着mid hash
             * </pre>
             *
             * <code>string midHash = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearMidHash() {

                midHash_ = getDefaultInstance().getMidHash();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 发送着mid hash
             * </pre>
             *
             * <code>string midHash = 6;</code>
             * @param value The bytes for midHash to set.
             * @return This builder for chaining.
             */
            public Builder setMidHashBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object content_ = "";
            /**
             * <pre>
             * 弹幕正文
             * </pre>
             *
             * <code>string content = 7;</code>
             * @return The content.
             */
            public java.lang.String getContent() {
                java.lang.Object ref = content_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    content_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 弹幕正文
             * </pre>
             *
             * <code>string content = 7;</code>
             * @return The bytes for content.
             */
            public com.google.protobuf.ByteString
            getContentBytes() {
                java.lang.Object ref = content_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    content_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 弹幕正文
             * </pre>
             *
             * <code>string content = 7;</code>
             * @param value The content to set.
             * @return This builder for chaining.
             */
            public Builder setContent(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                content_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕正文
             * </pre>
             *
             * <code>string content = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearContent() {

                content_ = getDefaultInstance().getContent();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕正文
             * </pre>
             *
             * <code>string content = 7;</code>
             * @param value The bytes for content to set.
             * @return This builder for chaining.
             */
            public Builder setContentBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private long ctime_ ;
            /**
             * <pre>
             * 发送时间
             * </pre>
             *
             * <code>int64 ctime = 8;</code>
             * @return The ctime.
             */
            @java.lang.Override
            public long getCtime() {
                return ctime_;
            }
            /**
             * <pre>
             * 发送时间
             * </pre>
             *
             * <code>int64 ctime = 8;</code>
             * @param value The ctime to set.
             * @return This builder for chaining.
             */
            public Builder setCtime(long value) {

                ctime_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 发送时间
             * </pre>
             *
             * <code>int64 ctime = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearCtime() {

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

            private int weight_ ;
            /**
             * <pre>
             * 权重 区间:[1,10]
             * </pre>
             *
             * <code>int32 weight = 9;</code>
             * @return The weight.
             */
            @java.lang.Override
            public int getWeight() {
                return weight_;
            }
            /**
             * <pre>
             * 权重 区间:[1,10]
             * </pre>
             *
             * <code>int32 weight = 9;</code>
             * @param value The weight to set.
             * @return This builder for chaining.
             */
            public Builder setWeight(int value) {

                weight_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 权重 区间:[1,10]
             * </pre>
             *
             * <code>int32 weight = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearWeight() {

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

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

                action_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 动作
             * </pre>
             *
             * <code>string action = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearAction() {

                action_ = getDefaultInstance().getAction();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 动作
             * </pre>
             *
             * <code>string action = 10;</code>
             * @param value The bytes for action to set.
             * @return This builder for chaining.
             */
            public Builder setActionBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int pool_ ;
            /**
             * <pre>
             * 弹幕池
             * </pre>
             *
             * <code>int32 pool = 11;</code>
             * @return The pool.
             */
            @java.lang.Override
            public int getPool() {
                return pool_;
            }
            /**
             * <pre>
             * 弹幕池
             * </pre>
             *
             * <code>int32 pool = 11;</code>
             * @param value The pool to set.
             * @return This builder for chaining.
             */
            public Builder setPool(int value) {

                pool_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕池
             * </pre>
             *
             * <code>int32 pool = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearPool() {

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

            private java.lang.Object idStr_ = "";
            /**
             * <pre>
             * 弹幕dmid str
             * </pre>
             *
             * <code>string idStr = 12;</code>
             * @return The idStr.
             */
            public java.lang.String getIdStr() {
                java.lang.Object ref = idStr_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    idStr_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 弹幕dmid str
             * </pre>
             *
             * <code>string idStr = 12;</code>
             * @return The bytes for idStr.
             */
            public com.google.protobuf.ByteString
            getIdStrBytes() {
                java.lang.Object ref = idStr_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    idStr_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 弹幕dmid str
             * </pre>
             *
             * <code>string idStr = 12;</code>
             * @param value The idStr to set.
             * @return This builder for chaining.
             */
            public Builder setIdStr(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                idStr_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕dmid str
             * </pre>
             *
             * <code>string idStr = 12;</code>
             * @return This builder for chaining.
             */
            public Builder clearIdStr() {

                idStr_ = getDefaultInstance().getIdStr();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕dmid str
             * </pre>
             *
             * <code>string idStr = 12;</code>
             * @param value The bytes for idStr to set.
             * @return This builder for chaining.
             */
            public Builder setIdStrBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int attr_ ;
            /**
             * <pre>
             * 弹幕属性位(bin求AND)
             * bit0:保护 bit1:直播 bit2:高赞
             * </pre>
             *
             * <code>int32 attr = 13;</code>
             * @return The attr.
             */
            @java.lang.Override
            public int getAttr() {
                return attr_;
            }
            /**
             * <pre>
             * 弹幕属性位(bin求AND)
             * bit0:保护 bit1:直播 bit2:高赞
             * </pre>
             *
             * <code>int32 attr = 13;</code>
             * @param value The attr to set.
             * @return This builder for chaining.
             */
            public Builder setAttr(int value) {

                attr_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕属性位(bin求AND)
             * bit0:保护 bit1:直播 bit2:高赞
             * </pre>
             *
             * <code>int32 attr = 13;</code>
             * @return This builder for chaining.
             */
            public Builder clearAttr() {

                attr_ = 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:com.yutou.qqbot.bilibili.DanmakuElem)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmakuElem)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmakuFlagOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmakuFlag)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 弹幕dmid
         * </pre>
         *
         * <code>int64 dmid = 1;</code>
         * @return The dmid.
         */
        long getDmid();

        /**
         * <pre>
         * 评分
         * </pre>
         *
         * <code>uint32 flag = 2;</code>
         * @return The flag.
         */
        int getFlag();
    }
    /**
     * <pre>
     * 弹幕ai云屏蔽条目
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuFlag}
     */
    public static final class DanmakuFlag extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmakuFlag)
            DanmakuFlagOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmakuFlag.newBuilder() to construct.
        private DanmakuFlag(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmakuFlag() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmakuFlag(
                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: {

                            dmid_ = input.readInt64();
                            break;
                        }
                        case 16: {

                            flag_ = input.readUInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder.class);
        }

        public static final int DMID_FIELD_NUMBER = 1;
        private long dmid_;
        /**
         * <pre>
         * 弹幕dmid
         * </pre>
         *
         * <code>int64 dmid = 1;</code>
         * @return The dmid.
         */
        @java.lang.Override
        public long getDmid() {
            return dmid_;
        }

        public static final int FLAG_FIELD_NUMBER = 2;
        private int flag_;
        /**
         * <pre>
         * 评分
         * </pre>
         *
         * <code>uint32 flag = 2;</code>
         * @return The flag.
         */
        @java.lang.Override
        public int getFlag() {
            return flag_;
        }

        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 (dmid_ != 0L) {
                output.writeInt64(1, dmid_);
            }
            if (flag_ != 0) {
                output.writeUInt32(2, flag_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (dmid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, dmid_);
            }
            if (flag_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(2, flag_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag) obj;

            if (getDmid()
                    != other.getDmid()) return false;
            if (getFlag()
                    != other.getFlag()) 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) + DMID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getDmid());
            hash = (37 * hash) + FLAG_FIELD_NUMBER;
            hash = (53 * hash) + getFlag();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕ai云屏蔽条目
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuFlag}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmakuFlag)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.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();
                dmid_ = 0L;

                flag_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag(this);
                result.dmid_ = dmid_;
                result.flag_ = flag_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag.getDefaultInstance()) return this;
                if (other.getDmid() != 0L) {
                    setDmid(other.getDmid());
                }
                if (other.getFlag() != 0) {
                    setFlag(other.getFlag());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long dmid_ ;
            /**
             * <pre>
             * 弹幕dmid
             * </pre>
             *
             * <code>int64 dmid = 1;</code>
             * @return The dmid.
             */
            @java.lang.Override
            public long getDmid() {
                return dmid_;
            }
            /**
             * <pre>
             * 弹幕dmid
             * </pre>
             *
             * <code>int64 dmid = 1;</code>
             * @param value The dmid to set.
             * @return This builder for chaining.
             */
            public Builder setDmid(long value) {

                dmid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕dmid
             * </pre>
             *
             * <code>int64 dmid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearDmid() {

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

            private int flag_ ;
            /**
             * <pre>
             * 评分
             * </pre>
             *
             * <code>uint32 flag = 2;</code>
             * @return The flag.
             */
            @java.lang.Override
            public int getFlag() {
                return flag_;
            }
            /**
             * <pre>
             * 评分
             * </pre>
             *
             * <code>uint32 flag = 2;</code>
             * @param value The flag to set.
             * @return This builder for chaining.
             */
            public Builder setFlag(int value) {

                flag_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 评分
             * </pre>
             *
             * <code>uint32 flag = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearFlag() {

                flag_ = 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:com.yutou.qqbot.bilibili.DanmakuFlag)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmakuFlag)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlag getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmakuFlagConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmakuFlagConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 云屏蔽等级
         * </pre>
         *
         * <code>int32 rec_flag = 1;</code>
         * @return The recFlag.
         */
        int getRecFlag();

        /**
         * <pre>
         * 云屏蔽文案
         * </pre>
         *
         * <code>string rec_text = 2;</code>
         * @return The recText.
         */
        java.lang.String getRecText();
        /**
         * <pre>
         * 云屏蔽文案
         * </pre>
         *
         * <code>string rec_text = 2;</code>
         * @return The bytes for recText.
         */
        com.google.protobuf.ByteString
        getRecTextBytes();

        /**
         * <pre>
         * 云屏蔽开关
         * </pre>
         *
         * <code>int32 rec_switch = 3;</code>
         * @return The recSwitch.
         */
        int getRecSwitch();
    }
    /**
     * <pre>
     * 云屏蔽配置信息
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuFlagConfig}
     */
    public static final class DanmakuFlagConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmakuFlagConfig)
            DanmakuFlagConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmakuFlagConfig.newBuilder() to construct.
        private DanmakuFlagConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmakuFlagConfig() {
            recText_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmakuFlagConfig(
                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: {

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

                            recText_ = s;
                            break;
                        }
                        case 24: {

                            recSwitch_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder.class);
        }

        public static final int REC_FLAG_FIELD_NUMBER = 1;
        private int recFlag_;
        /**
         * <pre>
         * 云屏蔽等级
         * </pre>
         *
         * <code>int32 rec_flag = 1;</code>
         * @return The recFlag.
         */
        @java.lang.Override
        public int getRecFlag() {
            return recFlag_;
        }

        public static final int REC_TEXT_FIELD_NUMBER = 2;
        private volatile java.lang.Object recText_;
        /**
         * <pre>
         * 云屏蔽文案
         * </pre>
         *
         * <code>string rec_text = 2;</code>
         * @return The recText.
         */
        @java.lang.Override
        public java.lang.String getRecText() {
            java.lang.Object ref = recText_;
            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();
                recText_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 云屏蔽文案
         * </pre>
         *
         * <code>string rec_text = 2;</code>
         * @return The bytes for recText.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getRecTextBytes() {
            java.lang.Object ref = recText_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                recText_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int REC_SWITCH_FIELD_NUMBER = 3;
        private int recSwitch_;
        /**
         * <pre>
         * 云屏蔽开关
         * </pre>
         *
         * <code>int32 rec_switch = 3;</code>
         * @return The recSwitch.
         */
        @java.lang.Override
        public int getRecSwitch() {
            return recSwitch_;
        }

        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 (recFlag_ != 0) {
                output.writeInt32(1, recFlag_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recText_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, recText_);
            }
            if (recSwitch_ != 0) {
                output.writeInt32(3, recSwitch_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (recFlag_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(1, recFlag_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recText_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, recText_);
            }
            if (recSwitch_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, recSwitch_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig) obj;

            if (getRecFlag()
                    != other.getRecFlag()) return false;
            if (!getRecText()
                    .equals(other.getRecText())) return false;
            if (getRecSwitch()
                    != other.getRecSwitch()) 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) + REC_FLAG_FIELD_NUMBER;
            hash = (53 * hash) + getRecFlag();
            hash = (37 * hash) + REC_TEXT_FIELD_NUMBER;
            hash = (53 * hash) + getRecText().hashCode();
            hash = (37 * hash) + REC_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + getRecSwitch();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmakuFlagConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmakuFlagConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.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();
                recFlag_ = 0;

                recText_ = "";

                recSwitch_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig(this);
                result.recFlag_ = recFlag_;
                result.recText_ = recText_;
                result.recSwitch_ = recSwitch_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance()) return this;
                if (other.getRecFlag() != 0) {
                    setRecFlag(other.getRecFlag());
                }
                if (!other.getRecText().isEmpty()) {
                    recText_ = other.recText_;
                    onChanged();
                }
                if (other.getRecSwitch() != 0) {
                    setRecSwitch(other.getRecSwitch());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private int recFlag_ ;
            /**
             * <pre>
             * 云屏蔽等级
             * </pre>
             *
             * <code>int32 rec_flag = 1;</code>
             * @return The recFlag.
             */
            @java.lang.Override
            public int getRecFlag() {
                return recFlag_;
            }
            /**
             * <pre>
             * 云屏蔽等级
             * </pre>
             *
             * <code>int32 rec_flag = 1;</code>
             * @param value The recFlag to set.
             * @return This builder for chaining.
             */
            public Builder setRecFlag(int value) {

                recFlag_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 云屏蔽等级
             * </pre>
             *
             * <code>int32 rec_flag = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearRecFlag() {

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

            private java.lang.Object recText_ = "";
            /**
             * <pre>
             * 云屏蔽文案
             * </pre>
             *
             * <code>string rec_text = 2;</code>
             * @return The recText.
             */
            public java.lang.String getRecText() {
                java.lang.Object ref = recText_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    recText_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 云屏蔽文案
             * </pre>
             *
             * <code>string rec_text = 2;</code>
             * @return The bytes for recText.
             */
            public com.google.protobuf.ByteString
            getRecTextBytes() {
                java.lang.Object ref = recText_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    recText_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 云屏蔽文案
             * </pre>
             *
             * <code>string rec_text = 2;</code>
             * @param value The recText to set.
             * @return This builder for chaining.
             */
            public Builder setRecText(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                recText_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 云屏蔽文案
             * </pre>
             *
             * <code>string rec_text = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearRecText() {

                recText_ = getDefaultInstance().getRecText();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 云屏蔽文案
             * </pre>
             *
             * <code>string rec_text = 2;</code>
             * @param value The bytes for recText to set.
             * @return This builder for chaining.
             */
            public Builder setRecTextBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int recSwitch_ ;
            /**
             * <pre>
             * 云屏蔽开关
             * </pre>
             *
             * <code>int32 rec_switch = 3;</code>
             * @return The recSwitch.
             */
            @java.lang.Override
            public int getRecSwitch() {
                return recSwitch_;
            }
            /**
             * <pre>
             * 云屏蔽开关
             * </pre>
             *
             * <code>int32 rec_switch = 3;</code>
             * @param value The recSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setRecSwitch(int value) {

                recSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 云屏蔽开关
             * </pre>
             *
             * <code>int32 rec_switch = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearRecSwitch() {

                recSwitch_ = 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:com.yutou.qqbot.bilibili.DanmakuFlagConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmakuFlagConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmuDefaultPlayerConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>bool player_danmaku_use_default_config = 1;</code>
         * @return The playerDanmakuUseDefaultConfig.
         */
        boolean getPlayerDanmakuUseDefaultConfig();

        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
         * @return The playerDanmakuAiRecommendedSwitch.
         */
        boolean getPlayerDanmakuAiRecommendedSwitch();

        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
         * @return The playerDanmakuAiRecommendedLevel.
         */
        int getPlayerDanmakuAiRecommendedLevel();

        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blocktop = 6;</code>
         * @return The playerDanmakuBlocktop.
         */
        boolean getPlayerDanmakuBlocktop();

        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockscroll = 7;</code>
         * @return The playerDanmakuBlockscroll.
         */
        boolean getPlayerDanmakuBlockscroll();

        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockbottom = 8;</code>
         * @return The playerDanmakuBlockbottom.
         */
        boolean getPlayerDanmakuBlockbottom();

        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockcolorful = 9;</code>
         * @return The playerDanmakuBlockcolorful.
         */
        boolean getPlayerDanmakuBlockcolorful();

        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockrepeat = 10;</code>
         * @return The playerDanmakuBlockrepeat.
         */
        boolean getPlayerDanmakuBlockrepeat();

        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockspecial = 11;</code>
         * @return The playerDanmakuBlockspecial.
         */
        boolean getPlayerDanmakuBlockspecial();

        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>float player_danmaku_opacity = 12;</code>
         * @return The playerDanmakuOpacity.
         */
        float getPlayerDanmakuOpacity();

        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>float player_danmaku_scalingfactor = 13;</code>
         * @return The playerDanmakuScalingfactor.
         */
        float getPlayerDanmakuScalingfactor();

        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>float player_danmaku_domain = 14;</code>
         * @return The playerDanmakuDomain.
         */
        float getPlayerDanmakuDomain();

        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>int32 player_danmaku_speed = 15;</code>
         * @return The playerDanmakuSpeed.
         */
        int getPlayerDanmakuSpeed();

        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool inline_player_danmaku_switch = 16;</code>
         * @return The inlinePlayerDanmakuSwitch.
         */
        boolean getInlinePlayerDanmakuSwitch();

        /**
         * <pre>
         * </pre>
         *
         * <code>int32 player_danmaku_senior_mode_switch = 17;</code>
         * @return The playerDanmakuSeniorModeSwitch.
         */
        int getPlayerDanmakuSeniorModeSwitch();
    }
    /**
     * <pre>
     * 弹幕默认配置
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig}
     */
    public static final class DanmuDefaultPlayerConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig)
            DanmuDefaultPlayerConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmuDefaultPlayerConfig.newBuilder() to construct.
        private DanmuDefaultPlayerConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmuDefaultPlayerConfig() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmuDefaultPlayerConfig(
                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: {

                            playerDanmakuUseDefaultConfig_ = input.readBool();
                            break;
                        }
                        case 32: {

                            playerDanmakuAiRecommendedSwitch_ = input.readBool();
                            break;
                        }
                        case 40: {

                            playerDanmakuAiRecommendedLevel_ = input.readInt32();
                            break;
                        }
                        case 48: {

                            playerDanmakuBlocktop_ = input.readBool();
                            break;
                        }
                        case 56: {

                            playerDanmakuBlockscroll_ = input.readBool();
                            break;
                        }
                        case 64: {

                            playerDanmakuBlockbottom_ = input.readBool();
                            break;
                        }
                        case 72: {

                            playerDanmakuBlockcolorful_ = input.readBool();
                            break;
                        }
                        case 80: {

                            playerDanmakuBlockrepeat_ = input.readBool();
                            break;
                        }
                        case 88: {

                            playerDanmakuBlockspecial_ = input.readBool();
                            break;
                        }
                        case 101: {

                            playerDanmakuOpacity_ = input.readFloat();
                            break;
                        }
                        case 109: {

                            playerDanmakuScalingfactor_ = input.readFloat();
                            break;
                        }
                        case 117: {

                            playerDanmakuDomain_ = input.readFloat();
                            break;
                        }
                        case 120: {

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

                            inlinePlayerDanmakuSwitch_ = input.readBool();
                            break;
                        }
                        case 136: {

                            playerDanmakuSeniorModeSwitch_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder.class);
        }

        public static final int PLAYER_DANMAKU_USE_DEFAULT_CONFIG_FIELD_NUMBER = 1;
        private boolean playerDanmakuUseDefaultConfig_;
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>bool player_danmaku_use_default_config = 1;</code>
         * @return The playerDanmakuUseDefaultConfig.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuUseDefaultConfig() {
            return playerDanmakuUseDefaultConfig_;
        }

        public static final int PLAYER_DANMAKU_AI_RECOMMENDED_SWITCH_FIELD_NUMBER = 4;
        private boolean playerDanmakuAiRecommendedSwitch_;
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
         * @return The playerDanmakuAiRecommendedSwitch.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuAiRecommendedSwitch() {
            return playerDanmakuAiRecommendedSwitch_;
        }

        public static final int PLAYER_DANMAKU_AI_RECOMMENDED_LEVEL_FIELD_NUMBER = 5;
        private int playerDanmakuAiRecommendedLevel_;
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
         * @return The playerDanmakuAiRecommendedLevel.
         */
        @java.lang.Override
        public int getPlayerDanmakuAiRecommendedLevel() {
            return playerDanmakuAiRecommendedLevel_;
        }

        public static final int PLAYER_DANMAKU_BLOCKTOP_FIELD_NUMBER = 6;
        private boolean playerDanmakuBlocktop_;
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blocktop = 6;</code>
         * @return The playerDanmakuBlocktop.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlocktop() {
            return playerDanmakuBlocktop_;
        }

        public static final int PLAYER_DANMAKU_BLOCKSCROLL_FIELD_NUMBER = 7;
        private boolean playerDanmakuBlockscroll_;
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockscroll = 7;</code>
         * @return The playerDanmakuBlockscroll.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockscroll() {
            return playerDanmakuBlockscroll_;
        }

        public static final int PLAYER_DANMAKU_BLOCKBOTTOM_FIELD_NUMBER = 8;
        private boolean playerDanmakuBlockbottom_;
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockbottom = 8;</code>
         * @return The playerDanmakuBlockbottom.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockbottom() {
            return playerDanmakuBlockbottom_;
        }

        public static final int PLAYER_DANMAKU_BLOCKCOLORFUL_FIELD_NUMBER = 9;
        private boolean playerDanmakuBlockcolorful_;
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockcolorful = 9;</code>
         * @return The playerDanmakuBlockcolorful.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockcolorful() {
            return playerDanmakuBlockcolorful_;
        }

        public static final int PLAYER_DANMAKU_BLOCKREPEAT_FIELD_NUMBER = 10;
        private boolean playerDanmakuBlockrepeat_;
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockrepeat = 10;</code>
         * @return The playerDanmakuBlockrepeat.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockrepeat() {
            return playerDanmakuBlockrepeat_;
        }

        public static final int PLAYER_DANMAKU_BLOCKSPECIAL_FIELD_NUMBER = 11;
        private boolean playerDanmakuBlockspecial_;
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockspecial = 11;</code>
         * @return The playerDanmakuBlockspecial.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockspecial() {
            return playerDanmakuBlockspecial_;
        }

        public static final int PLAYER_DANMAKU_OPACITY_FIELD_NUMBER = 12;
        private float playerDanmakuOpacity_;
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>float player_danmaku_opacity = 12;</code>
         * @return The playerDanmakuOpacity.
         */
        @java.lang.Override
        public float getPlayerDanmakuOpacity() {
            return playerDanmakuOpacity_;
        }

        public static final int PLAYER_DANMAKU_SCALINGFACTOR_FIELD_NUMBER = 13;
        private float playerDanmakuScalingfactor_;
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>float player_danmaku_scalingfactor = 13;</code>
         * @return The playerDanmakuScalingfactor.
         */
        @java.lang.Override
        public float getPlayerDanmakuScalingfactor() {
            return playerDanmakuScalingfactor_;
        }

        public static final int PLAYER_DANMAKU_DOMAIN_FIELD_NUMBER = 14;
        private float playerDanmakuDomain_;
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>float player_danmaku_domain = 14;</code>
         * @return The playerDanmakuDomain.
         */
        @java.lang.Override
        public float getPlayerDanmakuDomain() {
            return playerDanmakuDomain_;
        }

        public static final int PLAYER_DANMAKU_SPEED_FIELD_NUMBER = 15;
        private int playerDanmakuSpeed_;
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>int32 player_danmaku_speed = 15;</code>
         * @return The playerDanmakuSpeed.
         */
        @java.lang.Override
        public int getPlayerDanmakuSpeed() {
            return playerDanmakuSpeed_;
        }

        public static final int INLINE_PLAYER_DANMAKU_SWITCH_FIELD_NUMBER = 16;
        private boolean inlinePlayerDanmakuSwitch_;
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool inline_player_danmaku_switch = 16;</code>
         * @return The inlinePlayerDanmakuSwitch.
         */
        @java.lang.Override
        public boolean getInlinePlayerDanmakuSwitch() {
            return inlinePlayerDanmakuSwitch_;
        }

        public static final int PLAYER_DANMAKU_SENIOR_MODE_SWITCH_FIELD_NUMBER = 17;
        private int playerDanmakuSeniorModeSwitch_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 player_danmaku_senior_mode_switch = 17;</code>
         * @return The playerDanmakuSeniorModeSwitch.
         */
        @java.lang.Override
        public int getPlayerDanmakuSeniorModeSwitch() {
            return playerDanmakuSeniorModeSwitch_;
        }

        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 (playerDanmakuUseDefaultConfig_ != false) {
                output.writeBool(1, playerDanmakuUseDefaultConfig_);
            }
            if (playerDanmakuAiRecommendedSwitch_ != false) {
                output.writeBool(4, playerDanmakuAiRecommendedSwitch_);
            }
            if (playerDanmakuAiRecommendedLevel_ != 0) {
                output.writeInt32(5, playerDanmakuAiRecommendedLevel_);
            }
            if (playerDanmakuBlocktop_ != false) {
                output.writeBool(6, playerDanmakuBlocktop_);
            }
            if (playerDanmakuBlockscroll_ != false) {
                output.writeBool(7, playerDanmakuBlockscroll_);
            }
            if (playerDanmakuBlockbottom_ != false) {
                output.writeBool(8, playerDanmakuBlockbottom_);
            }
            if (playerDanmakuBlockcolorful_ != false) {
                output.writeBool(9, playerDanmakuBlockcolorful_);
            }
            if (playerDanmakuBlockrepeat_ != false) {
                output.writeBool(10, playerDanmakuBlockrepeat_);
            }
            if (playerDanmakuBlockspecial_ != false) {
                output.writeBool(11, playerDanmakuBlockspecial_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuOpacity_) != 0) {
                output.writeFloat(12, playerDanmakuOpacity_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuScalingfactor_) != 0) {
                output.writeFloat(13, playerDanmakuScalingfactor_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuDomain_) != 0) {
                output.writeFloat(14, playerDanmakuDomain_);
            }
            if (playerDanmakuSpeed_ != 0) {
                output.writeInt32(15, playerDanmakuSpeed_);
            }
            if (inlinePlayerDanmakuSwitch_ != false) {
                output.writeBool(16, inlinePlayerDanmakuSwitch_);
            }
            if (playerDanmakuSeniorModeSwitch_ != 0) {
                output.writeInt32(17, playerDanmakuSeniorModeSwitch_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (playerDanmakuUseDefaultConfig_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, playerDanmakuUseDefaultConfig_);
            }
            if (playerDanmakuAiRecommendedSwitch_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(4, playerDanmakuAiRecommendedSwitch_);
            }
            if (playerDanmakuAiRecommendedLevel_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(5, playerDanmakuAiRecommendedLevel_);
            }
            if (playerDanmakuBlocktop_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(6, playerDanmakuBlocktop_);
            }
            if (playerDanmakuBlockscroll_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(7, playerDanmakuBlockscroll_);
            }
            if (playerDanmakuBlockbottom_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(8, playerDanmakuBlockbottom_);
            }
            if (playerDanmakuBlockcolorful_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(9, playerDanmakuBlockcolorful_);
            }
            if (playerDanmakuBlockrepeat_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(10, playerDanmakuBlockrepeat_);
            }
            if (playerDanmakuBlockspecial_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(11, playerDanmakuBlockspecial_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuOpacity_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(12, playerDanmakuOpacity_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuScalingfactor_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(13, playerDanmakuScalingfactor_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuDomain_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(14, playerDanmakuDomain_);
            }
            if (playerDanmakuSpeed_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(15, playerDanmakuSpeed_);
            }
            if (inlinePlayerDanmakuSwitch_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(16, inlinePlayerDanmakuSwitch_);
            }
            if (playerDanmakuSeniorModeSwitch_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(17, playerDanmakuSeniorModeSwitch_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig) obj;

            if (getPlayerDanmakuUseDefaultConfig()
                    != other.getPlayerDanmakuUseDefaultConfig()) return false;
            if (getPlayerDanmakuAiRecommendedSwitch()
                    != other.getPlayerDanmakuAiRecommendedSwitch()) return false;
            if (getPlayerDanmakuAiRecommendedLevel()
                    != other.getPlayerDanmakuAiRecommendedLevel()) return false;
            if (getPlayerDanmakuBlocktop()
                    != other.getPlayerDanmakuBlocktop()) return false;
            if (getPlayerDanmakuBlockscroll()
                    != other.getPlayerDanmakuBlockscroll()) return false;
            if (getPlayerDanmakuBlockbottom()
                    != other.getPlayerDanmakuBlockbottom()) return false;
            if (getPlayerDanmakuBlockcolorful()
                    != other.getPlayerDanmakuBlockcolorful()) return false;
            if (getPlayerDanmakuBlockrepeat()
                    != other.getPlayerDanmakuBlockrepeat()) return false;
            if (getPlayerDanmakuBlockspecial()
                    != other.getPlayerDanmakuBlockspecial()) return false;
            if (java.lang.Float.floatToIntBits(getPlayerDanmakuOpacity())
                    != java.lang.Float.floatToIntBits(
                    other.getPlayerDanmakuOpacity())) return false;
            if (java.lang.Float.floatToIntBits(getPlayerDanmakuScalingfactor())
                    != java.lang.Float.floatToIntBits(
                    other.getPlayerDanmakuScalingfactor())) return false;
            if (java.lang.Float.floatToIntBits(getPlayerDanmakuDomain())
                    != java.lang.Float.floatToIntBits(
                    other.getPlayerDanmakuDomain())) return false;
            if (getPlayerDanmakuSpeed()
                    != other.getPlayerDanmakuSpeed()) return false;
            if (getInlinePlayerDanmakuSwitch()
                    != other.getInlinePlayerDanmakuSwitch()) return false;
            if (getPlayerDanmakuSeniorModeSwitch()
                    != other.getPlayerDanmakuSeniorModeSwitch()) 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) + PLAYER_DANMAKU_USE_DEFAULT_CONFIG_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuUseDefaultConfig());
            hash = (37 * hash) + PLAYER_DANMAKU_AI_RECOMMENDED_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuAiRecommendedSwitch());
            hash = (37 * hash) + PLAYER_DANMAKU_AI_RECOMMENDED_LEVEL_FIELD_NUMBER;
            hash = (53 * hash) + getPlayerDanmakuAiRecommendedLevel();
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKTOP_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlocktop());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKSCROLL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockscroll());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKBOTTOM_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockbottom());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKCOLORFUL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockcolorful());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKREPEAT_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockrepeat());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKSPECIAL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockspecial());
            hash = (37 * hash) + PLAYER_DANMAKU_OPACITY_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getPlayerDanmakuOpacity());
            hash = (37 * hash) + PLAYER_DANMAKU_SCALINGFACTOR_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getPlayerDanmakuScalingfactor());
            hash = (37 * hash) + PLAYER_DANMAKU_DOMAIN_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getPlayerDanmakuDomain());
            hash = (37 * hash) + PLAYER_DANMAKU_SPEED_FIELD_NUMBER;
            hash = (53 * hash) + getPlayerDanmakuSpeed();
            hash = (37 * hash) + INLINE_PLAYER_DANMAKU_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getInlinePlayerDanmakuSwitch());
            hash = (37 * hash) + PLAYER_DANMAKU_SENIOR_MODE_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + getPlayerDanmakuSeniorModeSwitch();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕默认配置
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.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();
                playerDanmakuUseDefaultConfig_ = false;

                playerDanmakuAiRecommendedSwitch_ = false;

                playerDanmakuAiRecommendedLevel_ = 0;

                playerDanmakuBlocktop_ = false;

                playerDanmakuBlockscroll_ = false;

                playerDanmakuBlockbottom_ = false;

                playerDanmakuBlockcolorful_ = false;

                playerDanmakuBlockrepeat_ = false;

                playerDanmakuBlockspecial_ = false;

                playerDanmakuOpacity_ = 0F;

                playerDanmakuScalingfactor_ = 0F;

                playerDanmakuDomain_ = 0F;

                playerDanmakuSpeed_ = 0;

                inlinePlayerDanmakuSwitch_ = false;

                playerDanmakuSeniorModeSwitch_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig(this);
                result.playerDanmakuUseDefaultConfig_ = playerDanmakuUseDefaultConfig_;
                result.playerDanmakuAiRecommendedSwitch_ = playerDanmakuAiRecommendedSwitch_;
                result.playerDanmakuAiRecommendedLevel_ = playerDanmakuAiRecommendedLevel_;
                result.playerDanmakuBlocktop_ = playerDanmakuBlocktop_;
                result.playerDanmakuBlockscroll_ = playerDanmakuBlockscroll_;
                result.playerDanmakuBlockbottom_ = playerDanmakuBlockbottom_;
                result.playerDanmakuBlockcolorful_ = playerDanmakuBlockcolorful_;
                result.playerDanmakuBlockrepeat_ = playerDanmakuBlockrepeat_;
                result.playerDanmakuBlockspecial_ = playerDanmakuBlockspecial_;
                result.playerDanmakuOpacity_ = playerDanmakuOpacity_;
                result.playerDanmakuScalingfactor_ = playerDanmakuScalingfactor_;
                result.playerDanmakuDomain_ = playerDanmakuDomain_;
                result.playerDanmakuSpeed_ = playerDanmakuSpeed_;
                result.inlinePlayerDanmakuSwitch_ = inlinePlayerDanmakuSwitch_;
                result.playerDanmakuSeniorModeSwitch_ = playerDanmakuSeniorModeSwitch_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.getDefaultInstance()) return this;
                if (other.getPlayerDanmakuUseDefaultConfig() != false) {
                    setPlayerDanmakuUseDefaultConfig(other.getPlayerDanmakuUseDefaultConfig());
                }
                if (other.getPlayerDanmakuAiRecommendedSwitch() != false) {
                    setPlayerDanmakuAiRecommendedSwitch(other.getPlayerDanmakuAiRecommendedSwitch());
                }
                if (other.getPlayerDanmakuAiRecommendedLevel() != 0) {
                    setPlayerDanmakuAiRecommendedLevel(other.getPlayerDanmakuAiRecommendedLevel());
                }
                if (other.getPlayerDanmakuBlocktop() != false) {
                    setPlayerDanmakuBlocktop(other.getPlayerDanmakuBlocktop());
                }
                if (other.getPlayerDanmakuBlockscroll() != false) {
                    setPlayerDanmakuBlockscroll(other.getPlayerDanmakuBlockscroll());
                }
                if (other.getPlayerDanmakuBlockbottom() != false) {
                    setPlayerDanmakuBlockbottom(other.getPlayerDanmakuBlockbottom());
                }
                if (other.getPlayerDanmakuBlockcolorful() != false) {
                    setPlayerDanmakuBlockcolorful(other.getPlayerDanmakuBlockcolorful());
                }
                if (other.getPlayerDanmakuBlockrepeat() != false) {
                    setPlayerDanmakuBlockrepeat(other.getPlayerDanmakuBlockrepeat());
                }
                if (other.getPlayerDanmakuBlockspecial() != false) {
                    setPlayerDanmakuBlockspecial(other.getPlayerDanmakuBlockspecial());
                }
                if (other.getPlayerDanmakuOpacity() != 0F) {
                    setPlayerDanmakuOpacity(other.getPlayerDanmakuOpacity());
                }
                if (other.getPlayerDanmakuScalingfactor() != 0F) {
                    setPlayerDanmakuScalingfactor(other.getPlayerDanmakuScalingfactor());
                }
                if (other.getPlayerDanmakuDomain() != 0F) {
                    setPlayerDanmakuDomain(other.getPlayerDanmakuDomain());
                }
                if (other.getPlayerDanmakuSpeed() != 0) {
                    setPlayerDanmakuSpeed(other.getPlayerDanmakuSpeed());
                }
                if (other.getInlinePlayerDanmakuSwitch() != false) {
                    setInlinePlayerDanmakuSwitch(other.getInlinePlayerDanmakuSwitch());
                }
                if (other.getPlayerDanmakuSeniorModeSwitch() != 0) {
                    setPlayerDanmakuSeniorModeSwitch(other.getPlayerDanmakuSeniorModeSwitch());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean playerDanmakuUseDefaultConfig_ ;
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>bool player_danmaku_use_default_config = 1;</code>
             * @return The playerDanmakuUseDefaultConfig.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuUseDefaultConfig() {
                return playerDanmakuUseDefaultConfig_;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>bool player_danmaku_use_default_config = 1;</code>
             * @param value The playerDanmakuUseDefaultConfig to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuUseDefaultConfig(boolean value) {

                playerDanmakuUseDefaultConfig_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>bool player_danmaku_use_default_config = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuUseDefaultConfig() {

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

            private boolean playerDanmakuAiRecommendedSwitch_ ;
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
             * @return The playerDanmakuAiRecommendedSwitch.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuAiRecommendedSwitch() {
                return playerDanmakuAiRecommendedSwitch_;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
             * @param value The playerDanmakuAiRecommendedSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuAiRecommendedSwitch(boolean value) {

                playerDanmakuAiRecommendedSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuAiRecommendedSwitch() {

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

            private int playerDanmakuAiRecommendedLevel_ ;
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
             * @return The playerDanmakuAiRecommendedLevel.
             */
            @java.lang.Override
            public int getPlayerDanmakuAiRecommendedLevel() {
                return playerDanmakuAiRecommendedLevel_;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
             * @param value The playerDanmakuAiRecommendedLevel to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuAiRecommendedLevel(int value) {

                playerDanmakuAiRecommendedLevel_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuAiRecommendedLevel() {

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

            private boolean playerDanmakuBlocktop_ ;
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blocktop = 6;</code>
             * @return The playerDanmakuBlocktop.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlocktop() {
                return playerDanmakuBlocktop_;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blocktop = 6;</code>
             * @param value The playerDanmakuBlocktop to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlocktop(boolean value) {

                playerDanmakuBlocktop_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blocktop = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlocktop() {

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

            private boolean playerDanmakuBlockscroll_ ;
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockscroll = 7;</code>
             * @return The playerDanmakuBlockscroll.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockscroll() {
                return playerDanmakuBlockscroll_;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockscroll = 7;</code>
             * @param value The playerDanmakuBlockscroll to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockscroll(boolean value) {

                playerDanmakuBlockscroll_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockscroll = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockscroll() {

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

            private boolean playerDanmakuBlockbottom_ ;
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockbottom = 8;</code>
             * @return The playerDanmakuBlockbottom.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockbottom() {
                return playerDanmakuBlockbottom_;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockbottom = 8;</code>
             * @param value The playerDanmakuBlockbottom to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockbottom(boolean value) {

                playerDanmakuBlockbottom_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockbottom = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockbottom() {

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

            private boolean playerDanmakuBlockcolorful_ ;
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockcolorful = 9;</code>
             * @return The playerDanmakuBlockcolorful.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockcolorful() {
                return playerDanmakuBlockcolorful_;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockcolorful = 9;</code>
             * @param value The playerDanmakuBlockcolorful to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockcolorful(boolean value) {

                playerDanmakuBlockcolorful_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockcolorful = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockcolorful() {

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

            private boolean playerDanmakuBlockrepeat_ ;
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockrepeat = 10;</code>
             * @return The playerDanmakuBlockrepeat.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockrepeat() {
                return playerDanmakuBlockrepeat_;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockrepeat = 10;</code>
             * @param value The playerDanmakuBlockrepeat to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockrepeat(boolean value) {

                playerDanmakuBlockrepeat_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockrepeat = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockrepeat() {

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

            private boolean playerDanmakuBlockspecial_ ;
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockspecial = 11;</code>
             * @return The playerDanmakuBlockspecial.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockspecial() {
                return playerDanmakuBlockspecial_;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockspecial = 11;</code>
             * @param value The playerDanmakuBlockspecial to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockspecial(boolean value) {

                playerDanmakuBlockspecial_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockspecial = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockspecial() {

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

            private float playerDanmakuOpacity_ ;
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>float player_danmaku_opacity = 12;</code>
             * @return The playerDanmakuOpacity.
             */
            @java.lang.Override
            public float getPlayerDanmakuOpacity() {
                return playerDanmakuOpacity_;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>float player_danmaku_opacity = 12;</code>
             * @param value The playerDanmakuOpacity to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuOpacity(float value) {

                playerDanmakuOpacity_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>float player_danmaku_opacity = 12;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuOpacity() {

                playerDanmakuOpacity_ = 0F;
                onChanged();
                return this;
            }

            private float playerDanmakuScalingfactor_ ;
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>float player_danmaku_scalingfactor = 13;</code>
             * @return The playerDanmakuScalingfactor.
             */
            @java.lang.Override
            public float getPlayerDanmakuScalingfactor() {
                return playerDanmakuScalingfactor_;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>float player_danmaku_scalingfactor = 13;</code>
             * @param value The playerDanmakuScalingfactor to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuScalingfactor(float value) {

                playerDanmakuScalingfactor_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>float player_danmaku_scalingfactor = 13;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuScalingfactor() {

                playerDanmakuScalingfactor_ = 0F;
                onChanged();
                return this;
            }

            private float playerDanmakuDomain_ ;
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @return The playerDanmakuDomain.
             */
            @java.lang.Override
            public float getPlayerDanmakuDomain() {
                return playerDanmakuDomain_;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @param value The playerDanmakuDomain to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuDomain(float value) {

                playerDanmakuDomain_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuDomain() {

                playerDanmakuDomain_ = 0F;
                onChanged();
                return this;
            }

            private int playerDanmakuSpeed_ ;
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>int32 player_danmaku_speed = 15;</code>
             * @return The playerDanmakuSpeed.
             */
            @java.lang.Override
            public int getPlayerDanmakuSpeed() {
                return playerDanmakuSpeed_;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>int32 player_danmaku_speed = 15;</code>
             * @param value The playerDanmakuSpeed to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuSpeed(int value) {

                playerDanmakuSpeed_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>int32 player_danmaku_speed = 15;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuSpeed() {

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

            private boolean inlinePlayerDanmakuSwitch_ ;
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool inline_player_danmaku_switch = 16;</code>
             * @return The inlinePlayerDanmakuSwitch.
             */
            @java.lang.Override
            public boolean getInlinePlayerDanmakuSwitch() {
                return inlinePlayerDanmakuSwitch_;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool inline_player_danmaku_switch = 16;</code>
             * @param value The inlinePlayerDanmakuSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setInlinePlayerDanmakuSwitch(boolean value) {

                inlinePlayerDanmakuSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool inline_player_danmaku_switch = 16;</code>
             * @return This builder for chaining.
             */
            public Builder clearInlinePlayerDanmakuSwitch() {

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

            private int playerDanmakuSeniorModeSwitch_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_senior_mode_switch = 17;</code>
             * @return The playerDanmakuSeniorModeSwitch.
             */
            @java.lang.Override
            public int getPlayerDanmakuSeniorModeSwitch() {
                return playerDanmakuSeniorModeSwitch_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_senior_mode_switch = 17;</code>
             * @param value The playerDanmakuSeniorModeSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuSeniorModeSwitch(int value) {

                playerDanmakuSeniorModeSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_senior_mode_switch = 17;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuSeniorModeSwitch() {

                playerDanmakuSeniorModeSwitch_ = 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:com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmuPlayerConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmuPlayerConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool player_danmaku_switch = 1;</code>
         * @return The playerDanmakuSwitch.
         */
        boolean getPlayerDanmakuSwitch();

        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>bool player_danmaku_switch_save = 2;</code>
         * @return The playerDanmakuSwitchSave.
         */
        boolean getPlayerDanmakuSwitchSave();

        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>bool player_danmaku_use_default_config = 3;</code>
         * @return The playerDanmakuUseDefaultConfig.
         */
        boolean getPlayerDanmakuUseDefaultConfig();

        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
         * @return The playerDanmakuAiRecommendedSwitch.
         */
        boolean getPlayerDanmakuAiRecommendedSwitch();

        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
         * @return The playerDanmakuAiRecommendedLevel.
         */
        int getPlayerDanmakuAiRecommendedLevel();

        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blocktop = 6;</code>
         * @return The playerDanmakuBlocktop.
         */
        boolean getPlayerDanmakuBlocktop();

        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockscroll = 7;</code>
         * @return The playerDanmakuBlockscroll.
         */
        boolean getPlayerDanmakuBlockscroll();

        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockbottom = 8;</code>
         * @return The playerDanmakuBlockbottom.
         */
        boolean getPlayerDanmakuBlockbottom();

        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockcolorful = 9;</code>
         * @return The playerDanmakuBlockcolorful.
         */
        boolean getPlayerDanmakuBlockcolorful();

        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockrepeat = 10;</code>
         * @return The playerDanmakuBlockrepeat.
         */
        boolean getPlayerDanmakuBlockrepeat();

        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockspecial = 11;</code>
         * @return The playerDanmakuBlockspecial.
         */
        boolean getPlayerDanmakuBlockspecial();

        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>float player_danmaku_opacity = 12;</code>
         * @return The playerDanmakuOpacity.
         */
        float getPlayerDanmakuOpacity();

        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>float player_danmaku_scalingfactor = 13;</code>
         * @return The playerDanmakuScalingfactor.
         */
        float getPlayerDanmakuScalingfactor();

        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>float player_danmaku_domain = 14;</code>
         * @return The playerDanmakuDomain.
         */
        float getPlayerDanmakuDomain();

        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>int32 player_danmaku_speed = 15;</code>
         * @return The playerDanmakuSpeed.
         */
        int getPlayerDanmakuSpeed();

        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>bool player_danmaku_enableblocklist = 16;</code>
         * @return The playerDanmakuEnableblocklist.
         */
        boolean getPlayerDanmakuEnableblocklist();

        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool inline_player_danmaku_switch = 17;</code>
         * @return The inlinePlayerDanmakuSwitch.
         */
        boolean getInlinePlayerDanmakuSwitch();

        /**
         * <pre>
         * </pre>
         *
         * <code>int32 inline_player_danmaku_config = 18;</code>
         * @return The inlinePlayerDanmakuConfig.
         */
        int getInlinePlayerDanmakuConfig();

        /**
         * <pre>
         * </pre>
         *
         * <code>int32 player_danmaku_ios_switch_save = 19;</code>
         * @return The playerDanmakuIosSwitchSave.
         */
        int getPlayerDanmakuIosSwitchSave();

        /**
         * <pre>
         * </pre>
         *
         * <code>int32 player_danmaku_senior_mode_switch = 20;</code>
         * @return The playerDanmakuSeniorModeSwitch.
         */
        int getPlayerDanmakuSeniorModeSwitch();
    }
    /**
     * <pre>
     * 弹幕配置
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuPlayerConfig}
     */
    public static final class DanmuPlayerConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmuPlayerConfig)
            DanmuPlayerConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmuPlayerConfig.newBuilder() to construct.
        private DanmuPlayerConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmuPlayerConfig() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmuPlayerConfig(
                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: {

                            playerDanmakuSwitch_ = input.readBool();
                            break;
                        }
                        case 16: {

                            playerDanmakuSwitchSave_ = input.readBool();
                            break;
                        }
                        case 24: {

                            playerDanmakuUseDefaultConfig_ = input.readBool();
                            break;
                        }
                        case 32: {

                            playerDanmakuAiRecommendedSwitch_ = input.readBool();
                            break;
                        }
                        case 40: {

                            playerDanmakuAiRecommendedLevel_ = input.readInt32();
                            break;
                        }
                        case 48: {

                            playerDanmakuBlocktop_ = input.readBool();
                            break;
                        }
                        case 56: {

                            playerDanmakuBlockscroll_ = input.readBool();
                            break;
                        }
                        case 64: {

                            playerDanmakuBlockbottom_ = input.readBool();
                            break;
                        }
                        case 72: {

                            playerDanmakuBlockcolorful_ = input.readBool();
                            break;
                        }
                        case 80: {

                            playerDanmakuBlockrepeat_ = input.readBool();
                            break;
                        }
                        case 88: {

                            playerDanmakuBlockspecial_ = input.readBool();
                            break;
                        }
                        case 101: {

                            playerDanmakuOpacity_ = input.readFloat();
                            break;
                        }
                        case 109: {

                            playerDanmakuScalingfactor_ = input.readFloat();
                            break;
                        }
                        case 117: {

                            playerDanmakuDomain_ = input.readFloat();
                            break;
                        }
                        case 120: {

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

                            playerDanmakuEnableblocklist_ = input.readBool();
                            break;
                        }
                        case 136: {

                            inlinePlayerDanmakuSwitch_ = input.readBool();
                            break;
                        }
                        case 144: {

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

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

                            playerDanmakuSeniorModeSwitch_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder.class);
        }

        public static final int PLAYER_DANMAKU_SWITCH_FIELD_NUMBER = 1;
        private boolean playerDanmakuSwitch_;
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool player_danmaku_switch = 1;</code>
         * @return The playerDanmakuSwitch.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuSwitch() {
            return playerDanmakuSwitch_;
        }

        public static final int PLAYER_DANMAKU_SWITCH_SAVE_FIELD_NUMBER = 2;
        private boolean playerDanmakuSwitchSave_;
        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>bool player_danmaku_switch_save = 2;</code>
         * @return The playerDanmakuSwitchSave.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuSwitchSave() {
            return playerDanmakuSwitchSave_;
        }

        public static final int PLAYER_DANMAKU_USE_DEFAULT_CONFIG_FIELD_NUMBER = 3;
        private boolean playerDanmakuUseDefaultConfig_;
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>bool player_danmaku_use_default_config = 3;</code>
         * @return The playerDanmakuUseDefaultConfig.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuUseDefaultConfig() {
            return playerDanmakuUseDefaultConfig_;
        }

        public static final int PLAYER_DANMAKU_AI_RECOMMENDED_SWITCH_FIELD_NUMBER = 4;
        private boolean playerDanmakuAiRecommendedSwitch_;
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
         * @return The playerDanmakuAiRecommendedSwitch.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuAiRecommendedSwitch() {
            return playerDanmakuAiRecommendedSwitch_;
        }

        public static final int PLAYER_DANMAKU_AI_RECOMMENDED_LEVEL_FIELD_NUMBER = 5;
        private int playerDanmakuAiRecommendedLevel_;
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
         * @return The playerDanmakuAiRecommendedLevel.
         */
        @java.lang.Override
        public int getPlayerDanmakuAiRecommendedLevel() {
            return playerDanmakuAiRecommendedLevel_;
        }

        public static final int PLAYER_DANMAKU_BLOCKTOP_FIELD_NUMBER = 6;
        private boolean playerDanmakuBlocktop_;
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blocktop = 6;</code>
         * @return The playerDanmakuBlocktop.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlocktop() {
            return playerDanmakuBlocktop_;
        }

        public static final int PLAYER_DANMAKU_BLOCKSCROLL_FIELD_NUMBER = 7;
        private boolean playerDanmakuBlockscroll_;
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockscroll = 7;</code>
         * @return The playerDanmakuBlockscroll.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockscroll() {
            return playerDanmakuBlockscroll_;
        }

        public static final int PLAYER_DANMAKU_BLOCKBOTTOM_FIELD_NUMBER = 8;
        private boolean playerDanmakuBlockbottom_;
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockbottom = 8;</code>
         * @return The playerDanmakuBlockbottom.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockbottom() {
            return playerDanmakuBlockbottom_;
        }

        public static final int PLAYER_DANMAKU_BLOCKCOLORFUL_FIELD_NUMBER = 9;
        private boolean playerDanmakuBlockcolorful_;
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockcolorful = 9;</code>
         * @return The playerDanmakuBlockcolorful.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockcolorful() {
            return playerDanmakuBlockcolorful_;
        }

        public static final int PLAYER_DANMAKU_BLOCKREPEAT_FIELD_NUMBER = 10;
        private boolean playerDanmakuBlockrepeat_;
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockrepeat = 10;</code>
         * @return The playerDanmakuBlockrepeat.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockrepeat() {
            return playerDanmakuBlockrepeat_;
        }

        public static final int PLAYER_DANMAKU_BLOCKSPECIAL_FIELD_NUMBER = 11;
        private boolean playerDanmakuBlockspecial_;
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>bool player_danmaku_blockspecial = 11;</code>
         * @return The playerDanmakuBlockspecial.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuBlockspecial() {
            return playerDanmakuBlockspecial_;
        }

        public static final int PLAYER_DANMAKU_OPACITY_FIELD_NUMBER = 12;
        private float playerDanmakuOpacity_;
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>float player_danmaku_opacity = 12;</code>
         * @return The playerDanmakuOpacity.
         */
        @java.lang.Override
        public float getPlayerDanmakuOpacity() {
            return playerDanmakuOpacity_;
        }

        public static final int PLAYER_DANMAKU_SCALINGFACTOR_FIELD_NUMBER = 13;
        private float playerDanmakuScalingfactor_;
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>float player_danmaku_scalingfactor = 13;</code>
         * @return The playerDanmakuScalingfactor.
         */
        @java.lang.Override
        public float getPlayerDanmakuScalingfactor() {
            return playerDanmakuScalingfactor_;
        }

        public static final int PLAYER_DANMAKU_DOMAIN_FIELD_NUMBER = 14;
        private float playerDanmakuDomain_;
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>float player_danmaku_domain = 14;</code>
         * @return The playerDanmakuDomain.
         */
        @java.lang.Override
        public float getPlayerDanmakuDomain() {
            return playerDanmakuDomain_;
        }

        public static final int PLAYER_DANMAKU_SPEED_FIELD_NUMBER = 15;
        private int playerDanmakuSpeed_;
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>int32 player_danmaku_speed = 15;</code>
         * @return The playerDanmakuSpeed.
         */
        @java.lang.Override
        public int getPlayerDanmakuSpeed() {
            return playerDanmakuSpeed_;
        }

        public static final int PLAYER_DANMAKU_ENABLEBLOCKLIST_FIELD_NUMBER = 16;
        private boolean playerDanmakuEnableblocklist_;
        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>bool player_danmaku_enableblocklist = 16;</code>
         * @return The playerDanmakuEnableblocklist.
         */
        @java.lang.Override
        public boolean getPlayerDanmakuEnableblocklist() {
            return playerDanmakuEnableblocklist_;
        }

        public static final int INLINE_PLAYER_DANMAKU_SWITCH_FIELD_NUMBER = 17;
        private boolean inlinePlayerDanmakuSwitch_;
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool inline_player_danmaku_switch = 17;</code>
         * @return The inlinePlayerDanmakuSwitch.
         */
        @java.lang.Override
        public boolean getInlinePlayerDanmakuSwitch() {
            return inlinePlayerDanmakuSwitch_;
        }

        public static final int INLINE_PLAYER_DANMAKU_CONFIG_FIELD_NUMBER = 18;
        private int inlinePlayerDanmakuConfig_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 inline_player_danmaku_config = 18;</code>
         * @return The inlinePlayerDanmakuConfig.
         */
        @java.lang.Override
        public int getInlinePlayerDanmakuConfig() {
            return inlinePlayerDanmakuConfig_;
        }

        public static final int PLAYER_DANMAKU_IOS_SWITCH_SAVE_FIELD_NUMBER = 19;
        private int playerDanmakuIosSwitchSave_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 player_danmaku_ios_switch_save = 19;</code>
         * @return The playerDanmakuIosSwitchSave.
         */
        @java.lang.Override
        public int getPlayerDanmakuIosSwitchSave() {
            return playerDanmakuIosSwitchSave_;
        }

        public static final int PLAYER_DANMAKU_SENIOR_MODE_SWITCH_FIELD_NUMBER = 20;
        private int playerDanmakuSeniorModeSwitch_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 player_danmaku_senior_mode_switch = 20;</code>
         * @return The playerDanmakuSeniorModeSwitch.
         */
        @java.lang.Override
        public int getPlayerDanmakuSeniorModeSwitch() {
            return playerDanmakuSeniorModeSwitch_;
        }

        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 (playerDanmakuSwitch_ != false) {
                output.writeBool(1, playerDanmakuSwitch_);
            }
            if (playerDanmakuSwitchSave_ != false) {
                output.writeBool(2, playerDanmakuSwitchSave_);
            }
            if (playerDanmakuUseDefaultConfig_ != false) {
                output.writeBool(3, playerDanmakuUseDefaultConfig_);
            }
            if (playerDanmakuAiRecommendedSwitch_ != false) {
                output.writeBool(4, playerDanmakuAiRecommendedSwitch_);
            }
            if (playerDanmakuAiRecommendedLevel_ != 0) {
                output.writeInt32(5, playerDanmakuAiRecommendedLevel_);
            }
            if (playerDanmakuBlocktop_ != false) {
                output.writeBool(6, playerDanmakuBlocktop_);
            }
            if (playerDanmakuBlockscroll_ != false) {
                output.writeBool(7, playerDanmakuBlockscroll_);
            }
            if (playerDanmakuBlockbottom_ != false) {
                output.writeBool(8, playerDanmakuBlockbottom_);
            }
            if (playerDanmakuBlockcolorful_ != false) {
                output.writeBool(9, playerDanmakuBlockcolorful_);
            }
            if (playerDanmakuBlockrepeat_ != false) {
                output.writeBool(10, playerDanmakuBlockrepeat_);
            }
            if (playerDanmakuBlockspecial_ != false) {
                output.writeBool(11, playerDanmakuBlockspecial_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuOpacity_) != 0) {
                output.writeFloat(12, playerDanmakuOpacity_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuScalingfactor_) != 0) {
                output.writeFloat(13, playerDanmakuScalingfactor_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuDomain_) != 0) {
                output.writeFloat(14, playerDanmakuDomain_);
            }
            if (playerDanmakuSpeed_ != 0) {
                output.writeInt32(15, playerDanmakuSpeed_);
            }
            if (playerDanmakuEnableblocklist_ != false) {
                output.writeBool(16, playerDanmakuEnableblocklist_);
            }
            if (inlinePlayerDanmakuSwitch_ != false) {
                output.writeBool(17, inlinePlayerDanmakuSwitch_);
            }
            if (inlinePlayerDanmakuConfig_ != 0) {
                output.writeInt32(18, inlinePlayerDanmakuConfig_);
            }
            if (playerDanmakuIosSwitchSave_ != 0) {
                output.writeInt32(19, playerDanmakuIosSwitchSave_);
            }
            if (playerDanmakuSeniorModeSwitch_ != 0) {
                output.writeInt32(20, playerDanmakuSeniorModeSwitch_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (playerDanmakuSwitch_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, playerDanmakuSwitch_);
            }
            if (playerDanmakuSwitchSave_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(2, playerDanmakuSwitchSave_);
            }
            if (playerDanmakuUseDefaultConfig_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(3, playerDanmakuUseDefaultConfig_);
            }
            if (playerDanmakuAiRecommendedSwitch_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(4, playerDanmakuAiRecommendedSwitch_);
            }
            if (playerDanmakuAiRecommendedLevel_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(5, playerDanmakuAiRecommendedLevel_);
            }
            if (playerDanmakuBlocktop_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(6, playerDanmakuBlocktop_);
            }
            if (playerDanmakuBlockscroll_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(7, playerDanmakuBlockscroll_);
            }
            if (playerDanmakuBlockbottom_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(8, playerDanmakuBlockbottom_);
            }
            if (playerDanmakuBlockcolorful_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(9, playerDanmakuBlockcolorful_);
            }
            if (playerDanmakuBlockrepeat_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(10, playerDanmakuBlockrepeat_);
            }
            if (playerDanmakuBlockspecial_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(11, playerDanmakuBlockspecial_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuOpacity_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(12, playerDanmakuOpacity_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuScalingfactor_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(13, playerDanmakuScalingfactor_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuDomain_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(14, playerDanmakuDomain_);
            }
            if (playerDanmakuSpeed_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(15, playerDanmakuSpeed_);
            }
            if (playerDanmakuEnableblocklist_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(16, playerDanmakuEnableblocklist_);
            }
            if (inlinePlayerDanmakuSwitch_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(17, inlinePlayerDanmakuSwitch_);
            }
            if (inlinePlayerDanmakuConfig_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(18, inlinePlayerDanmakuConfig_);
            }
            if (playerDanmakuIosSwitchSave_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(19, playerDanmakuIosSwitchSave_);
            }
            if (playerDanmakuSeniorModeSwitch_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(20, playerDanmakuSeniorModeSwitch_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig) obj;

            if (getPlayerDanmakuSwitch()
                    != other.getPlayerDanmakuSwitch()) return false;
            if (getPlayerDanmakuSwitchSave()
                    != other.getPlayerDanmakuSwitchSave()) return false;
            if (getPlayerDanmakuUseDefaultConfig()
                    != other.getPlayerDanmakuUseDefaultConfig()) return false;
            if (getPlayerDanmakuAiRecommendedSwitch()
                    != other.getPlayerDanmakuAiRecommendedSwitch()) return false;
            if (getPlayerDanmakuAiRecommendedLevel()
                    != other.getPlayerDanmakuAiRecommendedLevel()) return false;
            if (getPlayerDanmakuBlocktop()
                    != other.getPlayerDanmakuBlocktop()) return false;
            if (getPlayerDanmakuBlockscroll()
                    != other.getPlayerDanmakuBlockscroll()) return false;
            if (getPlayerDanmakuBlockbottom()
                    != other.getPlayerDanmakuBlockbottom()) return false;
            if (getPlayerDanmakuBlockcolorful()
                    != other.getPlayerDanmakuBlockcolorful()) return false;
            if (getPlayerDanmakuBlockrepeat()
                    != other.getPlayerDanmakuBlockrepeat()) return false;
            if (getPlayerDanmakuBlockspecial()
                    != other.getPlayerDanmakuBlockspecial()) return false;
            if (java.lang.Float.floatToIntBits(getPlayerDanmakuOpacity())
                    != java.lang.Float.floatToIntBits(
                    other.getPlayerDanmakuOpacity())) return false;
            if (java.lang.Float.floatToIntBits(getPlayerDanmakuScalingfactor())
                    != java.lang.Float.floatToIntBits(
                    other.getPlayerDanmakuScalingfactor())) return false;
            if (java.lang.Float.floatToIntBits(getPlayerDanmakuDomain())
                    != java.lang.Float.floatToIntBits(
                    other.getPlayerDanmakuDomain())) return false;
            if (getPlayerDanmakuSpeed()
                    != other.getPlayerDanmakuSpeed()) return false;
            if (getPlayerDanmakuEnableblocklist()
                    != other.getPlayerDanmakuEnableblocklist()) return false;
            if (getInlinePlayerDanmakuSwitch()
                    != other.getInlinePlayerDanmakuSwitch()) return false;
            if (getInlinePlayerDanmakuConfig()
                    != other.getInlinePlayerDanmakuConfig()) return false;
            if (getPlayerDanmakuIosSwitchSave()
                    != other.getPlayerDanmakuIosSwitchSave()) return false;
            if (getPlayerDanmakuSeniorModeSwitch()
                    != other.getPlayerDanmakuSeniorModeSwitch()) 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) + PLAYER_DANMAKU_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuSwitch());
            hash = (37 * hash) + PLAYER_DANMAKU_SWITCH_SAVE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuSwitchSave());
            hash = (37 * hash) + PLAYER_DANMAKU_USE_DEFAULT_CONFIG_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuUseDefaultConfig());
            hash = (37 * hash) + PLAYER_DANMAKU_AI_RECOMMENDED_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuAiRecommendedSwitch());
            hash = (37 * hash) + PLAYER_DANMAKU_AI_RECOMMENDED_LEVEL_FIELD_NUMBER;
            hash = (53 * hash) + getPlayerDanmakuAiRecommendedLevel();
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKTOP_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlocktop());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKSCROLL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockscroll());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKBOTTOM_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockbottom());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKCOLORFUL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockcolorful());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKREPEAT_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockrepeat());
            hash = (37 * hash) + PLAYER_DANMAKU_BLOCKSPECIAL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuBlockspecial());
            hash = (37 * hash) + PLAYER_DANMAKU_OPACITY_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getPlayerDanmakuOpacity());
            hash = (37 * hash) + PLAYER_DANMAKU_SCALINGFACTOR_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getPlayerDanmakuScalingfactor());
            hash = (37 * hash) + PLAYER_DANMAKU_DOMAIN_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getPlayerDanmakuDomain());
            hash = (37 * hash) + PLAYER_DANMAKU_SPEED_FIELD_NUMBER;
            hash = (53 * hash) + getPlayerDanmakuSpeed();
            hash = (37 * hash) + PLAYER_DANMAKU_ENABLEBLOCKLIST_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPlayerDanmakuEnableblocklist());
            hash = (37 * hash) + INLINE_PLAYER_DANMAKU_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getInlinePlayerDanmakuSwitch());
            hash = (37 * hash) + INLINE_PLAYER_DANMAKU_CONFIG_FIELD_NUMBER;
            hash = (53 * hash) + getInlinePlayerDanmakuConfig();
            hash = (37 * hash) + PLAYER_DANMAKU_IOS_SWITCH_SAVE_FIELD_NUMBER;
            hash = (53 * hash) + getPlayerDanmakuIosSwitchSave();
            hash = (37 * hash) + PLAYER_DANMAKU_SENIOR_MODE_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + getPlayerDanmakuSeniorModeSwitch();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕配置
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuPlayerConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmuPlayerConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.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();
                playerDanmakuSwitch_ = false;

                playerDanmakuSwitchSave_ = false;

                playerDanmakuUseDefaultConfig_ = false;

                playerDanmakuAiRecommendedSwitch_ = false;

                playerDanmakuAiRecommendedLevel_ = 0;

                playerDanmakuBlocktop_ = false;

                playerDanmakuBlockscroll_ = false;

                playerDanmakuBlockbottom_ = false;

                playerDanmakuBlockcolorful_ = false;

                playerDanmakuBlockrepeat_ = false;

                playerDanmakuBlockspecial_ = false;

                playerDanmakuOpacity_ = 0F;

                playerDanmakuScalingfactor_ = 0F;

                playerDanmakuDomain_ = 0F;

                playerDanmakuSpeed_ = 0;

                playerDanmakuEnableblocklist_ = false;

                inlinePlayerDanmakuSwitch_ = false;

                inlinePlayerDanmakuConfig_ = 0;

                playerDanmakuIosSwitchSave_ = 0;

                playerDanmakuSeniorModeSwitch_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig(this);
                result.playerDanmakuSwitch_ = playerDanmakuSwitch_;
                result.playerDanmakuSwitchSave_ = playerDanmakuSwitchSave_;
                result.playerDanmakuUseDefaultConfig_ = playerDanmakuUseDefaultConfig_;
                result.playerDanmakuAiRecommendedSwitch_ = playerDanmakuAiRecommendedSwitch_;
                result.playerDanmakuAiRecommendedLevel_ = playerDanmakuAiRecommendedLevel_;
                result.playerDanmakuBlocktop_ = playerDanmakuBlocktop_;
                result.playerDanmakuBlockscroll_ = playerDanmakuBlockscroll_;
                result.playerDanmakuBlockbottom_ = playerDanmakuBlockbottom_;
                result.playerDanmakuBlockcolorful_ = playerDanmakuBlockcolorful_;
                result.playerDanmakuBlockrepeat_ = playerDanmakuBlockrepeat_;
                result.playerDanmakuBlockspecial_ = playerDanmakuBlockspecial_;
                result.playerDanmakuOpacity_ = playerDanmakuOpacity_;
                result.playerDanmakuScalingfactor_ = playerDanmakuScalingfactor_;
                result.playerDanmakuDomain_ = playerDanmakuDomain_;
                result.playerDanmakuSpeed_ = playerDanmakuSpeed_;
                result.playerDanmakuEnableblocklist_ = playerDanmakuEnableblocklist_;
                result.inlinePlayerDanmakuSwitch_ = inlinePlayerDanmakuSwitch_;
                result.inlinePlayerDanmakuConfig_ = inlinePlayerDanmakuConfig_;
                result.playerDanmakuIosSwitchSave_ = playerDanmakuIosSwitchSave_;
                result.playerDanmakuSeniorModeSwitch_ = playerDanmakuSeniorModeSwitch_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.getDefaultInstance()) return this;
                if (other.getPlayerDanmakuSwitch() != false) {
                    setPlayerDanmakuSwitch(other.getPlayerDanmakuSwitch());
                }
                if (other.getPlayerDanmakuSwitchSave() != false) {
                    setPlayerDanmakuSwitchSave(other.getPlayerDanmakuSwitchSave());
                }
                if (other.getPlayerDanmakuUseDefaultConfig() != false) {
                    setPlayerDanmakuUseDefaultConfig(other.getPlayerDanmakuUseDefaultConfig());
                }
                if (other.getPlayerDanmakuAiRecommendedSwitch() != false) {
                    setPlayerDanmakuAiRecommendedSwitch(other.getPlayerDanmakuAiRecommendedSwitch());
                }
                if (other.getPlayerDanmakuAiRecommendedLevel() != 0) {
                    setPlayerDanmakuAiRecommendedLevel(other.getPlayerDanmakuAiRecommendedLevel());
                }
                if (other.getPlayerDanmakuBlocktop() != false) {
                    setPlayerDanmakuBlocktop(other.getPlayerDanmakuBlocktop());
                }
                if (other.getPlayerDanmakuBlockscroll() != false) {
                    setPlayerDanmakuBlockscroll(other.getPlayerDanmakuBlockscroll());
                }
                if (other.getPlayerDanmakuBlockbottom() != false) {
                    setPlayerDanmakuBlockbottom(other.getPlayerDanmakuBlockbottom());
                }
                if (other.getPlayerDanmakuBlockcolorful() != false) {
                    setPlayerDanmakuBlockcolorful(other.getPlayerDanmakuBlockcolorful());
                }
                if (other.getPlayerDanmakuBlockrepeat() != false) {
                    setPlayerDanmakuBlockrepeat(other.getPlayerDanmakuBlockrepeat());
                }
                if (other.getPlayerDanmakuBlockspecial() != false) {
                    setPlayerDanmakuBlockspecial(other.getPlayerDanmakuBlockspecial());
                }
                if (other.getPlayerDanmakuOpacity() != 0F) {
                    setPlayerDanmakuOpacity(other.getPlayerDanmakuOpacity());
                }
                if (other.getPlayerDanmakuScalingfactor() != 0F) {
                    setPlayerDanmakuScalingfactor(other.getPlayerDanmakuScalingfactor());
                }
                if (other.getPlayerDanmakuDomain() != 0F) {
                    setPlayerDanmakuDomain(other.getPlayerDanmakuDomain());
                }
                if (other.getPlayerDanmakuSpeed() != 0) {
                    setPlayerDanmakuSpeed(other.getPlayerDanmakuSpeed());
                }
                if (other.getPlayerDanmakuEnableblocklist() != false) {
                    setPlayerDanmakuEnableblocklist(other.getPlayerDanmakuEnableblocklist());
                }
                if (other.getInlinePlayerDanmakuSwitch() != false) {
                    setInlinePlayerDanmakuSwitch(other.getInlinePlayerDanmakuSwitch());
                }
                if (other.getInlinePlayerDanmakuConfig() != 0) {
                    setInlinePlayerDanmakuConfig(other.getInlinePlayerDanmakuConfig());
                }
                if (other.getPlayerDanmakuIosSwitchSave() != 0) {
                    setPlayerDanmakuIosSwitchSave(other.getPlayerDanmakuIosSwitchSave());
                }
                if (other.getPlayerDanmakuSeniorModeSwitch() != 0) {
                    setPlayerDanmakuSeniorModeSwitch(other.getPlayerDanmakuSeniorModeSwitch());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean playerDanmakuSwitch_ ;
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool player_danmaku_switch = 1;</code>
             * @return The playerDanmakuSwitch.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuSwitch() {
                return playerDanmakuSwitch_;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool player_danmaku_switch = 1;</code>
             * @param value The playerDanmakuSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuSwitch(boolean value) {

                playerDanmakuSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool player_danmaku_switch = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuSwitch() {

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

            private boolean playerDanmakuSwitchSave_ ;
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>bool player_danmaku_switch_save = 2;</code>
             * @return The playerDanmakuSwitchSave.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuSwitchSave() {
                return playerDanmakuSwitchSave_;
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>bool player_danmaku_switch_save = 2;</code>
             * @param value The playerDanmakuSwitchSave to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuSwitchSave(boolean value) {

                playerDanmakuSwitchSave_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>bool player_danmaku_switch_save = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuSwitchSave() {

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

            private boolean playerDanmakuUseDefaultConfig_ ;
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>bool player_danmaku_use_default_config = 3;</code>
             * @return The playerDanmakuUseDefaultConfig.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuUseDefaultConfig() {
                return playerDanmakuUseDefaultConfig_;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>bool player_danmaku_use_default_config = 3;</code>
             * @param value The playerDanmakuUseDefaultConfig to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuUseDefaultConfig(boolean value) {

                playerDanmakuUseDefaultConfig_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>bool player_danmaku_use_default_config = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuUseDefaultConfig() {

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

            private boolean playerDanmakuAiRecommendedSwitch_ ;
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
             * @return The playerDanmakuAiRecommendedSwitch.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuAiRecommendedSwitch() {
                return playerDanmakuAiRecommendedSwitch_;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
             * @param value The playerDanmakuAiRecommendedSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuAiRecommendedSwitch(boolean value) {

                playerDanmakuAiRecommendedSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool player_danmaku_ai_recommended_switch = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuAiRecommendedSwitch() {

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

            private int playerDanmakuAiRecommendedLevel_ ;
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
             * @return The playerDanmakuAiRecommendedLevel.
             */
            @java.lang.Override
            public int getPlayerDanmakuAiRecommendedLevel() {
                return playerDanmakuAiRecommendedLevel_;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
             * @param value The playerDanmakuAiRecommendedLevel to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuAiRecommendedLevel(int value) {

                playerDanmakuAiRecommendedLevel_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 player_danmaku_ai_recommended_level = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuAiRecommendedLevel() {

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

            private boolean playerDanmakuBlocktop_ ;
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blocktop = 6;</code>
             * @return The playerDanmakuBlocktop.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlocktop() {
                return playerDanmakuBlocktop_;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blocktop = 6;</code>
             * @param value The playerDanmakuBlocktop to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlocktop(boolean value) {

                playerDanmakuBlocktop_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blocktop = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlocktop() {

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

            private boolean playerDanmakuBlockscroll_ ;
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockscroll = 7;</code>
             * @return The playerDanmakuBlockscroll.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockscroll() {
                return playerDanmakuBlockscroll_;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockscroll = 7;</code>
             * @param value The playerDanmakuBlockscroll to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockscroll(boolean value) {

                playerDanmakuBlockscroll_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockscroll = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockscroll() {

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

            private boolean playerDanmakuBlockbottom_ ;
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockbottom = 8;</code>
             * @return The playerDanmakuBlockbottom.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockbottom() {
                return playerDanmakuBlockbottom_;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockbottom = 8;</code>
             * @param value The playerDanmakuBlockbottom to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockbottom(boolean value) {

                playerDanmakuBlockbottom_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockbottom = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockbottom() {

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

            private boolean playerDanmakuBlockcolorful_ ;
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockcolorful = 9;</code>
             * @return The playerDanmakuBlockcolorful.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockcolorful() {
                return playerDanmakuBlockcolorful_;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockcolorful = 9;</code>
             * @param value The playerDanmakuBlockcolorful to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockcolorful(boolean value) {

                playerDanmakuBlockcolorful_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockcolorful = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockcolorful() {

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

            private boolean playerDanmakuBlockrepeat_ ;
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockrepeat = 10;</code>
             * @return The playerDanmakuBlockrepeat.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockrepeat() {
                return playerDanmakuBlockrepeat_;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockrepeat = 10;</code>
             * @param value The playerDanmakuBlockrepeat to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockrepeat(boolean value) {

                playerDanmakuBlockrepeat_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockrepeat = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockrepeat() {

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

            private boolean playerDanmakuBlockspecial_ ;
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockspecial = 11;</code>
             * @return The playerDanmakuBlockspecial.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuBlockspecial() {
                return playerDanmakuBlockspecial_;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockspecial = 11;</code>
             * @param value The playerDanmakuBlockspecial to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuBlockspecial(boolean value) {

                playerDanmakuBlockspecial_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>bool player_danmaku_blockspecial = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuBlockspecial() {

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

            private float playerDanmakuOpacity_ ;
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>float player_danmaku_opacity = 12;</code>
             * @return The playerDanmakuOpacity.
             */
            @java.lang.Override
            public float getPlayerDanmakuOpacity() {
                return playerDanmakuOpacity_;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>float player_danmaku_opacity = 12;</code>
             * @param value The playerDanmakuOpacity to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuOpacity(float value) {

                playerDanmakuOpacity_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>float player_danmaku_opacity = 12;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuOpacity() {

                playerDanmakuOpacity_ = 0F;
                onChanged();
                return this;
            }

            private float playerDanmakuScalingfactor_ ;
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>float player_danmaku_scalingfactor = 13;</code>
             * @return The playerDanmakuScalingfactor.
             */
            @java.lang.Override
            public float getPlayerDanmakuScalingfactor() {
                return playerDanmakuScalingfactor_;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>float player_danmaku_scalingfactor = 13;</code>
             * @param value The playerDanmakuScalingfactor to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuScalingfactor(float value) {

                playerDanmakuScalingfactor_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>float player_danmaku_scalingfactor = 13;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuScalingfactor() {

                playerDanmakuScalingfactor_ = 0F;
                onChanged();
                return this;
            }

            private float playerDanmakuDomain_ ;
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @return The playerDanmakuDomain.
             */
            @java.lang.Override
            public float getPlayerDanmakuDomain() {
                return playerDanmakuDomain_;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @param value The playerDanmakuDomain to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuDomain(float value) {

                playerDanmakuDomain_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuDomain() {

                playerDanmakuDomain_ = 0F;
                onChanged();
                return this;
            }

            private int playerDanmakuSpeed_ ;
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>int32 player_danmaku_speed = 15;</code>
             * @return The playerDanmakuSpeed.
             */
            @java.lang.Override
            public int getPlayerDanmakuSpeed() {
                return playerDanmakuSpeed_;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>int32 player_danmaku_speed = 15;</code>
             * @param value The playerDanmakuSpeed to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuSpeed(int value) {

                playerDanmakuSpeed_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>int32 player_danmaku_speed = 15;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuSpeed() {

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

            private boolean playerDanmakuEnableblocklist_ ;
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>bool player_danmaku_enableblocklist = 16;</code>
             * @return The playerDanmakuEnableblocklist.
             */
            @java.lang.Override
            public boolean getPlayerDanmakuEnableblocklist() {
                return playerDanmakuEnableblocklist_;
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>bool player_danmaku_enableblocklist = 16;</code>
             * @param value The playerDanmakuEnableblocklist to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuEnableblocklist(boolean value) {

                playerDanmakuEnableblocklist_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>bool player_danmaku_enableblocklist = 16;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuEnableblocklist() {

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

            private boolean inlinePlayerDanmakuSwitch_ ;
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool inline_player_danmaku_switch = 17;</code>
             * @return The inlinePlayerDanmakuSwitch.
             */
            @java.lang.Override
            public boolean getInlinePlayerDanmakuSwitch() {
                return inlinePlayerDanmakuSwitch_;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool inline_player_danmaku_switch = 17;</code>
             * @param value The inlinePlayerDanmakuSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setInlinePlayerDanmakuSwitch(boolean value) {

                inlinePlayerDanmakuSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool inline_player_danmaku_switch = 17;</code>
             * @return This builder for chaining.
             */
            public Builder clearInlinePlayerDanmakuSwitch() {

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

            private int inlinePlayerDanmakuConfig_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 inline_player_danmaku_config = 18;</code>
             * @return The inlinePlayerDanmakuConfig.
             */
            @java.lang.Override
            public int getInlinePlayerDanmakuConfig() {
                return inlinePlayerDanmakuConfig_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 inline_player_danmaku_config = 18;</code>
             * @param value The inlinePlayerDanmakuConfig to set.
             * @return This builder for chaining.
             */
            public Builder setInlinePlayerDanmakuConfig(int value) {

                inlinePlayerDanmakuConfig_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 inline_player_danmaku_config = 18;</code>
             * @return This builder for chaining.
             */
            public Builder clearInlinePlayerDanmakuConfig() {

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

            private int playerDanmakuIosSwitchSave_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_ios_switch_save = 19;</code>
             * @return The playerDanmakuIosSwitchSave.
             */
            @java.lang.Override
            public int getPlayerDanmakuIosSwitchSave() {
                return playerDanmakuIosSwitchSave_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_ios_switch_save = 19;</code>
             * @param value The playerDanmakuIosSwitchSave to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuIosSwitchSave(int value) {

                playerDanmakuIosSwitchSave_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_ios_switch_save = 19;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuIosSwitchSave() {

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

            private int playerDanmakuSeniorModeSwitch_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_senior_mode_switch = 20;</code>
             * @return The playerDanmakuSeniorModeSwitch.
             */
            @java.lang.Override
            public int getPlayerDanmakuSeniorModeSwitch() {
                return playerDanmakuSeniorModeSwitch_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_senior_mode_switch = 20;</code>
             * @param value The playerDanmakuSeniorModeSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuSeniorModeSwitch(int value) {

                playerDanmakuSeniorModeSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 player_danmaku_senior_mode_switch = 20;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuSeniorModeSwitch() {

                playerDanmakuSeniorModeSwitch_ = 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:com.yutou.qqbot.bilibili.DanmuPlayerConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmuPlayerConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmuPlayerDynamicConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 时间
         * </pre>
         *
         * <code>int32 progress = 1;</code>
         * @return The progress.
         */
        int getProgress();

        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>float player_danmaku_domain = 14;</code>
         * @return The playerDanmakuDomain.
         */
        float getPlayerDanmakuDomain();
    }
    /**
     * <pre>
     * 弹幕显示区域自动配置
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig}
     */
    public static final class DanmuPlayerDynamicConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig)
            DanmuPlayerDynamicConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmuPlayerDynamicConfig.newBuilder() to construct.
        private DanmuPlayerDynamicConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmuPlayerDynamicConfig() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmuPlayerDynamicConfig(
                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: {

                            progress_ = input.readInt32();
                            break;
                        }
                        case 117: {

                            playerDanmakuDomain_ = input.readFloat();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder.class);
        }

        public static final int PROGRESS_FIELD_NUMBER = 1;
        private int progress_;
        /**
         * <pre>
         * 时间
         * </pre>
         *
         * <code>int32 progress = 1;</code>
         * @return The progress.
         */
        @java.lang.Override
        public int getProgress() {
            return progress_;
        }

        public static final int PLAYER_DANMAKU_DOMAIN_FIELD_NUMBER = 14;
        private float playerDanmakuDomain_;
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>float player_danmaku_domain = 14;</code>
         * @return The playerDanmakuDomain.
         */
        @java.lang.Override
        public float getPlayerDanmakuDomain() {
            return playerDanmakuDomain_;
        }

        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 (progress_ != 0) {
                output.writeInt32(1, progress_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuDomain_) != 0) {
                output.writeFloat(14, playerDanmakuDomain_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (progress_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(1, progress_);
            }
            if (java.lang.Float.floatToRawIntBits(playerDanmakuDomain_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(14, playerDanmakuDomain_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig) obj;

            if (getProgress()
                    != other.getProgress()) return false;
            if (java.lang.Float.floatToIntBits(getPlayerDanmakuDomain())
                    != java.lang.Float.floatToIntBits(
                    other.getPlayerDanmakuDomain())) 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) + PROGRESS_FIELD_NUMBER;
            hash = (53 * hash) + getProgress();
            hash = (37 * hash) + PLAYER_DANMAKU_DOMAIN_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getPlayerDanmakuDomain());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕显示区域自动配置
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.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();
                progress_ = 0;

                playerDanmakuDomain_ = 0F;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig(this);
                result.progress_ = progress_;
                result.playerDanmakuDomain_ = playerDanmakuDomain_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.getDefaultInstance()) return this;
                if (other.getProgress() != 0) {
                    setProgress(other.getProgress());
                }
                if (other.getPlayerDanmakuDomain() != 0F) {
                    setPlayerDanmakuDomain(other.getPlayerDanmakuDomain());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private int progress_ ;
            /**
             * <pre>
             * 时间
             * </pre>
             *
             * <code>int32 progress = 1;</code>
             * @return The progress.
             */
            @java.lang.Override
            public int getProgress() {
                return progress_;
            }
            /**
             * <pre>
             * 时间
             * </pre>
             *
             * <code>int32 progress = 1;</code>
             * @param value The progress to set.
             * @return This builder for chaining.
             */
            public Builder setProgress(int value) {

                progress_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 时间
             * </pre>
             *
             * <code>int32 progress = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearProgress() {

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

            private float playerDanmakuDomain_ ;
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @return The playerDanmakuDomain.
             */
            @java.lang.Override
            public float getPlayerDanmakuDomain() {
                return playerDanmakuDomain_;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @param value The playerDanmakuDomain to set.
             * @return This builder for chaining.
             */
            public Builder setPlayerDanmakuDomain(float value) {

                playerDanmakuDomain_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>float player_danmaku_domain = 14;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlayerDanmakuDomain() {

                playerDanmakuDomain_ = 0F;
                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:com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmuPlayerViewConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmuPlayerViewConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 弹幕默认配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
         * @return Whether the danmukuDefaultPlayerConfig field is set.
         */
        boolean hasDanmukuDefaultPlayerConfig();
        /**
         * <pre>
         * 弹幕默认配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
         * @return The danmukuDefaultPlayerConfig.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig getDanmukuDefaultPlayerConfig();
        /**
         * <pre>
         * 弹幕默认配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfigOrBuilder getDanmukuDefaultPlayerConfigOrBuilder();

        /**
         * <pre>
         * 弹幕用户配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
         * @return Whether the danmukuPlayerConfig field is set.
         */
        boolean hasDanmukuPlayerConfig();
        /**
         * <pre>
         * 弹幕用户配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
         * @return The danmukuPlayerConfig.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig getDanmukuPlayerConfig();
        /**
         * <pre>
         * 弹幕用户配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfigOrBuilder getDanmukuPlayerConfigOrBuilder();

        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig>
        getDanmukuPlayerDynamicConfigList();
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig getDanmukuPlayerDynamicConfig(int index);
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        int getDanmukuPlayerDynamicConfigCount();
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder>
        getDanmukuPlayerDynamicConfigOrBuilderList();
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder getDanmukuPlayerDynamicConfigOrBuilder(
                int index);
    }
    /**
     * <pre>
     * 弹幕配置信息
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuPlayerViewConfig}
     */
    public static final class DanmuPlayerViewConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmuPlayerViewConfig)
            DanmuPlayerViewConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmuPlayerViewConfig.newBuilder() to construct.
        private DanmuPlayerViewConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmuPlayerViewConfig() {
            danmukuPlayerDynamicConfig_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmuPlayerViewConfig(
                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: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder subBuilder = null;
                            if (danmukuDefaultPlayerConfig_ != null) {
                                subBuilder = danmukuDefaultPlayerConfig_.toBuilder();
                            }
                            danmukuDefaultPlayerConfig_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(danmukuDefaultPlayerConfig_);
                                danmukuDefaultPlayerConfig_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 18: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder subBuilder = null;
                            if (danmukuPlayerConfig_ != null) {
                                subBuilder = danmukuPlayerConfig_.toBuilder();
                            }
                            danmukuPlayerConfig_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(danmukuPlayerConfig_);
                                danmukuPlayerConfig_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 26: {
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                danmukuPlayerDynamicConfig_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            danmukuPlayerDynamicConfig_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    danmukuPlayerDynamicConfig_ = java.util.Collections.unmodifiableList(danmukuPlayerDynamicConfig_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder.class);
        }

        public static final int DANMUKU_DEFAULT_PLAYER_CONFIG_FIELD_NUMBER = 1;
        private com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig danmukuDefaultPlayerConfig_;
        /**
         * <pre>
         * 弹幕默认配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
         * @return Whether the danmukuDefaultPlayerConfig field is set.
         */
        @java.lang.Override
        public boolean hasDanmukuDefaultPlayerConfig() {
            return danmukuDefaultPlayerConfig_ != null;
        }
        /**
         * <pre>
         * 弹幕默认配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
         * @return The danmukuDefaultPlayerConfig.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig getDanmukuDefaultPlayerConfig() {
            return danmukuDefaultPlayerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.getDefaultInstance() : danmukuDefaultPlayerConfig_;
        }
        /**
         * <pre>
         * 弹幕默认配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfigOrBuilder getDanmukuDefaultPlayerConfigOrBuilder() {
            return getDanmukuDefaultPlayerConfig();
        }

        public static final int DANMUKU_PLAYER_CONFIG_FIELD_NUMBER = 2;
        private com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig danmukuPlayerConfig_;
        /**
         * <pre>
         * 弹幕用户配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
         * @return Whether the danmukuPlayerConfig field is set.
         */
        @java.lang.Override
        public boolean hasDanmukuPlayerConfig() {
            return danmukuPlayerConfig_ != null;
        }
        /**
         * <pre>
         * 弹幕用户配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
         * @return The danmukuPlayerConfig.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig getDanmukuPlayerConfig() {
            return danmukuPlayerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.getDefaultInstance() : danmukuPlayerConfig_;
        }
        /**
         * <pre>
         * 弹幕用户配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfigOrBuilder getDanmukuPlayerConfigOrBuilder() {
            return getDanmukuPlayerConfig();
        }

        public static final int DANMUKU_PLAYER_DYNAMIC_CONFIG_FIELD_NUMBER = 3;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig> danmukuPlayerDynamicConfig_;
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig> getDanmukuPlayerDynamicConfigList() {
            return danmukuPlayerDynamicConfig_;
        }
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder>
        getDanmukuPlayerDynamicConfigOrBuilderList() {
            return danmukuPlayerDynamicConfig_;
        }
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        @java.lang.Override
        public int getDanmukuPlayerDynamicConfigCount() {
            return danmukuPlayerDynamicConfig_.size();
        }
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig getDanmukuPlayerDynamicConfig(int index) {
            return danmukuPlayerDynamicConfig_.get(index);
        }
        /**
         * <pre>
         * 弹幕显示区域自动配置列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder getDanmukuPlayerDynamicConfigOrBuilder(
                int index) {
            return danmukuPlayerDynamicConfig_.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 {
            if (danmukuDefaultPlayerConfig_ != null) {
                output.writeMessage(1, getDanmukuDefaultPlayerConfig());
            }
            if (danmukuPlayerConfig_ != null) {
                output.writeMessage(2, getDanmukuPlayerConfig());
            }
            for (int i = 0; i < danmukuPlayerDynamicConfig_.size(); i++) {
                output.writeMessage(3, danmukuPlayerDynamicConfig_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (danmukuDefaultPlayerConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(1, getDanmukuDefaultPlayerConfig());
            }
            if (danmukuPlayerConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(2, getDanmukuPlayerConfig());
            }
            for (int i = 0; i < danmukuPlayerDynamicConfig_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(3, danmukuPlayerDynamicConfig_.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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig) obj;

            if (hasDanmukuDefaultPlayerConfig() != other.hasDanmukuDefaultPlayerConfig()) return false;
            if (hasDanmukuDefaultPlayerConfig()) {
                if (!getDanmukuDefaultPlayerConfig()
                        .equals(other.getDanmukuDefaultPlayerConfig())) return false;
            }
            if (hasDanmukuPlayerConfig() != other.hasDanmukuPlayerConfig()) return false;
            if (hasDanmukuPlayerConfig()) {
                if (!getDanmukuPlayerConfig()
                        .equals(other.getDanmukuPlayerConfig())) return false;
            }
            if (!getDanmukuPlayerDynamicConfigList()
                    .equals(other.getDanmukuPlayerDynamicConfigList())) 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 (hasDanmukuDefaultPlayerConfig()) {
                hash = (37 * hash) + DANMUKU_DEFAULT_PLAYER_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getDanmukuDefaultPlayerConfig().hashCode();
            }
            if (hasDanmukuPlayerConfig()) {
                hash = (37 * hash) + DANMUKU_PLAYER_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getDanmukuPlayerConfig().hashCode();
            }
            if (getDanmukuPlayerDynamicConfigCount() > 0) {
                hash = (37 * hash) + DANMUKU_PLAYER_DYNAMIC_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getDanmukuPlayerDynamicConfigList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕配置信息
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuPlayerViewConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmuPlayerViewConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                    com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                        .alwaysUseFieldBuilders) {
                    getDanmukuPlayerDynamicConfigFieldBuilder();
                }
            }
            @java.lang.Override
            public Builder clear() {
                super.clear();
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    danmukuDefaultPlayerConfig_ = null;
                } else {
                    danmukuDefaultPlayerConfig_ = null;
                    danmukuDefaultPlayerConfigBuilder_ = null;
                }
                if (danmukuPlayerConfigBuilder_ == null) {
                    danmukuPlayerConfig_ = null;
                } else {
                    danmukuPlayerConfig_ = null;
                    danmukuPlayerConfigBuilder_ = null;
                }
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    danmukuPlayerDynamicConfig_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                    danmukuPlayerDynamicConfigBuilder_.clear();
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig(this);
                int from_bitField0_ = bitField0_;
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    result.danmukuDefaultPlayerConfig_ = danmukuDefaultPlayerConfig_;
                } else {
                    result.danmukuDefaultPlayerConfig_ = danmukuDefaultPlayerConfigBuilder_.build();
                }
                if (danmukuPlayerConfigBuilder_ == null) {
                    result.danmukuPlayerConfig_ = danmukuPlayerConfig_;
                } else {
                    result.danmukuPlayerConfig_ = danmukuPlayerConfigBuilder_.build();
                }
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        danmukuPlayerDynamicConfig_ = java.util.Collections.unmodifiableList(danmukuPlayerDynamicConfig_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.danmukuPlayerDynamicConfig_ = danmukuPlayerDynamicConfig_;
                } else {
                    result.danmukuPlayerDynamicConfig_ = danmukuPlayerDynamicConfigBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.getDefaultInstance()) return this;
                if (other.hasDanmukuDefaultPlayerConfig()) {
                    mergeDanmukuDefaultPlayerConfig(other.getDanmukuDefaultPlayerConfig());
                }
                if (other.hasDanmukuPlayerConfig()) {
                    mergeDanmukuPlayerConfig(other.getDanmukuPlayerConfig());
                }
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    if (!other.danmukuPlayerDynamicConfig_.isEmpty()) {
                        if (danmukuPlayerDynamicConfig_.isEmpty()) {
                            danmukuPlayerDynamicConfig_ = other.danmukuPlayerDynamicConfig_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureDanmukuPlayerDynamicConfigIsMutable();
                            danmukuPlayerDynamicConfig_.addAll(other.danmukuPlayerDynamicConfig_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.danmukuPlayerDynamicConfig_.isEmpty()) {
                        if (danmukuPlayerDynamicConfigBuilder_.isEmpty()) {
                            danmukuPlayerDynamicConfigBuilder_.dispose();
                            danmukuPlayerDynamicConfigBuilder_ = null;
                            danmukuPlayerDynamicConfig_ = other.danmukuPlayerDynamicConfig_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            danmukuPlayerDynamicConfigBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getDanmukuPlayerDynamicConfigFieldBuilder() : null;
                        } else {
                            danmukuPlayerDynamicConfigBuilder_.addAllMessages(other.danmukuPlayerDynamicConfig_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig danmukuDefaultPlayerConfig_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfigOrBuilder> danmukuDefaultPlayerConfigBuilder_;
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             * @return Whether the danmukuDefaultPlayerConfig field is set.
             */
            public boolean hasDanmukuDefaultPlayerConfig() {
                return danmukuDefaultPlayerConfigBuilder_ != null || danmukuDefaultPlayerConfig_ != null;
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             * @return The danmukuDefaultPlayerConfig.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig getDanmukuDefaultPlayerConfig() {
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    return danmukuDefaultPlayerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.getDefaultInstance() : danmukuDefaultPlayerConfig_;
                } else {
                    return danmukuDefaultPlayerConfigBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             */
            public Builder setDanmukuDefaultPlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig value) {
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    danmukuDefaultPlayerConfig_ = value;
                    onChanged();
                } else {
                    danmukuDefaultPlayerConfigBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             */
            public Builder setDanmukuDefaultPlayerConfig(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder builderForValue) {
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    danmukuDefaultPlayerConfig_ = builderForValue.build();
                    onChanged();
                } else {
                    danmukuDefaultPlayerConfigBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             */
            public Builder mergeDanmukuDefaultPlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig value) {
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    if (danmukuDefaultPlayerConfig_ != null) {
                        danmukuDefaultPlayerConfig_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.newBuilder(danmukuDefaultPlayerConfig_).mergeFrom(value).buildPartial();
                    } else {
                        danmukuDefaultPlayerConfig_ = value;
                    }
                    onChanged();
                } else {
                    danmukuDefaultPlayerConfigBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             */
            public Builder clearDanmukuDefaultPlayerConfig() {
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    danmukuDefaultPlayerConfig_ = null;
                    onChanged();
                } else {
                    danmukuDefaultPlayerConfig_ = null;
                    danmukuDefaultPlayerConfigBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder getDanmukuDefaultPlayerConfigBuilder() {

                onChanged();
                return getDanmukuDefaultPlayerConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfigOrBuilder getDanmukuDefaultPlayerConfigOrBuilder() {
                if (danmukuDefaultPlayerConfigBuilder_ != null) {
                    return danmukuDefaultPlayerConfigBuilder_.getMessageOrBuilder();
                } else {
                    return danmukuDefaultPlayerConfig_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.getDefaultInstance() : danmukuDefaultPlayerConfig_;
                }
            }
            /**
             * <pre>
             * 弹幕默认配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuDefaultPlayerConfig danmuku_default_player_config = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfigOrBuilder>
            getDanmukuDefaultPlayerConfigFieldBuilder() {
                if (danmukuDefaultPlayerConfigBuilder_ == null) {
                    danmukuDefaultPlayerConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuDefaultPlayerConfigOrBuilder>(
                            getDanmukuDefaultPlayerConfig(),
                            getParentForChildren(),
                            isClean());
                    danmukuDefaultPlayerConfig_ = null;
                }
                return danmukuDefaultPlayerConfigBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig danmukuPlayerConfig_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfigOrBuilder> danmukuPlayerConfigBuilder_;
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             * @return Whether the danmukuPlayerConfig field is set.
             */
            public boolean hasDanmukuPlayerConfig() {
                return danmukuPlayerConfigBuilder_ != null || danmukuPlayerConfig_ != null;
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             * @return The danmukuPlayerConfig.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig getDanmukuPlayerConfig() {
                if (danmukuPlayerConfigBuilder_ == null) {
                    return danmukuPlayerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.getDefaultInstance() : danmukuPlayerConfig_;
                } else {
                    return danmukuPlayerConfigBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             */
            public Builder setDanmukuPlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig value) {
                if (danmukuPlayerConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    danmukuPlayerConfig_ = value;
                    onChanged();
                } else {
                    danmukuPlayerConfigBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             */
            public Builder setDanmukuPlayerConfig(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder builderForValue) {
                if (danmukuPlayerConfigBuilder_ == null) {
                    danmukuPlayerConfig_ = builderForValue.build();
                    onChanged();
                } else {
                    danmukuPlayerConfigBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             */
            public Builder mergeDanmukuPlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig value) {
                if (danmukuPlayerConfigBuilder_ == null) {
                    if (danmukuPlayerConfig_ != null) {
                        danmukuPlayerConfig_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.newBuilder(danmukuPlayerConfig_).mergeFrom(value).buildPartial();
                    } else {
                        danmukuPlayerConfig_ = value;
                    }
                    onChanged();
                } else {
                    danmukuPlayerConfigBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             */
            public Builder clearDanmukuPlayerConfig() {
                if (danmukuPlayerConfigBuilder_ == null) {
                    danmukuPlayerConfig_ = null;
                    onChanged();
                } else {
                    danmukuPlayerConfig_ = null;
                    danmukuPlayerConfigBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder getDanmukuPlayerConfigBuilder() {

                onChanged();
                return getDanmukuPlayerConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfigOrBuilder getDanmukuPlayerConfigOrBuilder() {
                if (danmukuPlayerConfigBuilder_ != null) {
                    return danmukuPlayerConfigBuilder_.getMessageOrBuilder();
                } else {
                    return danmukuPlayerConfig_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.getDefaultInstance() : danmukuPlayerConfig_;
                }
            }
            /**
             * <pre>
             * 弹幕用户配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerConfig danmuku_player_config = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfigOrBuilder>
            getDanmukuPlayerConfigFieldBuilder() {
                if (danmukuPlayerConfigBuilder_ == null) {
                    danmukuPlayerConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerConfigOrBuilder>(
                            getDanmukuPlayerConfig(),
                            getParentForChildren(),
                            isClean());
                    danmukuPlayerConfig_ = null;
                }
                return danmukuPlayerConfigBuilder_;
            }

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig> danmukuPlayerDynamicConfig_ =
                    java.util.Collections.emptyList();
            private void ensureDanmukuPlayerDynamicConfigIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    danmukuPlayerDynamicConfig_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig>(danmukuPlayerDynamicConfig_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder> danmukuPlayerDynamicConfigBuilder_;

            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig> getDanmukuPlayerDynamicConfigList() {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(danmukuPlayerDynamicConfig_);
                } else {
                    return danmukuPlayerDynamicConfigBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public int getDanmukuPlayerDynamicConfigCount() {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    return danmukuPlayerDynamicConfig_.size();
                } else {
                    return danmukuPlayerDynamicConfigBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig getDanmukuPlayerDynamicConfig(int index) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    return danmukuPlayerDynamicConfig_.get(index);
                } else {
                    return danmukuPlayerDynamicConfigBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder setDanmukuPlayerDynamicConfig(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig value) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    danmukuPlayerDynamicConfig_.set(index, value);
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder setDanmukuPlayerDynamicConfig(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder builderForValue) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    danmukuPlayerDynamicConfig_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder addDanmukuPlayerDynamicConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig value) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    danmukuPlayerDynamicConfig_.add(value);
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder addDanmukuPlayerDynamicConfig(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig value) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    danmukuPlayerDynamicConfig_.add(index, value);
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder addDanmukuPlayerDynamicConfig(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder builderForValue) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    danmukuPlayerDynamicConfig_.add(builderForValue.build());
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder addDanmukuPlayerDynamicConfig(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder builderForValue) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    danmukuPlayerDynamicConfig_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder addAllDanmukuPlayerDynamicConfig(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig> values) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, danmukuPlayerDynamicConfig_);
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder clearDanmukuPlayerDynamicConfig() {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    danmukuPlayerDynamicConfig_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public Builder removeDanmukuPlayerDynamicConfig(int index) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    ensureDanmukuPlayerDynamicConfigIsMutable();
                    danmukuPlayerDynamicConfig_.remove(index);
                    onChanged();
                } else {
                    danmukuPlayerDynamicConfigBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder getDanmukuPlayerDynamicConfigBuilder(
                    int index) {
                return getDanmukuPlayerDynamicConfigFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder getDanmukuPlayerDynamicConfigOrBuilder(
                    int index) {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    return danmukuPlayerDynamicConfig_.get(index);  } else {
                    return danmukuPlayerDynamicConfigBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder>
            getDanmukuPlayerDynamicConfigOrBuilderList() {
                if (danmukuPlayerDynamicConfigBuilder_ != null) {
                    return danmukuPlayerDynamicConfigBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(danmukuPlayerDynamicConfig_);
                }
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder addDanmukuPlayerDynamicConfigBuilder() {
                return getDanmukuPlayerDynamicConfigFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.getDefaultInstance());
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder addDanmukuPlayerDynamicConfigBuilder(
                    int index) {
                return getDanmukuPlayerDynamicConfigFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.getDefaultInstance());
            }
            /**
             * <pre>
             * 弹幕显示区域自动配置列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.DanmuPlayerDynamicConfig danmuku_player_dynamic_config = 3;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder>
            getDanmukuPlayerDynamicConfigBuilderList() {
                return getDanmukuPlayerDynamicConfigFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder>
            getDanmukuPlayerDynamicConfigFieldBuilder() {
                if (danmukuPlayerDynamicConfigBuilder_ == null) {
                    danmukuPlayerDynamicConfigBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerDynamicConfigOrBuilder>(
                            danmukuPlayerDynamicConfig_,
                            ((bitField0_ & 0x00000001) != 0),
                            getParentForChildren(),
                            isClean());
                    danmukuPlayerDynamicConfig_ = null;
                }
                return danmukuPlayerDynamicConfigBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.DanmuPlayerViewConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmuPlayerViewConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DanmuWebPlayerConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DanmuWebPlayerConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool dm_switch = 1;</code>
         * @return The dmSwitch.
         */
        boolean getDmSwitch();

        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>bool ai_switch = 2;</code>
         * @return The aiSwitch.
         */
        boolean getAiSwitch();

        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>int32 ai_level = 3;</code>
         * @return The aiLevel.
         */
        int getAiLevel();

        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>bool blocktop = 4;</code>
         * @return The blocktop.
         */
        boolean getBlocktop();

        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>bool blockscroll = 5;</code>
         * @return The blockscroll.
         */
        boolean getBlockscroll();

        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>bool blockbottom = 6;</code>
         * @return The blockbottom.
         */
        boolean getBlockbottom();

        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>bool blockcolor = 7;</code>
         * @return The blockcolor.
         */
        boolean getBlockcolor();

        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>bool blockspecial = 8;</code>
         * @return The blockspecial.
         */
        boolean getBlockspecial();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool preventshade = 9;</code>
         * @return The preventshade.
         */
        boolean getPreventshade();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool dmask = 10;</code>
         * @return The dmask.
         */
        boolean getDmask();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>float opacity = 11;</code>
         * @return The opacity.
         */
        float getOpacity();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>int32 dmarea = 12;</code>
         * @return The dmarea.
         */
        int getDmarea();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>float speedplus = 13;</code>
         * @return The speedplus.
         */
        float getSpeedplus();

        /**
         * <pre>
         * 弹幕字号
         * </pre>
         *
         * <code>float fontsize = 14;</code>
         * @return The fontsize.
         */
        float getFontsize();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool screensync = 15;</code>
         * @return The screensync.
         */
        boolean getScreensync();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool speedsync = 16;</code>
         * @return The speedsync.
         */
        boolean getSpeedsync();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>string fontfamily = 17;</code>
         * @return The fontfamily.
         */
        java.lang.String getFontfamily();
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>string fontfamily = 17;</code>
         * @return The bytes for fontfamily.
         */
        com.google.protobuf.ByteString
        getFontfamilyBytes();

        /**
         * <pre>
         * 是否使用加粗
         * </pre>
         *
         * <code>bool bold = 18;</code>
         * @return The bold.
         */
        boolean getBold();

        /**
         * <pre>
         *
         * </pre>
         *
         * <code>int32 fontborder = 19;</code>
         * @return The fontborder.
         */
        int getFontborder();

        /**
         * <pre>
         * 弹幕渲染类型
         * </pre>
         *
         * <code>string draw_type = 20;</code>
         * @return The drawType.
         */
        java.lang.String getDrawType();
        /**
         * <pre>
         * 弹幕渲染类型
         * </pre>
         *
         * <code>string draw_type = 20;</code>
         * @return The bytes for drawType.
         */
        com.google.protobuf.ByteString
        getDrawTypeBytes();

        /**
         * <pre>
         * </pre>
         *
         * <code>int32 senior_mode_switch = 21;</code>
         * @return The seniorModeSwitch.
         */
        int getSeniorModeSwitch();
    }
    /**
     * <pre>
     * web端用户弹幕配置
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuWebPlayerConfig}
     */
    public static final class DanmuWebPlayerConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DanmuWebPlayerConfig)
            DanmuWebPlayerConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DanmuWebPlayerConfig.newBuilder() to construct.
        private DanmuWebPlayerConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DanmuWebPlayerConfig() {
            fontfamily_ = "";
            drawType_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DanmuWebPlayerConfig(
                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: {

                            dmSwitch_ = input.readBool();
                            break;
                        }
                        case 16: {

                            aiSwitch_ = input.readBool();
                            break;
                        }
                        case 24: {

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

                            blocktop_ = input.readBool();
                            break;
                        }
                        case 40: {

                            blockscroll_ = input.readBool();
                            break;
                        }
                        case 48: {

                            blockbottom_ = input.readBool();
                            break;
                        }
                        case 56: {

                            blockcolor_ = input.readBool();
                            break;
                        }
                        case 64: {

                            blockspecial_ = input.readBool();
                            break;
                        }
                        case 72: {

                            preventshade_ = input.readBool();
                            break;
                        }
                        case 80: {

                            dmask_ = input.readBool();
                            break;
                        }
                        case 93: {

                            opacity_ = input.readFloat();
                            break;
                        }
                        case 96: {

                            dmarea_ = input.readInt32();
                            break;
                        }
                        case 109: {

                            speedplus_ = input.readFloat();
                            break;
                        }
                        case 117: {

                            fontsize_ = input.readFloat();
                            break;
                        }
                        case 120: {

                            screensync_ = input.readBool();
                            break;
                        }
                        case 128: {

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

                            fontfamily_ = s;
                            break;
                        }
                        case 144: {

                            bold_ = input.readBool();
                            break;
                        }
                        case 152: {

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

                            drawType_ = s;
                            break;
                        }
                        case 168: {

                            seniorModeSwitch_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder.class);
        }

        public static final int DM_SWITCH_FIELD_NUMBER = 1;
        private boolean dmSwitch_;
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>bool dm_switch = 1;</code>
         * @return The dmSwitch.
         */
        @java.lang.Override
        public boolean getDmSwitch() {
            return dmSwitch_;
        }

        public static final int AI_SWITCH_FIELD_NUMBER = 2;
        private boolean aiSwitch_;
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>bool ai_switch = 2;</code>
         * @return The aiSwitch.
         */
        @java.lang.Override
        public boolean getAiSwitch() {
            return aiSwitch_;
        }

        public static final int AI_LEVEL_FIELD_NUMBER = 3;
        private int aiLevel_;
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>int32 ai_level = 3;</code>
         * @return The aiLevel.
         */
        @java.lang.Override
        public int getAiLevel() {
            return aiLevel_;
        }

        public static final int BLOCKTOP_FIELD_NUMBER = 4;
        private boolean blocktop_;
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>bool blocktop = 4;</code>
         * @return The blocktop.
         */
        @java.lang.Override
        public boolean getBlocktop() {
            return blocktop_;
        }

        public static final int BLOCKSCROLL_FIELD_NUMBER = 5;
        private boolean blockscroll_;
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>bool blockscroll = 5;</code>
         * @return The blockscroll.
         */
        @java.lang.Override
        public boolean getBlockscroll() {
            return blockscroll_;
        }

        public static final int BLOCKBOTTOM_FIELD_NUMBER = 6;
        private boolean blockbottom_;
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>bool blockbottom = 6;</code>
         * @return The blockbottom.
         */
        @java.lang.Override
        public boolean getBlockbottom() {
            return blockbottom_;
        }

        public static final int BLOCKCOLOR_FIELD_NUMBER = 7;
        private boolean blockcolor_;
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>bool blockcolor = 7;</code>
         * @return The blockcolor.
         */
        @java.lang.Override
        public boolean getBlockcolor() {
            return blockcolor_;
        }

        public static final int BLOCKSPECIAL_FIELD_NUMBER = 8;
        private boolean blockspecial_;
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>bool blockspecial = 8;</code>
         * @return The blockspecial.
         */
        @java.lang.Override
        public boolean getBlockspecial() {
            return blockspecial_;
        }

        public static final int PREVENTSHADE_FIELD_NUMBER = 9;
        private boolean preventshade_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool preventshade = 9;</code>
         * @return The preventshade.
         */
        @java.lang.Override
        public boolean getPreventshade() {
            return preventshade_;
        }

        public static final int DMASK_FIELD_NUMBER = 10;
        private boolean dmask_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool dmask = 10;</code>
         * @return The dmask.
         */
        @java.lang.Override
        public boolean getDmask() {
            return dmask_;
        }

        public static final int OPACITY_FIELD_NUMBER = 11;
        private float opacity_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>float opacity = 11;</code>
         * @return The opacity.
         */
        @java.lang.Override
        public float getOpacity() {
            return opacity_;
        }

        public static final int DMAREA_FIELD_NUMBER = 12;
        private int dmarea_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>int32 dmarea = 12;</code>
         * @return The dmarea.
         */
        @java.lang.Override
        public int getDmarea() {
            return dmarea_;
        }

        public static final int SPEEDPLUS_FIELD_NUMBER = 13;
        private float speedplus_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>float speedplus = 13;</code>
         * @return The speedplus.
         */
        @java.lang.Override
        public float getSpeedplus() {
            return speedplus_;
        }

        public static final int FONTSIZE_FIELD_NUMBER = 14;
        private float fontsize_;
        /**
         * <pre>
         * 弹幕字号
         * </pre>
         *
         * <code>float fontsize = 14;</code>
         * @return The fontsize.
         */
        @java.lang.Override
        public float getFontsize() {
            return fontsize_;
        }

        public static final int SCREENSYNC_FIELD_NUMBER = 15;
        private boolean screensync_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool screensync = 15;</code>
         * @return The screensync.
         */
        @java.lang.Override
        public boolean getScreensync() {
            return screensync_;
        }

        public static final int SPEEDSYNC_FIELD_NUMBER = 16;
        private boolean speedsync_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>bool speedsync = 16;</code>
         * @return The speedsync.
         */
        @java.lang.Override
        public boolean getSpeedsync() {
            return speedsync_;
        }

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

        public static final int BOLD_FIELD_NUMBER = 18;
        private boolean bold_;
        /**
         * <pre>
         * 是否使用加粗
         * </pre>
         *
         * <code>bool bold = 18;</code>
         * @return The bold.
         */
        @java.lang.Override
        public boolean getBold() {
            return bold_;
        }

        public static final int FONTBORDER_FIELD_NUMBER = 19;
        private int fontborder_;
        /**
         * <pre>
         *
         * </pre>
         *
         * <code>int32 fontborder = 19;</code>
         * @return The fontborder.
         */
        @java.lang.Override
        public int getFontborder() {
            return fontborder_;
        }

        public static final int DRAW_TYPE_FIELD_NUMBER = 20;
        private volatile java.lang.Object drawType_;
        /**
         * <pre>
         * 弹幕渲染类型
         * </pre>
         *
         * <code>string draw_type = 20;</code>
         * @return The drawType.
         */
        @java.lang.Override
        public java.lang.String getDrawType() {
            java.lang.Object ref = drawType_;
            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();
                drawType_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 弹幕渲染类型
         * </pre>
         *
         * <code>string draw_type = 20;</code>
         * @return The bytes for drawType.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getDrawTypeBytes() {
            java.lang.Object ref = drawType_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                drawType_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SENIOR_MODE_SWITCH_FIELD_NUMBER = 21;
        private int seniorModeSwitch_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 senior_mode_switch = 21;</code>
         * @return The seniorModeSwitch.
         */
        @java.lang.Override
        public int getSeniorModeSwitch() {
            return seniorModeSwitch_;
        }

        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 (dmSwitch_ != false) {
                output.writeBool(1, dmSwitch_);
            }
            if (aiSwitch_ != false) {
                output.writeBool(2, aiSwitch_);
            }
            if (aiLevel_ != 0) {
                output.writeInt32(3, aiLevel_);
            }
            if (blocktop_ != false) {
                output.writeBool(4, blocktop_);
            }
            if (blockscroll_ != false) {
                output.writeBool(5, blockscroll_);
            }
            if (blockbottom_ != false) {
                output.writeBool(6, blockbottom_);
            }
            if (blockcolor_ != false) {
                output.writeBool(7, blockcolor_);
            }
            if (blockspecial_ != false) {
                output.writeBool(8, blockspecial_);
            }
            if (preventshade_ != false) {
                output.writeBool(9, preventshade_);
            }
            if (dmask_ != false) {
                output.writeBool(10, dmask_);
            }
            if (java.lang.Float.floatToRawIntBits(opacity_) != 0) {
                output.writeFloat(11, opacity_);
            }
            if (dmarea_ != 0) {
                output.writeInt32(12, dmarea_);
            }
            if (java.lang.Float.floatToRawIntBits(speedplus_) != 0) {
                output.writeFloat(13, speedplus_);
            }
            if (java.lang.Float.floatToRawIntBits(fontsize_) != 0) {
                output.writeFloat(14, fontsize_);
            }
            if (screensync_ != false) {
                output.writeBool(15, screensync_);
            }
            if (speedsync_ != false) {
                output.writeBool(16, speedsync_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fontfamily_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 17, fontfamily_);
            }
            if (bold_ != false) {
                output.writeBool(18, bold_);
            }
            if (fontborder_ != 0) {
                output.writeInt32(19, fontborder_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(drawType_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 20, drawType_);
            }
            if (seniorModeSwitch_ != 0) {
                output.writeInt32(21, seniorModeSwitch_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (dmSwitch_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, dmSwitch_);
            }
            if (aiSwitch_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(2, aiSwitch_);
            }
            if (aiLevel_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, aiLevel_);
            }
            if (blocktop_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(4, blocktop_);
            }
            if (blockscroll_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(5, blockscroll_);
            }
            if (blockbottom_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(6, blockbottom_);
            }
            if (blockcolor_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(7, blockcolor_);
            }
            if (blockspecial_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(8, blockspecial_);
            }
            if (preventshade_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(9, preventshade_);
            }
            if (dmask_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(10, dmask_);
            }
            if (java.lang.Float.floatToRawIntBits(opacity_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(11, opacity_);
            }
            if (dmarea_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(12, dmarea_);
            }
            if (java.lang.Float.floatToRawIntBits(speedplus_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(13, speedplus_);
            }
            if (java.lang.Float.floatToRawIntBits(fontsize_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(14, fontsize_);
            }
            if (screensync_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(15, screensync_);
            }
            if (speedsync_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(16, speedsync_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fontfamily_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, fontfamily_);
            }
            if (bold_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(18, bold_);
            }
            if (fontborder_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(19, fontborder_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(drawType_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(20, drawType_);
            }
            if (seniorModeSwitch_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(21, seniorModeSwitch_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig) obj;

            if (getDmSwitch()
                    != other.getDmSwitch()) return false;
            if (getAiSwitch()
                    != other.getAiSwitch()) return false;
            if (getAiLevel()
                    != other.getAiLevel()) return false;
            if (getBlocktop()
                    != other.getBlocktop()) return false;
            if (getBlockscroll()
                    != other.getBlockscroll()) return false;
            if (getBlockbottom()
                    != other.getBlockbottom()) return false;
            if (getBlockcolor()
                    != other.getBlockcolor()) return false;
            if (getBlockspecial()
                    != other.getBlockspecial()) return false;
            if (getPreventshade()
                    != other.getPreventshade()) return false;
            if (getDmask()
                    != other.getDmask()) return false;
            if (java.lang.Float.floatToIntBits(getOpacity())
                    != java.lang.Float.floatToIntBits(
                    other.getOpacity())) return false;
            if (getDmarea()
                    != other.getDmarea()) return false;
            if (java.lang.Float.floatToIntBits(getSpeedplus())
                    != java.lang.Float.floatToIntBits(
                    other.getSpeedplus())) return false;
            if (java.lang.Float.floatToIntBits(getFontsize())
                    != java.lang.Float.floatToIntBits(
                    other.getFontsize())) return false;
            if (getScreensync()
                    != other.getScreensync()) return false;
            if (getSpeedsync()
                    != other.getSpeedsync()) return false;
            if (!getFontfamily()
                    .equals(other.getFontfamily())) return false;
            if (getBold()
                    != other.getBold()) return false;
            if (getFontborder()
                    != other.getFontborder()) return false;
            if (!getDrawType()
                    .equals(other.getDrawType())) return false;
            if (getSeniorModeSwitch()
                    != other.getSeniorModeSwitch()) 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) + DM_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getDmSwitch());
            hash = (37 * hash) + AI_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getAiSwitch());
            hash = (37 * hash) + AI_LEVEL_FIELD_NUMBER;
            hash = (53 * hash) + getAiLevel();
            hash = (37 * hash) + BLOCKTOP_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getBlocktop());
            hash = (37 * hash) + BLOCKSCROLL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getBlockscroll());
            hash = (37 * hash) + BLOCKBOTTOM_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getBlockbottom());
            hash = (37 * hash) + BLOCKCOLOR_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getBlockcolor());
            hash = (37 * hash) + BLOCKSPECIAL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getBlockspecial());
            hash = (37 * hash) + PREVENTSHADE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getPreventshade());
            hash = (37 * hash) + DMASK_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getDmask());
            hash = (37 * hash) + OPACITY_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getOpacity());
            hash = (37 * hash) + DMAREA_FIELD_NUMBER;
            hash = (53 * hash) + getDmarea();
            hash = (37 * hash) + SPEEDPLUS_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getSpeedplus());
            hash = (37 * hash) + FONTSIZE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getFontsize());
            hash = (37 * hash) + SCREENSYNC_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getScreensync());
            hash = (37 * hash) + SPEEDSYNC_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getSpeedsync());
            hash = (37 * hash) + FONTFAMILY_FIELD_NUMBER;
            hash = (53 * hash) + getFontfamily().hashCode();
            hash = (37 * hash) + BOLD_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getBold());
            hash = (37 * hash) + FONTBORDER_FIELD_NUMBER;
            hash = (53 * hash) + getFontborder();
            hash = (37 * hash) + DRAW_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getDrawType().hashCode();
            hash = (37 * hash) + SENIOR_MODE_SWITCH_FIELD_NUMBER;
            hash = (53 * hash) + getSeniorModeSwitch();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * web端用户弹幕配置
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DanmuWebPlayerConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DanmuWebPlayerConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.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();
                dmSwitch_ = false;

                aiSwitch_ = false;

                aiLevel_ = 0;

                blocktop_ = false;

                blockscroll_ = false;

                blockbottom_ = false;

                blockcolor_ = false;

                blockspecial_ = false;

                preventshade_ = false;

                dmask_ = false;

                opacity_ = 0F;

                dmarea_ = 0;

                speedplus_ = 0F;

                fontsize_ = 0F;

                screensync_ = false;

                speedsync_ = false;

                fontfamily_ = "";

                bold_ = false;

                fontborder_ = 0;

                drawType_ = "";

                seniorModeSwitch_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig(this);
                result.dmSwitch_ = dmSwitch_;
                result.aiSwitch_ = aiSwitch_;
                result.aiLevel_ = aiLevel_;
                result.blocktop_ = blocktop_;
                result.blockscroll_ = blockscroll_;
                result.blockbottom_ = blockbottom_;
                result.blockcolor_ = blockcolor_;
                result.blockspecial_ = blockspecial_;
                result.preventshade_ = preventshade_;
                result.dmask_ = dmask_;
                result.opacity_ = opacity_;
                result.dmarea_ = dmarea_;
                result.speedplus_ = speedplus_;
                result.fontsize_ = fontsize_;
                result.screensync_ = screensync_;
                result.speedsync_ = speedsync_;
                result.fontfamily_ = fontfamily_;
                result.bold_ = bold_;
                result.fontborder_ = fontborder_;
                result.drawType_ = drawType_;
                result.seniorModeSwitch_ = seniorModeSwitch_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.getDefaultInstance()) return this;
                if (other.getDmSwitch() != false) {
                    setDmSwitch(other.getDmSwitch());
                }
                if (other.getAiSwitch() != false) {
                    setAiSwitch(other.getAiSwitch());
                }
                if (other.getAiLevel() != 0) {
                    setAiLevel(other.getAiLevel());
                }
                if (other.getBlocktop() != false) {
                    setBlocktop(other.getBlocktop());
                }
                if (other.getBlockscroll() != false) {
                    setBlockscroll(other.getBlockscroll());
                }
                if (other.getBlockbottom() != false) {
                    setBlockbottom(other.getBlockbottom());
                }
                if (other.getBlockcolor() != false) {
                    setBlockcolor(other.getBlockcolor());
                }
                if (other.getBlockspecial() != false) {
                    setBlockspecial(other.getBlockspecial());
                }
                if (other.getPreventshade() != false) {
                    setPreventshade(other.getPreventshade());
                }
                if (other.getDmask() != false) {
                    setDmask(other.getDmask());
                }
                if (other.getOpacity() != 0F) {
                    setOpacity(other.getOpacity());
                }
                if (other.getDmarea() != 0) {
                    setDmarea(other.getDmarea());
                }
                if (other.getSpeedplus() != 0F) {
                    setSpeedplus(other.getSpeedplus());
                }
                if (other.getFontsize() != 0F) {
                    setFontsize(other.getFontsize());
                }
                if (other.getScreensync() != false) {
                    setScreensync(other.getScreensync());
                }
                if (other.getSpeedsync() != false) {
                    setSpeedsync(other.getSpeedsync());
                }
                if (!other.getFontfamily().isEmpty()) {
                    fontfamily_ = other.fontfamily_;
                    onChanged();
                }
                if (other.getBold() != false) {
                    setBold(other.getBold());
                }
                if (other.getFontborder() != 0) {
                    setFontborder(other.getFontborder());
                }
                if (!other.getDrawType().isEmpty()) {
                    drawType_ = other.drawType_;
                    onChanged();
                }
                if (other.getSeniorModeSwitch() != 0) {
                    setSeniorModeSwitch(other.getSeniorModeSwitch());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean dmSwitch_ ;
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool dm_switch = 1;</code>
             * @return The dmSwitch.
             */
            @java.lang.Override
            public boolean getDmSwitch() {
                return dmSwitch_;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool dm_switch = 1;</code>
             * @param value The dmSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setDmSwitch(boolean value) {

                dmSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>bool dm_switch = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearDmSwitch() {

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

            private boolean aiSwitch_ ;
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool ai_switch = 2;</code>
             * @return The aiSwitch.
             */
            @java.lang.Override
            public boolean getAiSwitch() {
                return aiSwitch_;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool ai_switch = 2;</code>
             * @param value The aiSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setAiSwitch(boolean value) {

                aiSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>bool ai_switch = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearAiSwitch() {

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

            private int aiLevel_ ;
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 ai_level = 3;</code>
             * @return The aiLevel.
             */
            @java.lang.Override
            public int getAiLevel() {
                return aiLevel_;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 ai_level = 3;</code>
             * @param value The aiLevel to set.
             * @return This builder for chaining.
             */
            public Builder setAiLevel(int value) {

                aiLevel_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>int32 ai_level = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearAiLevel() {

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

            private boolean blocktop_ ;
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool blocktop = 4;</code>
             * @return The blocktop.
             */
            @java.lang.Override
            public boolean getBlocktop() {
                return blocktop_;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool blocktop = 4;</code>
             * @param value The blocktop to set.
             * @return This builder for chaining.
             */
            public Builder setBlocktop(boolean value) {

                blocktop_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>bool blocktop = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearBlocktop() {

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

            private boolean blockscroll_ ;
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool blockscroll = 5;</code>
             * @return The blockscroll.
             */
            @java.lang.Override
            public boolean getBlockscroll() {
                return blockscroll_;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool blockscroll = 5;</code>
             * @param value The blockscroll to set.
             * @return This builder for chaining.
             */
            public Builder setBlockscroll(boolean value) {

                blockscroll_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>bool blockscroll = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearBlockscroll() {

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

            private boolean blockbottom_ ;
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool blockbottom = 6;</code>
             * @return The blockbottom.
             */
            @java.lang.Override
            public boolean getBlockbottom() {
                return blockbottom_;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool blockbottom = 6;</code>
             * @param value The blockbottom to set.
             * @return This builder for chaining.
             */
            public Builder setBlockbottom(boolean value) {

                blockbottom_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>bool blockbottom = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearBlockbottom() {

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

            private boolean blockcolor_ ;
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool blockcolor = 7;</code>
             * @return The blockcolor.
             */
            @java.lang.Override
            public boolean getBlockcolor() {
                return blockcolor_;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool blockcolor = 7;</code>
             * @param value The blockcolor to set.
             * @return This builder for chaining.
             */
            public Builder setBlockcolor(boolean value) {

                blockcolor_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>bool blockcolor = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearBlockcolor() {

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

            private boolean blockspecial_ ;
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool blockspecial = 8;</code>
             * @return The blockspecial.
             */
            @java.lang.Override
            public boolean getBlockspecial() {
                return blockspecial_;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool blockspecial = 8;</code>
             * @param value The blockspecial to set.
             * @return This builder for chaining.
             */
            public Builder setBlockspecial(boolean value) {

                blockspecial_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>bool blockspecial = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearBlockspecial() {

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

            private boolean preventshade_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool preventshade = 9;</code>
             * @return The preventshade.
             */
            @java.lang.Override
            public boolean getPreventshade() {
                return preventshade_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool preventshade = 9;</code>
             * @param value The preventshade to set.
             * @return This builder for chaining.
             */
            public Builder setPreventshade(boolean value) {

                preventshade_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool preventshade = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearPreventshade() {

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

            private boolean dmask_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool dmask = 10;</code>
             * @return The dmask.
             */
            @java.lang.Override
            public boolean getDmask() {
                return dmask_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool dmask = 10;</code>
             * @param value The dmask to set.
             * @return This builder for chaining.
             */
            public Builder setDmask(boolean value) {

                dmask_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool dmask = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearDmask() {

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

            private float opacity_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>float opacity = 11;</code>
             * @return The opacity.
             */
            @java.lang.Override
            public float getOpacity() {
                return opacity_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>float opacity = 11;</code>
             * @param value The opacity to set.
             * @return This builder for chaining.
             */
            public Builder setOpacity(float value) {

                opacity_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>float opacity = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearOpacity() {

                opacity_ = 0F;
                onChanged();
                return this;
            }

            private int dmarea_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>int32 dmarea = 12;</code>
             * @return The dmarea.
             */
            @java.lang.Override
            public int getDmarea() {
                return dmarea_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>int32 dmarea = 12;</code>
             * @param value The dmarea to set.
             * @return This builder for chaining.
             */
            public Builder setDmarea(int value) {

                dmarea_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>int32 dmarea = 12;</code>
             * @return This builder for chaining.
             */
            public Builder clearDmarea() {

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

            private float speedplus_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>float speedplus = 13;</code>
             * @return The speedplus.
             */
            @java.lang.Override
            public float getSpeedplus() {
                return speedplus_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>float speedplus = 13;</code>
             * @param value The speedplus to set.
             * @return This builder for chaining.
             */
            public Builder setSpeedplus(float value) {

                speedplus_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>float speedplus = 13;</code>
             * @return This builder for chaining.
             */
            public Builder clearSpeedplus() {

                speedplus_ = 0F;
                onChanged();
                return this;
            }

            private float fontsize_ ;
            /**
             * <pre>
             * 弹幕字号
             * </pre>
             *
             * <code>float fontsize = 14;</code>
             * @return The fontsize.
             */
            @java.lang.Override
            public float getFontsize() {
                return fontsize_;
            }
            /**
             * <pre>
             * 弹幕字号
             * </pre>
             *
             * <code>float fontsize = 14;</code>
             * @param value The fontsize to set.
             * @return This builder for chaining.
             */
            public Builder setFontsize(float value) {

                fontsize_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕字号
             * </pre>
             *
             * <code>float fontsize = 14;</code>
             * @return This builder for chaining.
             */
            public Builder clearFontsize() {

                fontsize_ = 0F;
                onChanged();
                return this;
            }

            private boolean screensync_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool screensync = 15;</code>
             * @return The screensync.
             */
            @java.lang.Override
            public boolean getScreensync() {
                return screensync_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool screensync = 15;</code>
             * @param value The screensync to set.
             * @return This builder for chaining.
             */
            public Builder setScreensync(boolean value) {

                screensync_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool screensync = 15;</code>
             * @return This builder for chaining.
             */
            public Builder clearScreensync() {

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

            private boolean speedsync_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool speedsync = 16;</code>
             * @return The speedsync.
             */
            @java.lang.Override
            public boolean getSpeedsync() {
                return speedsync_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool speedsync = 16;</code>
             * @param value The speedsync to set.
             * @return This builder for chaining.
             */
            public Builder setSpeedsync(boolean value) {

                speedsync_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>bool speedsync = 16;</code>
             * @return This builder for chaining.
             */
            public Builder clearSpeedsync() {

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

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

                fontfamily_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>string fontfamily = 17;</code>
             * @return This builder for chaining.
             */
            public Builder clearFontfamily() {

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

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

            private boolean bold_ ;
            /**
             * <pre>
             * 是否使用加粗
             * </pre>
             *
             * <code>bool bold = 18;</code>
             * @return The bold.
             */
            @java.lang.Override
            public boolean getBold() {
                return bold_;
            }
            /**
             * <pre>
             * 是否使用加粗
             * </pre>
             *
             * <code>bool bold = 18;</code>
             * @param value The bold to set.
             * @return This builder for chaining.
             */
            public Builder setBold(boolean value) {

                bold_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否使用加粗
             * </pre>
             *
             * <code>bool bold = 18;</code>
             * @return This builder for chaining.
             */
            public Builder clearBold() {

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

            private int fontborder_ ;
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>int32 fontborder = 19;</code>
             * @return The fontborder.
             */
            @java.lang.Override
            public int getFontborder() {
                return fontborder_;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>int32 fontborder = 19;</code>
             * @param value The fontborder to set.
             * @return This builder for chaining.
             */
            public Builder setFontborder(int value) {

                fontborder_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             *
             * </pre>
             *
             * <code>int32 fontborder = 19;</code>
             * @return This builder for chaining.
             */
            public Builder clearFontborder() {

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

            private java.lang.Object drawType_ = "";
            /**
             * <pre>
             * 弹幕渲染类型
             * </pre>
             *
             * <code>string draw_type = 20;</code>
             * @return The drawType.
             */
            public java.lang.String getDrawType() {
                java.lang.Object ref = drawType_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    drawType_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 弹幕渲染类型
             * </pre>
             *
             * <code>string draw_type = 20;</code>
             * @return The bytes for drawType.
             */
            public com.google.protobuf.ByteString
            getDrawTypeBytes() {
                java.lang.Object ref = drawType_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    drawType_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 弹幕渲染类型
             * </pre>
             *
             * <code>string draw_type = 20;</code>
             * @param value The drawType to set.
             * @return This builder for chaining.
             */
            public Builder setDrawType(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                drawType_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕渲染类型
             * </pre>
             *
             * <code>string draw_type = 20;</code>
             * @return This builder for chaining.
             */
            public Builder clearDrawType() {

                drawType_ = getDefaultInstance().getDrawType();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕渲染类型
             * </pre>
             *
             * <code>string draw_type = 20;</code>
             * @param value The bytes for drawType to set.
             * @return This builder for chaining.
             */
            public Builder setDrawTypeBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int seniorModeSwitch_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 senior_mode_switch = 21;</code>
             * @return The seniorModeSwitch.
             */
            @java.lang.Override
            public int getSeniorModeSwitch() {
                return seniorModeSwitch_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 senior_mode_switch = 21;</code>
             * @param value The seniorModeSwitch to set.
             * @return This builder for chaining.
             */
            public Builder setSeniorModeSwitch(int value) {

                seniorModeSwitch_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 senior_mode_switch = 21;</code>
             * @return This builder for chaining.
             */
            public Builder clearSeniorModeSwitch() {

                seniorModeSwitch_ = 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:com.yutou.qqbot.bilibili.DanmuWebPlayerConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DanmuWebPlayerConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmExpoReportReqOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmExpoReportReq)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>string session_id = 1;</code>
         * @return The sessionId.
         */
        java.lang.String getSessionId();
        /**
         * <pre>
         * </pre>
         *
         * <code>string session_id = 1;</code>
         * @return The bytes for sessionId.
         */
        com.google.protobuf.ByteString
        getSessionIdBytes();

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        long getOid();

        /**
         * <pre>
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The spmid.
         */
        java.lang.String getSpmid();
        /**
         * <pre>
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The bytes for spmid.
         */
        com.google.protobuf.ByteString
        getSpmidBytes();
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmExpoReportReq}
     */
    public static final class DmExpoReportReq extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmExpoReportReq)
            DmExpoReportReqOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmExpoReportReq.newBuilder() to construct.
        private DmExpoReportReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmExpoReportReq() {
            sessionId_ = "";
            spmid_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmExpoReportReq(
                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();

                            sessionId_ = s;
                            break;
                        }
                        case 16: {

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

                            spmid_ = s;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq.Builder.class);
        }

        public static final int SESSION_ID_FIELD_NUMBER = 1;
        private volatile java.lang.Object sessionId_;
        /**
         * <pre>
         * </pre>
         *
         * <code>string session_id = 1;</code>
         * @return The sessionId.
         */
        @java.lang.Override
        public java.lang.String getSessionId() {
            java.lang.Object ref = sessionId_;
            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();
                sessionId_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>string session_id = 1;</code>
         * @return The bytes for sessionId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getSessionIdBytes() {
            java.lang.Object ref = sessionId_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                sessionId_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int OID_FIELD_NUMBER = 2;
        private long oid_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        @java.lang.Override
        public long getOid() {
            return oid_;
        }

        public static final int SPMID_FIELD_NUMBER = 4;
        private volatile java.lang.Object spmid_;
        /**
         * <pre>
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The spmid.
         */
        @java.lang.Override
        public java.lang.String getSpmid() {
            java.lang.Object ref = spmid_;
            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();
                spmid_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The bytes for spmid.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getSpmidBytes() {
            java.lang.Object ref = spmid_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                spmid_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

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

            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sessionId_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sessionId_);
            }
            if (oid_ != 0L) {
                output.writeInt64(2, oid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(spmid_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, spmid_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sessionId_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sessionId_);
            }
            if (oid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, oid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(spmid_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, spmid_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq other = (com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq) obj;

            if (!getSessionId()
                    .equals(other.getSessionId())) return false;
            if (getOid()
                    != other.getOid()) return false;
            if (!getSpmid()
                    .equals(other.getSpmid())) 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) + SESSION_ID_FIELD_NUMBER;
            hash = (53 * hash) + getSessionId().hashCode();
            hash = (37 * hash) + OID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getOid());
            hash = (37 * hash) + SPMID_FIELD_NUMBER;
            hash = (53 * hash) + getSpmid().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmExpoReportReq}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmExpoReportReq)
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReqOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq.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();
                sessionId_ = "";

                oid_ = 0L;

                spmid_ = "";

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq result = new com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq(this);
                result.sessionId_ = sessionId_;
                result.oid_ = oid_;
                result.spmid_ = spmid_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq.getDefaultInstance()) return this;
                if (!other.getSessionId().isEmpty()) {
                    sessionId_ = other.sessionId_;
                    onChanged();
                }
                if (other.getOid() != 0L) {
                    setOid(other.getOid());
                }
                if (!other.getSpmid().isEmpty()) {
                    spmid_ = other.spmid_;
                    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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

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

                sessionId_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string session_id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearSessionId() {

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

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

            private long oid_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return The oid.
             */
            @java.lang.Override
            public long getOid() {
                return oid_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @param value The oid to set.
             * @return This builder for chaining.
             */
            public Builder setOid(long value) {

                oid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOid() {

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

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

                spmid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string spmid = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearSpmid() {

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

                spmid_ = 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:com.yutou.qqbot.bilibili.DmExpoReportReq)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmExpoReportReq)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportReq getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

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

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmExpoReportRes(
                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 (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes.class, com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes.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 com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes other = (com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes) 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 com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmExpoReportRes}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmExpoReportRes)
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportResOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes.class, com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes.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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes result = new com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes(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 com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes.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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes) 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:com.yutou.qqbot.bilibili.DmExpoReportRes)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmExpoReportRes)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmExpoReportRes getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmPlayerConfigReqOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmPlayerConfigReq)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 ts = 1;</code>
         * @return The ts.
         */
        long getTs();

        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
         * @return Whether the switch field is set.
         */
        boolean hasSwitch();
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
         * @return The switch.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch getSwitch();
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchOrBuilder getSwitchOrBuilder();

        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
         * @return Whether the switchSave field is set.
         */
        boolean hasSwitchSave();
        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
         * @return The switchSave.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave getSwitchSave();
        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSaveOrBuilder getSwitchSaveOrBuilder();

        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
         * @return Whether the useDefaultConfig field is set.
         */
        boolean hasUseDefaultConfig();
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
         * @return The useDefaultConfig.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig getUseDefaultConfig();
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfigOrBuilder getUseDefaultConfigOrBuilder();

        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
         * @return Whether the aiRecommendedSwitch field is set.
         */
        boolean hasAiRecommendedSwitch();
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
         * @return The aiRecommendedSwitch.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch getAiRecommendedSwitch();
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitchOrBuilder getAiRecommendedSwitchOrBuilder();

        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
         * @return Whether the aiRecommendedLevel field is set.
         */
        boolean hasAiRecommendedLevel();
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
         * @return The aiRecommendedLevel.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel getAiRecommendedLevel();
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevelOrBuilder getAiRecommendedLevelOrBuilder();

        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
         * @return Whether the blocktop field is set.
         */
        boolean hasBlocktop();
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
         * @return The blocktop.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop getBlocktop();
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktopOrBuilder getBlocktopOrBuilder();

        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
         * @return Whether the blockscroll field is set.
         */
        boolean hasBlockscroll();
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
         * @return The blockscroll.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll getBlockscroll();
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscrollOrBuilder getBlockscrollOrBuilder();

        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
         * @return Whether the blockbottom field is set.
         */
        boolean hasBlockbottom();
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
         * @return The blockbottom.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom getBlockbottom();
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottomOrBuilder getBlockbottomOrBuilder();

        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
         * @return Whether the blockcolorful field is set.
         */
        boolean hasBlockcolorful();
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
         * @return The blockcolorful.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful getBlockcolorful();
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorfulOrBuilder getBlockcolorfulOrBuilder();

        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
         * @return Whether the blockrepeat field is set.
         */
        boolean hasBlockrepeat();
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
         * @return The blockrepeat.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat getBlockrepeat();
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeatOrBuilder getBlockrepeatOrBuilder();

        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
         * @return Whether the blockspecial field is set.
         */
        boolean hasBlockspecial();
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
         * @return The blockspecial.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial getBlockspecial();
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecialOrBuilder getBlockspecialOrBuilder();

        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
         * @return Whether the opacity field is set.
         */
        boolean hasOpacity();
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
         * @return The opacity.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity getOpacity();
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacityOrBuilder getOpacityOrBuilder();

        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
         * @return Whether the scalingfactor field is set.
         */
        boolean hasScalingfactor();
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
         * @return The scalingfactor.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor getScalingfactor();
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactorOrBuilder getScalingfactorOrBuilder();

        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
         * @return Whether the domain field is set.
         */
        boolean hasDomain();
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
         * @return The domain.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain getDomain();
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomainOrBuilder getDomainOrBuilder();

        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
         * @return Whether the speed field is set.
         */
        boolean hasSpeed();
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
         * @return The speed.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed getSpeed();
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeedOrBuilder getSpeedOrBuilder();

        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
         * @return Whether the enableblocklist field is set.
         */
        boolean hasEnableblocklist();
        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
         * @return The enableblocklist.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist getEnableblocklist();
        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklistOrBuilder getEnableblocklistOrBuilder();

        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
         * @return Whether the inlinePlayerDanmakuSwitch field is set.
         */
        boolean hasInlinePlayerDanmakuSwitch();
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
         * @return The inlinePlayerDanmakuSwitch.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch getInlinePlayerDanmakuSwitch();
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitchOrBuilder getInlinePlayerDanmakuSwitchOrBuilder();

        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
         * @return Whether the seniorModeSwitch field is set.
         */
        boolean hasSeniorModeSwitch();
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
         * @return The seniorModeSwitch.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch getSeniorModeSwitch();
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitchOrBuilder getSeniorModeSwitchOrBuilder();
    }
    /**
     * <pre>
     * 修改弹幕配置-请求
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmPlayerConfigReq}
     */
    public static final class DmPlayerConfigReq extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmPlayerConfigReq)
            DmPlayerConfigReqOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmPlayerConfigReq.newBuilder() to construct.
        private DmPlayerConfigReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmPlayerConfigReq() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmPlayerConfigReq(
                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: {

                            ts_ = input.readInt64();
                            break;
                        }
                        case 18: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder subBuilder = null;
                            if (switch_ != null) {
                                subBuilder = switch_.toBuilder();
                            }
                            switch_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(switch_);
                                switch_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 26: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder subBuilder = null;
                            if (switchSave_ != null) {
                                subBuilder = switchSave_.toBuilder();
                            }
                            switchSave_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(switchSave_);
                                switchSave_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 34: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder subBuilder = null;
                            if (useDefaultConfig_ != null) {
                                subBuilder = useDefaultConfig_.toBuilder();
                            }
                            useDefaultConfig_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(useDefaultConfig_);
                                useDefaultConfig_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 42: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder subBuilder = null;
                            if (aiRecommendedSwitch_ != null) {
                                subBuilder = aiRecommendedSwitch_.toBuilder();
                            }
                            aiRecommendedSwitch_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(aiRecommendedSwitch_);
                                aiRecommendedSwitch_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 50: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder subBuilder = null;
                            if (aiRecommendedLevel_ != null) {
                                subBuilder = aiRecommendedLevel_.toBuilder();
                            }
                            aiRecommendedLevel_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(aiRecommendedLevel_);
                                aiRecommendedLevel_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 58: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder subBuilder = null;
                            if (blocktop_ != null) {
                                subBuilder = blocktop_.toBuilder();
                            }
                            blocktop_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(blocktop_);
                                blocktop_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 66: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder subBuilder = null;
                            if (blockscroll_ != null) {
                                subBuilder = blockscroll_.toBuilder();
                            }
                            blockscroll_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(blockscroll_);
                                blockscroll_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 74: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder subBuilder = null;
                            if (blockbottom_ != null) {
                                subBuilder = blockbottom_.toBuilder();
                            }
                            blockbottom_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(blockbottom_);
                                blockbottom_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 82: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder subBuilder = null;
                            if (blockcolorful_ != null) {
                                subBuilder = blockcolorful_.toBuilder();
                            }
                            blockcolorful_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(blockcolorful_);
                                blockcolorful_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 90: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder subBuilder = null;
                            if (blockrepeat_ != null) {
                                subBuilder = blockrepeat_.toBuilder();
                            }
                            blockrepeat_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(blockrepeat_);
                                blockrepeat_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 98: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder subBuilder = null;
                            if (blockspecial_ != null) {
                                subBuilder = blockspecial_.toBuilder();
                            }
                            blockspecial_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(blockspecial_);
                                blockspecial_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 106: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder subBuilder = null;
                            if (opacity_ != null) {
                                subBuilder = opacity_.toBuilder();
                            }
                            opacity_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(opacity_);
                                opacity_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 114: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder subBuilder = null;
                            if (scalingfactor_ != null) {
                                subBuilder = scalingfactor_.toBuilder();
                            }
                            scalingfactor_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(scalingfactor_);
                                scalingfactor_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 122: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder subBuilder = null;
                            if (domain_ != null) {
                                subBuilder = domain_.toBuilder();
                            }
                            domain_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(domain_);
                                domain_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 130: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder subBuilder = null;
                            if (speed_ != null) {
                                subBuilder = speed_.toBuilder();
                            }
                            speed_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(speed_);
                                speed_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 138: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder subBuilder = null;
                            if (enableblocklist_ != null) {
                                subBuilder = enableblocklist_.toBuilder();
                            }
                            enableblocklist_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(enableblocklist_);
                                enableblocklist_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 146: {
                            com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder subBuilder = null;
                            if (inlinePlayerDanmakuSwitch_ != null) {
                                subBuilder = inlinePlayerDanmakuSwitch_.toBuilder();
                            }
                            inlinePlayerDanmakuSwitch_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(inlinePlayerDanmakuSwitch_);
                                inlinePlayerDanmakuSwitch_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 154: {
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder subBuilder = null;
                            if (seniorModeSwitch_ != null) {
                                subBuilder = seniorModeSwitch_.toBuilder();
                            }
                            seniorModeSwitch_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(seniorModeSwitch_);
                                seniorModeSwitch_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq.Builder.class);
        }

        public static final int TS_FIELD_NUMBER = 1;
        private long ts_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 ts = 1;</code>
         * @return The ts.
         */
        @java.lang.Override
        public long getTs() {
            return ts_;
        }

        public static final int SWITCH_FIELD_NUMBER = 2;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch switch_;
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
         * @return Whether the switch field is set.
         */
        @java.lang.Override
        public boolean hasSwitch() {
            return switch_ != null;
        }
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
         * @return The switch.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch getSwitch() {
            return switch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.getDefaultInstance() : switch_;
        }
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchOrBuilder getSwitchOrBuilder() {
            return getSwitch();
        }

        public static final int SWITCH_SAVE_FIELD_NUMBER = 3;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave switchSave_;
        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
         * @return Whether the switchSave field is set.
         */
        @java.lang.Override
        public boolean hasSwitchSave() {
            return switchSave_ != null;
        }
        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
         * @return The switchSave.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave getSwitchSave() {
            return switchSave_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.getDefaultInstance() : switchSave_;
        }
        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSaveOrBuilder getSwitchSaveOrBuilder() {
            return getSwitchSave();
        }

        public static final int USE_DEFAULT_CONFIG_FIELD_NUMBER = 4;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig useDefaultConfig_;
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
         * @return Whether the useDefaultConfig field is set.
         */
        @java.lang.Override
        public boolean hasUseDefaultConfig() {
            return useDefaultConfig_ != null;
        }
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
         * @return The useDefaultConfig.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig getUseDefaultConfig() {
            return useDefaultConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.getDefaultInstance() : useDefaultConfig_;
        }
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfigOrBuilder getUseDefaultConfigOrBuilder() {
            return getUseDefaultConfig();
        }

        public static final int AI_RECOMMENDED_SWITCH_FIELD_NUMBER = 5;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch aiRecommendedSwitch_;
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
         * @return Whether the aiRecommendedSwitch field is set.
         */
        @java.lang.Override
        public boolean hasAiRecommendedSwitch() {
            return aiRecommendedSwitch_ != null;
        }
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
         * @return The aiRecommendedSwitch.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch getAiRecommendedSwitch() {
            return aiRecommendedSwitch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.getDefaultInstance() : aiRecommendedSwitch_;
        }
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitchOrBuilder getAiRecommendedSwitchOrBuilder() {
            return getAiRecommendedSwitch();
        }

        public static final int AI_RECOMMENDED_LEVEL_FIELD_NUMBER = 6;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel aiRecommendedLevel_;
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
         * @return Whether the aiRecommendedLevel field is set.
         */
        @java.lang.Override
        public boolean hasAiRecommendedLevel() {
            return aiRecommendedLevel_ != null;
        }
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
         * @return The aiRecommendedLevel.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel getAiRecommendedLevel() {
            return aiRecommendedLevel_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.getDefaultInstance() : aiRecommendedLevel_;
        }
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevelOrBuilder getAiRecommendedLevelOrBuilder() {
            return getAiRecommendedLevel();
        }

        public static final int BLOCKTOP_FIELD_NUMBER = 7;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop blocktop_;
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
         * @return Whether the blocktop field is set.
         */
        @java.lang.Override
        public boolean hasBlocktop() {
            return blocktop_ != null;
        }
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
         * @return The blocktop.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop getBlocktop() {
            return blocktop_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.getDefaultInstance() : blocktop_;
        }
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktopOrBuilder getBlocktopOrBuilder() {
            return getBlocktop();
        }

        public static final int BLOCKSCROLL_FIELD_NUMBER = 8;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll blockscroll_;
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
         * @return Whether the blockscroll field is set.
         */
        @java.lang.Override
        public boolean hasBlockscroll() {
            return blockscroll_ != null;
        }
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
         * @return The blockscroll.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll getBlockscroll() {
            return blockscroll_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.getDefaultInstance() : blockscroll_;
        }
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscrollOrBuilder getBlockscrollOrBuilder() {
            return getBlockscroll();
        }

        public static final int BLOCKBOTTOM_FIELD_NUMBER = 9;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom blockbottom_;
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
         * @return Whether the blockbottom field is set.
         */
        @java.lang.Override
        public boolean hasBlockbottom() {
            return blockbottom_ != null;
        }
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
         * @return The blockbottom.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom getBlockbottom() {
            return blockbottom_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.getDefaultInstance() : blockbottom_;
        }
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottomOrBuilder getBlockbottomOrBuilder() {
            return getBlockbottom();
        }

        public static final int BLOCKCOLORFUL_FIELD_NUMBER = 10;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful blockcolorful_;
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
         * @return Whether the blockcolorful field is set.
         */
        @java.lang.Override
        public boolean hasBlockcolorful() {
            return blockcolorful_ != null;
        }
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
         * @return The blockcolorful.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful getBlockcolorful() {
            return blockcolorful_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.getDefaultInstance() : blockcolorful_;
        }
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorfulOrBuilder getBlockcolorfulOrBuilder() {
            return getBlockcolorful();
        }

        public static final int BLOCKREPEAT_FIELD_NUMBER = 11;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat blockrepeat_;
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
         * @return Whether the blockrepeat field is set.
         */
        @java.lang.Override
        public boolean hasBlockrepeat() {
            return blockrepeat_ != null;
        }
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
         * @return The blockrepeat.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat getBlockrepeat() {
            return blockrepeat_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.getDefaultInstance() : blockrepeat_;
        }
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeatOrBuilder getBlockrepeatOrBuilder() {
            return getBlockrepeat();
        }

        public static final int BLOCKSPECIAL_FIELD_NUMBER = 12;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial blockspecial_;
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
         * @return Whether the blockspecial field is set.
         */
        @java.lang.Override
        public boolean hasBlockspecial() {
            return blockspecial_ != null;
        }
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
         * @return The blockspecial.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial getBlockspecial() {
            return blockspecial_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.getDefaultInstance() : blockspecial_;
        }
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecialOrBuilder getBlockspecialOrBuilder() {
            return getBlockspecial();
        }

        public static final int OPACITY_FIELD_NUMBER = 13;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity opacity_;
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
         * @return Whether the opacity field is set.
         */
        @java.lang.Override
        public boolean hasOpacity() {
            return opacity_ != null;
        }
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
         * @return The opacity.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity getOpacity() {
            return opacity_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.getDefaultInstance() : opacity_;
        }
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacityOrBuilder getOpacityOrBuilder() {
            return getOpacity();
        }

        public static final int SCALINGFACTOR_FIELD_NUMBER = 14;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor scalingfactor_;
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
         * @return Whether the scalingfactor field is set.
         */
        @java.lang.Override
        public boolean hasScalingfactor() {
            return scalingfactor_ != null;
        }
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
         * @return The scalingfactor.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor getScalingfactor() {
            return scalingfactor_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.getDefaultInstance() : scalingfactor_;
        }
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactorOrBuilder getScalingfactorOrBuilder() {
            return getScalingfactor();
        }

        public static final int DOMAIN_FIELD_NUMBER = 15;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain domain_;
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
         * @return Whether the domain field is set.
         */
        @java.lang.Override
        public boolean hasDomain() {
            return domain_ != null;
        }
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
         * @return The domain.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain getDomain() {
            return domain_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.getDefaultInstance() : domain_;
        }
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomainOrBuilder getDomainOrBuilder() {
            return getDomain();
        }

        public static final int SPEED_FIELD_NUMBER = 16;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed speed_;
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
         * @return Whether the speed field is set.
         */
        @java.lang.Override
        public boolean hasSpeed() {
            return speed_ != null;
        }
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
         * @return The speed.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed getSpeed() {
            return speed_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.getDefaultInstance() : speed_;
        }
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeedOrBuilder getSpeedOrBuilder() {
            return getSpeed();
        }

        public static final int ENABLEBLOCKLIST_FIELD_NUMBER = 17;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist enableblocklist_;
        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
         * @return Whether the enableblocklist field is set.
         */
        @java.lang.Override
        public boolean hasEnableblocklist() {
            return enableblocklist_ != null;
        }
        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
         * @return The enableblocklist.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist getEnableblocklist() {
            return enableblocklist_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.getDefaultInstance() : enableblocklist_;
        }
        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklistOrBuilder getEnableblocklistOrBuilder() {
            return getEnableblocklist();
        }

        public static final int INLINEPLAYERDANMAKUSWITCH_FIELD_NUMBER = 18;
        private com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch_;
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
         * @return Whether the inlinePlayerDanmakuSwitch field is set.
         */
        @java.lang.Override
        public boolean hasInlinePlayerDanmakuSwitch() {
            return inlinePlayerDanmakuSwitch_ != null;
        }
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
         * @return The inlinePlayerDanmakuSwitch.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch getInlinePlayerDanmakuSwitch() {
            return inlinePlayerDanmakuSwitch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.getDefaultInstance() : inlinePlayerDanmakuSwitch_;
        }
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitchOrBuilder getInlinePlayerDanmakuSwitchOrBuilder() {
            return getInlinePlayerDanmakuSwitch();
        }

        public static final int SENIOR_MODE_SWITCH_FIELD_NUMBER = 19;
        private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch seniorModeSwitch_;
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
         * @return Whether the seniorModeSwitch field is set.
         */
        @java.lang.Override
        public boolean hasSeniorModeSwitch() {
            return seniorModeSwitch_ != null;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
         * @return The seniorModeSwitch.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch getSeniorModeSwitch() {
            return seniorModeSwitch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.getDefaultInstance() : seniorModeSwitch_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitchOrBuilder getSeniorModeSwitchOrBuilder() {
            return getSeniorModeSwitch();
        }

        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 (ts_ != 0L) {
                output.writeInt64(1, ts_);
            }
            if (switch_ != null) {
                output.writeMessage(2, getSwitch());
            }
            if (switchSave_ != null) {
                output.writeMessage(3, getSwitchSave());
            }
            if (useDefaultConfig_ != null) {
                output.writeMessage(4, getUseDefaultConfig());
            }
            if (aiRecommendedSwitch_ != null) {
                output.writeMessage(5, getAiRecommendedSwitch());
            }
            if (aiRecommendedLevel_ != null) {
                output.writeMessage(6, getAiRecommendedLevel());
            }
            if (blocktop_ != null) {
                output.writeMessage(7, getBlocktop());
            }
            if (blockscroll_ != null) {
                output.writeMessage(8, getBlockscroll());
            }
            if (blockbottom_ != null) {
                output.writeMessage(9, getBlockbottom());
            }
            if (blockcolorful_ != null) {
                output.writeMessage(10, getBlockcolorful());
            }
            if (blockrepeat_ != null) {
                output.writeMessage(11, getBlockrepeat());
            }
            if (blockspecial_ != null) {
                output.writeMessage(12, getBlockspecial());
            }
            if (opacity_ != null) {
                output.writeMessage(13, getOpacity());
            }
            if (scalingfactor_ != null) {
                output.writeMessage(14, getScalingfactor());
            }
            if (domain_ != null) {
                output.writeMessage(15, getDomain());
            }
            if (speed_ != null) {
                output.writeMessage(16, getSpeed());
            }
            if (enableblocklist_ != null) {
                output.writeMessage(17, getEnableblocklist());
            }
            if (inlinePlayerDanmakuSwitch_ != null) {
                output.writeMessage(18, getInlinePlayerDanmakuSwitch());
            }
            if (seniorModeSwitch_ != null) {
                output.writeMessage(19, getSeniorModeSwitch());
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (ts_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, ts_);
            }
            if (switch_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(2, getSwitch());
            }
            if (switchSave_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(3, getSwitchSave());
            }
            if (useDefaultConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(4, getUseDefaultConfig());
            }
            if (aiRecommendedSwitch_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(5, getAiRecommendedSwitch());
            }
            if (aiRecommendedLevel_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(6, getAiRecommendedLevel());
            }
            if (blocktop_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(7, getBlocktop());
            }
            if (blockscroll_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(8, getBlockscroll());
            }
            if (blockbottom_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(9, getBlockbottom());
            }
            if (blockcolorful_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(10, getBlockcolorful());
            }
            if (blockrepeat_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(11, getBlockrepeat());
            }
            if (blockspecial_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(12, getBlockspecial());
            }
            if (opacity_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(13, getOpacity());
            }
            if (scalingfactor_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(14, getScalingfactor());
            }
            if (domain_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(15, getDomain());
            }
            if (speed_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(16, getSpeed());
            }
            if (enableblocklist_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(17, getEnableblocklist());
            }
            if (inlinePlayerDanmakuSwitch_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(18, getInlinePlayerDanmakuSwitch());
            }
            if (seniorModeSwitch_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(19, getSeniorModeSwitch());
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq other = (com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq) obj;

            if (getTs()
                    != other.getTs()) return false;
            if (hasSwitch() != other.hasSwitch()) return false;
            if (hasSwitch()) {
                if (!getSwitch()
                        .equals(other.getSwitch())) return false;
            }
            if (hasSwitchSave() != other.hasSwitchSave()) return false;
            if (hasSwitchSave()) {
                if (!getSwitchSave()
                        .equals(other.getSwitchSave())) return false;
            }
            if (hasUseDefaultConfig() != other.hasUseDefaultConfig()) return false;
            if (hasUseDefaultConfig()) {
                if (!getUseDefaultConfig()
                        .equals(other.getUseDefaultConfig())) return false;
            }
            if (hasAiRecommendedSwitch() != other.hasAiRecommendedSwitch()) return false;
            if (hasAiRecommendedSwitch()) {
                if (!getAiRecommendedSwitch()
                        .equals(other.getAiRecommendedSwitch())) return false;
            }
            if (hasAiRecommendedLevel() != other.hasAiRecommendedLevel()) return false;
            if (hasAiRecommendedLevel()) {
                if (!getAiRecommendedLevel()
                        .equals(other.getAiRecommendedLevel())) return false;
            }
            if (hasBlocktop() != other.hasBlocktop()) return false;
            if (hasBlocktop()) {
                if (!getBlocktop()
                        .equals(other.getBlocktop())) return false;
            }
            if (hasBlockscroll() != other.hasBlockscroll()) return false;
            if (hasBlockscroll()) {
                if (!getBlockscroll()
                        .equals(other.getBlockscroll())) return false;
            }
            if (hasBlockbottom() != other.hasBlockbottom()) return false;
            if (hasBlockbottom()) {
                if (!getBlockbottom()
                        .equals(other.getBlockbottom())) return false;
            }
            if (hasBlockcolorful() != other.hasBlockcolorful()) return false;
            if (hasBlockcolorful()) {
                if (!getBlockcolorful()
                        .equals(other.getBlockcolorful())) return false;
            }
            if (hasBlockrepeat() != other.hasBlockrepeat()) return false;
            if (hasBlockrepeat()) {
                if (!getBlockrepeat()
                        .equals(other.getBlockrepeat())) return false;
            }
            if (hasBlockspecial() != other.hasBlockspecial()) return false;
            if (hasBlockspecial()) {
                if (!getBlockspecial()
                        .equals(other.getBlockspecial())) return false;
            }
            if (hasOpacity() != other.hasOpacity()) return false;
            if (hasOpacity()) {
                if (!getOpacity()
                        .equals(other.getOpacity())) return false;
            }
            if (hasScalingfactor() != other.hasScalingfactor()) return false;
            if (hasScalingfactor()) {
                if (!getScalingfactor()
                        .equals(other.getScalingfactor())) return false;
            }
            if (hasDomain() != other.hasDomain()) return false;
            if (hasDomain()) {
                if (!getDomain()
                        .equals(other.getDomain())) return false;
            }
            if (hasSpeed() != other.hasSpeed()) return false;
            if (hasSpeed()) {
                if (!getSpeed()
                        .equals(other.getSpeed())) return false;
            }
            if (hasEnableblocklist() != other.hasEnableblocklist()) return false;
            if (hasEnableblocklist()) {
                if (!getEnableblocklist()
                        .equals(other.getEnableblocklist())) return false;
            }
            if (hasInlinePlayerDanmakuSwitch() != other.hasInlinePlayerDanmakuSwitch()) return false;
            if (hasInlinePlayerDanmakuSwitch()) {
                if (!getInlinePlayerDanmakuSwitch()
                        .equals(other.getInlinePlayerDanmakuSwitch())) return false;
            }
            if (hasSeniorModeSwitch() != other.hasSeniorModeSwitch()) return false;
            if (hasSeniorModeSwitch()) {
                if (!getSeniorModeSwitch()
                        .equals(other.getSeniorModeSwitch())) 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) + TS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getTs());
            if (hasSwitch()) {
                hash = (37 * hash) + SWITCH_FIELD_NUMBER;
                hash = (53 * hash) + getSwitch().hashCode();
            }
            if (hasSwitchSave()) {
                hash = (37 * hash) + SWITCH_SAVE_FIELD_NUMBER;
                hash = (53 * hash) + getSwitchSave().hashCode();
            }
            if (hasUseDefaultConfig()) {
                hash = (37 * hash) + USE_DEFAULT_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getUseDefaultConfig().hashCode();
            }
            if (hasAiRecommendedSwitch()) {
                hash = (37 * hash) + AI_RECOMMENDED_SWITCH_FIELD_NUMBER;
                hash = (53 * hash) + getAiRecommendedSwitch().hashCode();
            }
            if (hasAiRecommendedLevel()) {
                hash = (37 * hash) + AI_RECOMMENDED_LEVEL_FIELD_NUMBER;
                hash = (53 * hash) + getAiRecommendedLevel().hashCode();
            }
            if (hasBlocktop()) {
                hash = (37 * hash) + BLOCKTOP_FIELD_NUMBER;
                hash = (53 * hash) + getBlocktop().hashCode();
            }
            if (hasBlockscroll()) {
                hash = (37 * hash) + BLOCKSCROLL_FIELD_NUMBER;
                hash = (53 * hash) + getBlockscroll().hashCode();
            }
            if (hasBlockbottom()) {
                hash = (37 * hash) + BLOCKBOTTOM_FIELD_NUMBER;
                hash = (53 * hash) + getBlockbottom().hashCode();
            }
            if (hasBlockcolorful()) {
                hash = (37 * hash) + BLOCKCOLORFUL_FIELD_NUMBER;
                hash = (53 * hash) + getBlockcolorful().hashCode();
            }
            if (hasBlockrepeat()) {
                hash = (37 * hash) + BLOCKREPEAT_FIELD_NUMBER;
                hash = (53 * hash) + getBlockrepeat().hashCode();
            }
            if (hasBlockspecial()) {
                hash = (37 * hash) + BLOCKSPECIAL_FIELD_NUMBER;
                hash = (53 * hash) + getBlockspecial().hashCode();
            }
            if (hasOpacity()) {
                hash = (37 * hash) + OPACITY_FIELD_NUMBER;
                hash = (53 * hash) + getOpacity().hashCode();
            }
            if (hasScalingfactor()) {
                hash = (37 * hash) + SCALINGFACTOR_FIELD_NUMBER;
                hash = (53 * hash) + getScalingfactor().hashCode();
            }
            if (hasDomain()) {
                hash = (37 * hash) + DOMAIN_FIELD_NUMBER;
                hash = (53 * hash) + getDomain().hashCode();
            }
            if (hasSpeed()) {
                hash = (37 * hash) + SPEED_FIELD_NUMBER;
                hash = (53 * hash) + getSpeed().hashCode();
            }
            if (hasEnableblocklist()) {
                hash = (37 * hash) + ENABLEBLOCKLIST_FIELD_NUMBER;
                hash = (53 * hash) + getEnableblocklist().hashCode();
            }
            if (hasInlinePlayerDanmakuSwitch()) {
                hash = (37 * hash) + INLINEPLAYERDANMAKUSWITCH_FIELD_NUMBER;
                hash = (53 * hash) + getInlinePlayerDanmakuSwitch().hashCode();
            }
            if (hasSeniorModeSwitch()) {
                hash = (37 * hash) + SENIOR_MODE_SWITCH_FIELD_NUMBER;
                hash = (53 * hash) + getSeniorModeSwitch().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 修改弹幕配置-请求
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmPlayerConfigReq}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmPlayerConfigReq)
                com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReqOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq.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();
                ts_ = 0L;

                if (switchBuilder_ == null) {
                    switch_ = null;
                } else {
                    switch_ = null;
                    switchBuilder_ = null;
                }
                if (switchSaveBuilder_ == null) {
                    switchSave_ = null;
                } else {
                    switchSave_ = null;
                    switchSaveBuilder_ = null;
                }
                if (useDefaultConfigBuilder_ == null) {
                    useDefaultConfig_ = null;
                } else {
                    useDefaultConfig_ = null;
                    useDefaultConfigBuilder_ = null;
                }
                if (aiRecommendedSwitchBuilder_ == null) {
                    aiRecommendedSwitch_ = null;
                } else {
                    aiRecommendedSwitch_ = null;
                    aiRecommendedSwitchBuilder_ = null;
                }
                if (aiRecommendedLevelBuilder_ == null) {
                    aiRecommendedLevel_ = null;
                } else {
                    aiRecommendedLevel_ = null;
                    aiRecommendedLevelBuilder_ = null;
                }
                if (blocktopBuilder_ == null) {
                    blocktop_ = null;
                } else {
                    blocktop_ = null;
                    blocktopBuilder_ = null;
                }
                if (blockscrollBuilder_ == null) {
                    blockscroll_ = null;
                } else {
                    blockscroll_ = null;
                    blockscrollBuilder_ = null;
                }
                if (blockbottomBuilder_ == null) {
                    blockbottom_ = null;
                } else {
                    blockbottom_ = null;
                    blockbottomBuilder_ = null;
                }
                if (blockcolorfulBuilder_ == null) {
                    blockcolorful_ = null;
                } else {
                    blockcolorful_ = null;
                    blockcolorfulBuilder_ = null;
                }
                if (blockrepeatBuilder_ == null) {
                    blockrepeat_ = null;
                } else {
                    blockrepeat_ = null;
                    blockrepeatBuilder_ = null;
                }
                if (blockspecialBuilder_ == null) {
                    blockspecial_ = null;
                } else {
                    blockspecial_ = null;
                    blockspecialBuilder_ = null;
                }
                if (opacityBuilder_ == null) {
                    opacity_ = null;
                } else {
                    opacity_ = null;
                    opacityBuilder_ = null;
                }
                if (scalingfactorBuilder_ == null) {
                    scalingfactor_ = null;
                } else {
                    scalingfactor_ = null;
                    scalingfactorBuilder_ = null;
                }
                if (domainBuilder_ == null) {
                    domain_ = null;
                } else {
                    domain_ = null;
                    domainBuilder_ = null;
                }
                if (speedBuilder_ == null) {
                    speed_ = null;
                } else {
                    speed_ = null;
                    speedBuilder_ = null;
                }
                if (enableblocklistBuilder_ == null) {
                    enableblocklist_ = null;
                } else {
                    enableblocklist_ = null;
                    enableblocklistBuilder_ = null;
                }
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    inlinePlayerDanmakuSwitch_ = null;
                } else {
                    inlinePlayerDanmakuSwitch_ = null;
                    inlinePlayerDanmakuSwitchBuilder_ = null;
                }
                if (seniorModeSwitchBuilder_ == null) {
                    seniorModeSwitch_ = null;
                } else {
                    seniorModeSwitch_ = null;
                    seniorModeSwitchBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq result = new com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq(this);
                result.ts_ = ts_;
                if (switchBuilder_ == null) {
                    result.switch_ = switch_;
                } else {
                    result.switch_ = switchBuilder_.build();
                }
                if (switchSaveBuilder_ == null) {
                    result.switchSave_ = switchSave_;
                } else {
                    result.switchSave_ = switchSaveBuilder_.build();
                }
                if (useDefaultConfigBuilder_ == null) {
                    result.useDefaultConfig_ = useDefaultConfig_;
                } else {
                    result.useDefaultConfig_ = useDefaultConfigBuilder_.build();
                }
                if (aiRecommendedSwitchBuilder_ == null) {
                    result.aiRecommendedSwitch_ = aiRecommendedSwitch_;
                } else {
                    result.aiRecommendedSwitch_ = aiRecommendedSwitchBuilder_.build();
                }
                if (aiRecommendedLevelBuilder_ == null) {
                    result.aiRecommendedLevel_ = aiRecommendedLevel_;
                } else {
                    result.aiRecommendedLevel_ = aiRecommendedLevelBuilder_.build();
                }
                if (blocktopBuilder_ == null) {
                    result.blocktop_ = blocktop_;
                } else {
                    result.blocktop_ = blocktopBuilder_.build();
                }
                if (blockscrollBuilder_ == null) {
                    result.blockscroll_ = blockscroll_;
                } else {
                    result.blockscroll_ = blockscrollBuilder_.build();
                }
                if (blockbottomBuilder_ == null) {
                    result.blockbottom_ = blockbottom_;
                } else {
                    result.blockbottom_ = blockbottomBuilder_.build();
                }
                if (blockcolorfulBuilder_ == null) {
                    result.blockcolorful_ = blockcolorful_;
                } else {
                    result.blockcolorful_ = blockcolorfulBuilder_.build();
                }
                if (blockrepeatBuilder_ == null) {
                    result.blockrepeat_ = blockrepeat_;
                } else {
                    result.blockrepeat_ = blockrepeatBuilder_.build();
                }
                if (blockspecialBuilder_ == null) {
                    result.blockspecial_ = blockspecial_;
                } else {
                    result.blockspecial_ = blockspecialBuilder_.build();
                }
                if (opacityBuilder_ == null) {
                    result.opacity_ = opacity_;
                } else {
                    result.opacity_ = opacityBuilder_.build();
                }
                if (scalingfactorBuilder_ == null) {
                    result.scalingfactor_ = scalingfactor_;
                } else {
                    result.scalingfactor_ = scalingfactorBuilder_.build();
                }
                if (domainBuilder_ == null) {
                    result.domain_ = domain_;
                } else {
                    result.domain_ = domainBuilder_.build();
                }
                if (speedBuilder_ == null) {
                    result.speed_ = speed_;
                } else {
                    result.speed_ = speedBuilder_.build();
                }
                if (enableblocklistBuilder_ == null) {
                    result.enableblocklist_ = enableblocklist_;
                } else {
                    result.enableblocklist_ = enableblocklistBuilder_.build();
                }
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    result.inlinePlayerDanmakuSwitch_ = inlinePlayerDanmakuSwitch_;
                } else {
                    result.inlinePlayerDanmakuSwitch_ = inlinePlayerDanmakuSwitchBuilder_.build();
                }
                if (seniorModeSwitchBuilder_ == null) {
                    result.seniorModeSwitch_ = seniorModeSwitch_;
                } else {
                    result.seniorModeSwitch_ = seniorModeSwitchBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq.getDefaultInstance()) return this;
                if (other.getTs() != 0L) {
                    setTs(other.getTs());
                }
                if (other.hasSwitch()) {
                    mergeSwitch(other.getSwitch());
                }
                if (other.hasSwitchSave()) {
                    mergeSwitchSave(other.getSwitchSave());
                }
                if (other.hasUseDefaultConfig()) {
                    mergeUseDefaultConfig(other.getUseDefaultConfig());
                }
                if (other.hasAiRecommendedSwitch()) {
                    mergeAiRecommendedSwitch(other.getAiRecommendedSwitch());
                }
                if (other.hasAiRecommendedLevel()) {
                    mergeAiRecommendedLevel(other.getAiRecommendedLevel());
                }
                if (other.hasBlocktop()) {
                    mergeBlocktop(other.getBlocktop());
                }
                if (other.hasBlockscroll()) {
                    mergeBlockscroll(other.getBlockscroll());
                }
                if (other.hasBlockbottom()) {
                    mergeBlockbottom(other.getBlockbottom());
                }
                if (other.hasBlockcolorful()) {
                    mergeBlockcolorful(other.getBlockcolorful());
                }
                if (other.hasBlockrepeat()) {
                    mergeBlockrepeat(other.getBlockrepeat());
                }
                if (other.hasBlockspecial()) {
                    mergeBlockspecial(other.getBlockspecial());
                }
                if (other.hasOpacity()) {
                    mergeOpacity(other.getOpacity());
                }
                if (other.hasScalingfactor()) {
                    mergeScalingfactor(other.getScalingfactor());
                }
                if (other.hasDomain()) {
                    mergeDomain(other.getDomain());
                }
                if (other.hasSpeed()) {
                    mergeSpeed(other.getSpeed());
                }
                if (other.hasEnableblocklist()) {
                    mergeEnableblocklist(other.getEnableblocklist());
                }
                if (other.hasInlinePlayerDanmakuSwitch()) {
                    mergeInlinePlayerDanmakuSwitch(other.getInlinePlayerDanmakuSwitch());
                }
                if (other.hasSeniorModeSwitch()) {
                    mergeSeniorModeSwitch(other.getSeniorModeSwitch());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long ts_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 ts = 1;</code>
             * @return The ts.
             */
            @java.lang.Override
            public long getTs() {
                return ts_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 ts = 1;</code>
             * @param value The ts to set.
             * @return This builder for chaining.
             */
            public Builder setTs(long value) {

                ts_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 ts = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearTs() {

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

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch switch_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchOrBuilder> switchBuilder_;
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             * @return Whether the switch field is set.
             */
            public boolean hasSwitch() {
                return switchBuilder_ != null || switch_ != null;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             * @return The switch.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch getSwitch() {
                if (switchBuilder_ == null) {
                    return switch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.getDefaultInstance() : switch_;
                } else {
                    return switchBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             */
            public Builder setSwitch(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch value) {
                if (switchBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    switch_ = value;
                    onChanged();
                } else {
                    switchBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             */
            public Builder setSwitch(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder builderForValue) {
                if (switchBuilder_ == null) {
                    switch_ = builderForValue.build();
                    onChanged();
                } else {
                    switchBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             */
            public Builder mergeSwitch(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch value) {
                if (switchBuilder_ == null) {
                    if (switch_ != null) {
                        switch_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.newBuilder(switch_).mergeFrom(value).buildPartial();
                    } else {
                        switch_ = value;
                    }
                    onChanged();
                } else {
                    switchBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             */
            public Builder clearSwitch() {
                if (switchBuilder_ == null) {
                    switch_ = null;
                    onChanged();
                } else {
                    switch_ = null;
                    switchBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder getSwitchBuilder() {

                onChanged();
                return getSwitchFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchOrBuilder getSwitchOrBuilder() {
                if (switchBuilder_ != null) {
                    return switchBuilder_.getMessageOrBuilder();
                } else {
                    return switch_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.getDefaultInstance() : switch_;
                }
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitch switch = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchOrBuilder>
            getSwitchFieldBuilder() {
                if (switchBuilder_ == null) {
                    switchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchOrBuilder>(
                            getSwitch(),
                            getParentForChildren(),
                            isClean());
                    switch_ = null;
                }
                return switchBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave switchSave_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSaveOrBuilder> switchSaveBuilder_;
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             * @return Whether the switchSave field is set.
             */
            public boolean hasSwitchSave() {
                return switchSaveBuilder_ != null || switchSave_ != null;
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             * @return The switchSave.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave getSwitchSave() {
                if (switchSaveBuilder_ == null) {
                    return switchSave_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.getDefaultInstance() : switchSave_;
                } else {
                    return switchSaveBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             */
            public Builder setSwitchSave(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave value) {
                if (switchSaveBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    switchSave_ = value;
                    onChanged();
                } else {
                    switchSaveBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             */
            public Builder setSwitchSave(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder builderForValue) {
                if (switchSaveBuilder_ == null) {
                    switchSave_ = builderForValue.build();
                    onChanged();
                } else {
                    switchSaveBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             */
            public Builder mergeSwitchSave(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave value) {
                if (switchSaveBuilder_ == null) {
                    if (switchSave_ != null) {
                        switchSave_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.newBuilder(switchSave_).mergeFrom(value).buildPartial();
                    } else {
                        switchSave_ = value;
                    }
                    onChanged();
                } else {
                    switchSaveBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             */
            public Builder clearSwitchSave() {
                if (switchSaveBuilder_ == null) {
                    switchSave_ = null;
                    onChanged();
                } else {
                    switchSave_ = null;
                    switchSaveBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder getSwitchSaveBuilder() {

                onChanged();
                return getSwitchSaveFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSaveOrBuilder getSwitchSaveOrBuilder() {
                if (switchSaveBuilder_ != null) {
                    return switchSaveBuilder_.getMessageOrBuilder();
                } else {
                    return switchSave_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.getDefaultInstance() : switchSave_;
                }
            }
            /**
             * <pre>
             * 是否记录弹幕开关设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave switch_save = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSaveOrBuilder>
            getSwitchSaveFieldBuilder() {
                if (switchSaveBuilder_ == null) {
                    switchSaveBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSaveOrBuilder>(
                            getSwitchSave(),
                            getParentForChildren(),
                            isClean());
                    switchSave_ = null;
                }
                return switchSaveBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig useDefaultConfig_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfigOrBuilder> useDefaultConfigBuilder_;
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             * @return Whether the useDefaultConfig field is set.
             */
            public boolean hasUseDefaultConfig() {
                return useDefaultConfigBuilder_ != null || useDefaultConfig_ != null;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             * @return The useDefaultConfig.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig getUseDefaultConfig() {
                if (useDefaultConfigBuilder_ == null) {
                    return useDefaultConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.getDefaultInstance() : useDefaultConfig_;
                } else {
                    return useDefaultConfigBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             */
            public Builder setUseDefaultConfig(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig value) {
                if (useDefaultConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    useDefaultConfig_ = value;
                    onChanged();
                } else {
                    useDefaultConfigBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             */
            public Builder setUseDefaultConfig(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder builderForValue) {
                if (useDefaultConfigBuilder_ == null) {
                    useDefaultConfig_ = builderForValue.build();
                    onChanged();
                } else {
                    useDefaultConfigBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             */
            public Builder mergeUseDefaultConfig(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig value) {
                if (useDefaultConfigBuilder_ == null) {
                    if (useDefaultConfig_ != null) {
                        useDefaultConfig_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.newBuilder(useDefaultConfig_).mergeFrom(value).buildPartial();
                    } else {
                        useDefaultConfig_ = value;
                    }
                    onChanged();
                } else {
                    useDefaultConfigBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             */
            public Builder clearUseDefaultConfig() {
                if (useDefaultConfigBuilder_ == null) {
                    useDefaultConfig_ = null;
                    onChanged();
                } else {
                    useDefaultConfig_ = null;
                    useDefaultConfigBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder getUseDefaultConfigBuilder() {

                onChanged();
                return getUseDefaultConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfigOrBuilder getUseDefaultConfigOrBuilder() {
                if (useDefaultConfigBuilder_ != null) {
                    return useDefaultConfigBuilder_.getMessageOrBuilder();
                } else {
                    return useDefaultConfig_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.getDefaultInstance() : useDefaultConfig_;
                }
            }
            /**
             * <pre>
             * 是否使用推荐弹幕设置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig use_default_config = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfigOrBuilder>
            getUseDefaultConfigFieldBuilder() {
                if (useDefaultConfigBuilder_ == null) {
                    useDefaultConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfigOrBuilder>(
                            getUseDefaultConfig(),
                            getParentForChildren(),
                            isClean());
                    useDefaultConfig_ = null;
                }
                return useDefaultConfigBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch aiRecommendedSwitch_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitchOrBuilder> aiRecommendedSwitchBuilder_;
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             * @return Whether the aiRecommendedSwitch field is set.
             */
            public boolean hasAiRecommendedSwitch() {
                return aiRecommendedSwitchBuilder_ != null || aiRecommendedSwitch_ != null;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             * @return The aiRecommendedSwitch.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch getAiRecommendedSwitch() {
                if (aiRecommendedSwitchBuilder_ == null) {
                    return aiRecommendedSwitch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.getDefaultInstance() : aiRecommendedSwitch_;
                } else {
                    return aiRecommendedSwitchBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             */
            public Builder setAiRecommendedSwitch(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch value) {
                if (aiRecommendedSwitchBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    aiRecommendedSwitch_ = value;
                    onChanged();
                } else {
                    aiRecommendedSwitchBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             */
            public Builder setAiRecommendedSwitch(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder builderForValue) {
                if (aiRecommendedSwitchBuilder_ == null) {
                    aiRecommendedSwitch_ = builderForValue.build();
                    onChanged();
                } else {
                    aiRecommendedSwitchBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             */
            public Builder mergeAiRecommendedSwitch(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch value) {
                if (aiRecommendedSwitchBuilder_ == null) {
                    if (aiRecommendedSwitch_ != null) {
                        aiRecommendedSwitch_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.newBuilder(aiRecommendedSwitch_).mergeFrom(value).buildPartial();
                    } else {
                        aiRecommendedSwitch_ = value;
                    }
                    onChanged();
                } else {
                    aiRecommendedSwitchBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             */
            public Builder clearAiRecommendedSwitch() {
                if (aiRecommendedSwitchBuilder_ == null) {
                    aiRecommendedSwitch_ = null;
                    onChanged();
                } else {
                    aiRecommendedSwitch_ = null;
                    aiRecommendedSwitchBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder getAiRecommendedSwitchBuilder() {

                onChanged();
                return getAiRecommendedSwitchFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitchOrBuilder getAiRecommendedSwitchOrBuilder() {
                if (aiRecommendedSwitchBuilder_ != null) {
                    return aiRecommendedSwitchBuilder_.getMessageOrBuilder();
                } else {
                    return aiRecommendedSwitch_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.getDefaultInstance() : aiRecommendedSwitch_;
                }
            }
            /**
             * <pre>
             * 是否开启智能云屏蔽
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch ai_recommended_switch = 5;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitchOrBuilder>
            getAiRecommendedSwitchFieldBuilder() {
                if (aiRecommendedSwitchBuilder_ == null) {
                    aiRecommendedSwitchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitchOrBuilder>(
                            getAiRecommendedSwitch(),
                            getParentForChildren(),
                            isClean());
                    aiRecommendedSwitch_ = null;
                }
                return aiRecommendedSwitchBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel aiRecommendedLevel_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevelOrBuilder> aiRecommendedLevelBuilder_;
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             * @return Whether the aiRecommendedLevel field is set.
             */
            public boolean hasAiRecommendedLevel() {
                return aiRecommendedLevelBuilder_ != null || aiRecommendedLevel_ != null;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             * @return The aiRecommendedLevel.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel getAiRecommendedLevel() {
                if (aiRecommendedLevelBuilder_ == null) {
                    return aiRecommendedLevel_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.getDefaultInstance() : aiRecommendedLevel_;
                } else {
                    return aiRecommendedLevelBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             */
            public Builder setAiRecommendedLevel(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel value) {
                if (aiRecommendedLevelBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    aiRecommendedLevel_ = value;
                    onChanged();
                } else {
                    aiRecommendedLevelBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             */
            public Builder setAiRecommendedLevel(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder builderForValue) {
                if (aiRecommendedLevelBuilder_ == null) {
                    aiRecommendedLevel_ = builderForValue.build();
                    onChanged();
                } else {
                    aiRecommendedLevelBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             */
            public Builder mergeAiRecommendedLevel(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel value) {
                if (aiRecommendedLevelBuilder_ == null) {
                    if (aiRecommendedLevel_ != null) {
                        aiRecommendedLevel_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.newBuilder(aiRecommendedLevel_).mergeFrom(value).buildPartial();
                    } else {
                        aiRecommendedLevel_ = value;
                    }
                    onChanged();
                } else {
                    aiRecommendedLevelBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             */
            public Builder clearAiRecommendedLevel() {
                if (aiRecommendedLevelBuilder_ == null) {
                    aiRecommendedLevel_ = null;
                    onChanged();
                } else {
                    aiRecommendedLevel_ = null;
                    aiRecommendedLevelBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder getAiRecommendedLevelBuilder() {

                onChanged();
                return getAiRecommendedLevelFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevelOrBuilder getAiRecommendedLevelOrBuilder() {
                if (aiRecommendedLevelBuilder_ != null) {
                    return aiRecommendedLevelBuilder_.getMessageOrBuilder();
                } else {
                    return aiRecommendedLevel_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.getDefaultInstance() : aiRecommendedLevel_;
                }
            }
            /**
             * <pre>
             * 智能云屏蔽等级
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel ai_recommended_level = 6;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevelOrBuilder>
            getAiRecommendedLevelFieldBuilder() {
                if (aiRecommendedLevelBuilder_ == null) {
                    aiRecommendedLevelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevelOrBuilder>(
                            getAiRecommendedLevel(),
                            getParentForChildren(),
                            isClean());
                    aiRecommendedLevel_ = null;
                }
                return aiRecommendedLevelBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop blocktop_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktopOrBuilder> blocktopBuilder_;
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             * @return Whether the blocktop field is set.
             */
            public boolean hasBlocktop() {
                return blocktopBuilder_ != null || blocktop_ != null;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             * @return The blocktop.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop getBlocktop() {
                if (blocktopBuilder_ == null) {
                    return blocktop_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.getDefaultInstance() : blocktop_;
                } else {
                    return blocktopBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             */
            public Builder setBlocktop(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop value) {
                if (blocktopBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    blocktop_ = value;
                    onChanged();
                } else {
                    blocktopBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             */
            public Builder setBlocktop(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder builderForValue) {
                if (blocktopBuilder_ == null) {
                    blocktop_ = builderForValue.build();
                    onChanged();
                } else {
                    blocktopBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             */
            public Builder mergeBlocktop(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop value) {
                if (blocktopBuilder_ == null) {
                    if (blocktop_ != null) {
                        blocktop_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.newBuilder(blocktop_).mergeFrom(value).buildPartial();
                    } else {
                        blocktop_ = value;
                    }
                    onChanged();
                } else {
                    blocktopBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             */
            public Builder clearBlocktop() {
                if (blocktopBuilder_ == null) {
                    blocktop_ = null;
                    onChanged();
                } else {
                    blocktop_ = null;
                    blocktopBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder getBlocktopBuilder() {

                onChanged();
                return getBlocktopFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktopOrBuilder getBlocktopOrBuilder() {
                if (blocktopBuilder_ != null) {
                    return blocktopBuilder_.getMessageOrBuilder();
                } else {
                    return blocktop_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.getDefaultInstance() : blocktop_;
                }
            }
            /**
             * <pre>
             * 是否屏蔽顶端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop blocktop = 7;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktopOrBuilder>
            getBlocktopFieldBuilder() {
                if (blocktopBuilder_ == null) {
                    blocktopBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktopOrBuilder>(
                            getBlocktop(),
                            getParentForChildren(),
                            isClean());
                    blocktop_ = null;
                }
                return blocktopBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll blockscroll_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscrollOrBuilder> blockscrollBuilder_;
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             * @return Whether the blockscroll field is set.
             */
            public boolean hasBlockscroll() {
                return blockscrollBuilder_ != null || blockscroll_ != null;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             * @return The blockscroll.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll getBlockscroll() {
                if (blockscrollBuilder_ == null) {
                    return blockscroll_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.getDefaultInstance() : blockscroll_;
                } else {
                    return blockscrollBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             */
            public Builder setBlockscroll(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll value) {
                if (blockscrollBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    blockscroll_ = value;
                    onChanged();
                } else {
                    blockscrollBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             */
            public Builder setBlockscroll(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder builderForValue) {
                if (blockscrollBuilder_ == null) {
                    blockscroll_ = builderForValue.build();
                    onChanged();
                } else {
                    blockscrollBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             */
            public Builder mergeBlockscroll(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll value) {
                if (blockscrollBuilder_ == null) {
                    if (blockscroll_ != null) {
                        blockscroll_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.newBuilder(blockscroll_).mergeFrom(value).buildPartial();
                    } else {
                        blockscroll_ = value;
                    }
                    onChanged();
                } else {
                    blockscrollBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             */
            public Builder clearBlockscroll() {
                if (blockscrollBuilder_ == null) {
                    blockscroll_ = null;
                    onChanged();
                } else {
                    blockscroll_ = null;
                    blockscrollBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder getBlockscrollBuilder() {

                onChanged();
                return getBlockscrollFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscrollOrBuilder getBlockscrollOrBuilder() {
                if (blockscrollBuilder_ != null) {
                    return blockscrollBuilder_.getMessageOrBuilder();
                } else {
                    return blockscroll_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.getDefaultInstance() : blockscroll_;
                }
            }
            /**
             * <pre>
             * 是否屏蔽滚动弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll blockscroll = 8;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscrollOrBuilder>
            getBlockscrollFieldBuilder() {
                if (blockscrollBuilder_ == null) {
                    blockscrollBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscrollOrBuilder>(
                            getBlockscroll(),
                            getParentForChildren(),
                            isClean());
                    blockscroll_ = null;
                }
                return blockscrollBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom blockbottom_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottomOrBuilder> blockbottomBuilder_;
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             * @return Whether the blockbottom field is set.
             */
            public boolean hasBlockbottom() {
                return blockbottomBuilder_ != null || blockbottom_ != null;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             * @return The blockbottom.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom getBlockbottom() {
                if (blockbottomBuilder_ == null) {
                    return blockbottom_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.getDefaultInstance() : blockbottom_;
                } else {
                    return blockbottomBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             */
            public Builder setBlockbottom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom value) {
                if (blockbottomBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    blockbottom_ = value;
                    onChanged();
                } else {
                    blockbottomBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             */
            public Builder setBlockbottom(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder builderForValue) {
                if (blockbottomBuilder_ == null) {
                    blockbottom_ = builderForValue.build();
                    onChanged();
                } else {
                    blockbottomBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             */
            public Builder mergeBlockbottom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom value) {
                if (blockbottomBuilder_ == null) {
                    if (blockbottom_ != null) {
                        blockbottom_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.newBuilder(blockbottom_).mergeFrom(value).buildPartial();
                    } else {
                        blockbottom_ = value;
                    }
                    onChanged();
                } else {
                    blockbottomBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             */
            public Builder clearBlockbottom() {
                if (blockbottomBuilder_ == null) {
                    blockbottom_ = null;
                    onChanged();
                } else {
                    blockbottom_ = null;
                    blockbottomBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder getBlockbottomBuilder() {

                onChanged();
                return getBlockbottomFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottomOrBuilder getBlockbottomOrBuilder() {
                if (blockbottomBuilder_ != null) {
                    return blockbottomBuilder_.getMessageOrBuilder();
                } else {
                    return blockbottom_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.getDefaultInstance() : blockbottom_;
                }
            }
            /**
             * <pre>
             * 是否屏蔽底端弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom blockbottom = 9;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottomOrBuilder>
            getBlockbottomFieldBuilder() {
                if (blockbottomBuilder_ == null) {
                    blockbottomBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottomOrBuilder>(
                            getBlockbottom(),
                            getParentForChildren(),
                            isClean());
                    blockbottom_ = null;
                }
                return blockbottomBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful blockcolorful_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorfulOrBuilder> blockcolorfulBuilder_;
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             * @return Whether the blockcolorful field is set.
             */
            public boolean hasBlockcolorful() {
                return blockcolorfulBuilder_ != null || blockcolorful_ != null;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             * @return The blockcolorful.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful getBlockcolorful() {
                if (blockcolorfulBuilder_ == null) {
                    return blockcolorful_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.getDefaultInstance() : blockcolorful_;
                } else {
                    return blockcolorfulBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             */
            public Builder setBlockcolorful(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful value) {
                if (blockcolorfulBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    blockcolorful_ = value;
                    onChanged();
                } else {
                    blockcolorfulBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             */
            public Builder setBlockcolorful(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder builderForValue) {
                if (blockcolorfulBuilder_ == null) {
                    blockcolorful_ = builderForValue.build();
                    onChanged();
                } else {
                    blockcolorfulBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             */
            public Builder mergeBlockcolorful(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful value) {
                if (blockcolorfulBuilder_ == null) {
                    if (blockcolorful_ != null) {
                        blockcolorful_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.newBuilder(blockcolorful_).mergeFrom(value).buildPartial();
                    } else {
                        blockcolorful_ = value;
                    }
                    onChanged();
                } else {
                    blockcolorfulBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             */
            public Builder clearBlockcolorful() {
                if (blockcolorfulBuilder_ == null) {
                    blockcolorful_ = null;
                    onChanged();
                } else {
                    blockcolorful_ = null;
                    blockcolorfulBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder getBlockcolorfulBuilder() {

                onChanged();
                return getBlockcolorfulFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorfulOrBuilder getBlockcolorfulOrBuilder() {
                if (blockcolorfulBuilder_ != null) {
                    return blockcolorfulBuilder_.getMessageOrBuilder();
                } else {
                    return blockcolorful_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.getDefaultInstance() : blockcolorful_;
                }
            }
            /**
             * <pre>
             * 是否屏蔽彩色弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful blockcolorful = 10;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorfulOrBuilder>
            getBlockcolorfulFieldBuilder() {
                if (blockcolorfulBuilder_ == null) {
                    blockcolorfulBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorfulOrBuilder>(
                            getBlockcolorful(),
                            getParentForChildren(),
                            isClean());
                    blockcolorful_ = null;
                }
                return blockcolorfulBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat blockrepeat_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeatOrBuilder> blockrepeatBuilder_;
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             * @return Whether the blockrepeat field is set.
             */
            public boolean hasBlockrepeat() {
                return blockrepeatBuilder_ != null || blockrepeat_ != null;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             * @return The blockrepeat.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat getBlockrepeat() {
                if (blockrepeatBuilder_ == null) {
                    return blockrepeat_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.getDefaultInstance() : blockrepeat_;
                } else {
                    return blockrepeatBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             */
            public Builder setBlockrepeat(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat value) {
                if (blockrepeatBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    blockrepeat_ = value;
                    onChanged();
                } else {
                    blockrepeatBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             */
            public Builder setBlockrepeat(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder builderForValue) {
                if (blockrepeatBuilder_ == null) {
                    blockrepeat_ = builderForValue.build();
                    onChanged();
                } else {
                    blockrepeatBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             */
            public Builder mergeBlockrepeat(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat value) {
                if (blockrepeatBuilder_ == null) {
                    if (blockrepeat_ != null) {
                        blockrepeat_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.newBuilder(blockrepeat_).mergeFrom(value).buildPartial();
                    } else {
                        blockrepeat_ = value;
                    }
                    onChanged();
                } else {
                    blockrepeatBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             */
            public Builder clearBlockrepeat() {
                if (blockrepeatBuilder_ == null) {
                    blockrepeat_ = null;
                    onChanged();
                } else {
                    blockrepeat_ = null;
                    blockrepeatBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder getBlockrepeatBuilder() {

                onChanged();
                return getBlockrepeatFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeatOrBuilder getBlockrepeatOrBuilder() {
                if (blockrepeatBuilder_ != null) {
                    return blockrepeatBuilder_.getMessageOrBuilder();
                } else {
                    return blockrepeat_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.getDefaultInstance() : blockrepeat_;
                }
            }
            /**
             * <pre>
             * 是否屏蔽重复弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat blockrepeat = 11;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeatOrBuilder>
            getBlockrepeatFieldBuilder() {
                if (blockrepeatBuilder_ == null) {
                    blockrepeatBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeatOrBuilder>(
                            getBlockrepeat(),
                            getParentForChildren(),
                            isClean());
                    blockrepeat_ = null;
                }
                return blockrepeatBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial blockspecial_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecialOrBuilder> blockspecialBuilder_;
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             * @return Whether the blockspecial field is set.
             */
            public boolean hasBlockspecial() {
                return blockspecialBuilder_ != null || blockspecial_ != null;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             * @return The blockspecial.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial getBlockspecial() {
                if (blockspecialBuilder_ == null) {
                    return blockspecial_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.getDefaultInstance() : blockspecial_;
                } else {
                    return blockspecialBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             */
            public Builder setBlockspecial(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial value) {
                if (blockspecialBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    blockspecial_ = value;
                    onChanged();
                } else {
                    blockspecialBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             */
            public Builder setBlockspecial(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder builderForValue) {
                if (blockspecialBuilder_ == null) {
                    blockspecial_ = builderForValue.build();
                    onChanged();
                } else {
                    blockspecialBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             */
            public Builder mergeBlockspecial(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial value) {
                if (blockspecialBuilder_ == null) {
                    if (blockspecial_ != null) {
                        blockspecial_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.newBuilder(blockspecial_).mergeFrom(value).buildPartial();
                    } else {
                        blockspecial_ = value;
                    }
                    onChanged();
                } else {
                    blockspecialBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             */
            public Builder clearBlockspecial() {
                if (blockspecialBuilder_ == null) {
                    blockspecial_ = null;
                    onChanged();
                } else {
                    blockspecial_ = null;
                    blockspecialBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder getBlockspecialBuilder() {

                onChanged();
                return getBlockspecialFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecialOrBuilder getBlockspecialOrBuilder() {
                if (blockspecialBuilder_ != null) {
                    return blockspecialBuilder_.getMessageOrBuilder();
                } else {
                    return blockspecial_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.getDefaultInstance() : blockspecial_;
                }
            }
            /**
             * <pre>
             * 是否屏蔽高级弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial blockspecial = 12;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecialOrBuilder>
            getBlockspecialFieldBuilder() {
                if (blockspecialBuilder_ == null) {
                    blockspecialBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecialOrBuilder>(
                            getBlockspecial(),
                            getParentForChildren(),
                            isClean());
                    blockspecial_ = null;
                }
                return blockspecialBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity opacity_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacityOrBuilder> opacityBuilder_;
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             * @return Whether the opacity field is set.
             */
            public boolean hasOpacity() {
                return opacityBuilder_ != null || opacity_ != null;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             * @return The opacity.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity getOpacity() {
                if (opacityBuilder_ == null) {
                    return opacity_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.getDefaultInstance() : opacity_;
                } else {
                    return opacityBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             */
            public Builder setOpacity(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity value) {
                if (opacityBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    opacity_ = value;
                    onChanged();
                } else {
                    opacityBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             */
            public Builder setOpacity(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder builderForValue) {
                if (opacityBuilder_ == null) {
                    opacity_ = builderForValue.build();
                    onChanged();
                } else {
                    opacityBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             */
            public Builder mergeOpacity(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity value) {
                if (opacityBuilder_ == null) {
                    if (opacity_ != null) {
                        opacity_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.newBuilder(opacity_).mergeFrom(value).buildPartial();
                    } else {
                        opacity_ = value;
                    }
                    onChanged();
                } else {
                    opacityBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             */
            public Builder clearOpacity() {
                if (opacityBuilder_ == null) {
                    opacity_ = null;
                    onChanged();
                } else {
                    opacity_ = null;
                    opacityBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder getOpacityBuilder() {

                onChanged();
                return getOpacityFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacityOrBuilder getOpacityOrBuilder() {
                if (opacityBuilder_ != null) {
                    return opacityBuilder_.getMessageOrBuilder();
                } else {
                    return opacity_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.getDefaultInstance() : opacity_;
                }
            }
            /**
             * <pre>
             * 弹幕不透明度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuOpacity opacity = 13;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacityOrBuilder>
            getOpacityFieldBuilder() {
                if (opacityBuilder_ == null) {
                    opacityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacityOrBuilder>(
                            getOpacity(),
                            getParentForChildren(),
                            isClean());
                    opacity_ = null;
                }
                return opacityBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor scalingfactor_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactorOrBuilder> scalingfactorBuilder_;
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             * @return Whether the scalingfactor field is set.
             */
            public boolean hasScalingfactor() {
                return scalingfactorBuilder_ != null || scalingfactor_ != null;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             * @return The scalingfactor.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor getScalingfactor() {
                if (scalingfactorBuilder_ == null) {
                    return scalingfactor_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.getDefaultInstance() : scalingfactor_;
                } else {
                    return scalingfactorBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             */
            public Builder setScalingfactor(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor value) {
                if (scalingfactorBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    scalingfactor_ = value;
                    onChanged();
                } else {
                    scalingfactorBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             */
            public Builder setScalingfactor(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder builderForValue) {
                if (scalingfactorBuilder_ == null) {
                    scalingfactor_ = builderForValue.build();
                    onChanged();
                } else {
                    scalingfactorBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             */
            public Builder mergeScalingfactor(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor value) {
                if (scalingfactorBuilder_ == null) {
                    if (scalingfactor_ != null) {
                        scalingfactor_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.newBuilder(scalingfactor_).mergeFrom(value).buildPartial();
                    } else {
                        scalingfactor_ = value;
                    }
                    onChanged();
                } else {
                    scalingfactorBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             */
            public Builder clearScalingfactor() {
                if (scalingfactorBuilder_ == null) {
                    scalingfactor_ = null;
                    onChanged();
                } else {
                    scalingfactor_ = null;
                    scalingfactorBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder getScalingfactorBuilder() {

                onChanged();
                return getScalingfactorFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactorOrBuilder getScalingfactorOrBuilder() {
                if (scalingfactorBuilder_ != null) {
                    return scalingfactorBuilder_.getMessageOrBuilder();
                } else {
                    return scalingfactor_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.getDefaultInstance() : scalingfactor_;
                }
            }
            /**
             * <pre>
             * 弹幕缩放比例
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor scalingfactor = 14;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactorOrBuilder>
            getScalingfactorFieldBuilder() {
                if (scalingfactorBuilder_ == null) {
                    scalingfactorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactorOrBuilder>(
                            getScalingfactor(),
                            getParentForChildren(),
                            isClean());
                    scalingfactor_ = null;
                }
                return scalingfactorBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain domain_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomainOrBuilder> domainBuilder_;
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             * @return Whether the domain field is set.
             */
            public boolean hasDomain() {
                return domainBuilder_ != null || domain_ != null;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             * @return The domain.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain getDomain() {
                if (domainBuilder_ == null) {
                    return domain_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.getDefaultInstance() : domain_;
                } else {
                    return domainBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             */
            public Builder setDomain(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain value) {
                if (domainBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    domain_ = value;
                    onChanged();
                } else {
                    domainBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             */
            public Builder setDomain(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder builderForValue) {
                if (domainBuilder_ == null) {
                    domain_ = builderForValue.build();
                    onChanged();
                } else {
                    domainBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             */
            public Builder mergeDomain(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain value) {
                if (domainBuilder_ == null) {
                    if (domain_ != null) {
                        domain_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.newBuilder(domain_).mergeFrom(value).buildPartial();
                    } else {
                        domain_ = value;
                    }
                    onChanged();
                } else {
                    domainBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             */
            public Builder clearDomain() {
                if (domainBuilder_ == null) {
                    domain_ = null;
                    onChanged();
                } else {
                    domain_ = null;
                    domainBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder getDomainBuilder() {

                onChanged();
                return getDomainFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomainOrBuilder getDomainOrBuilder() {
                if (domainBuilder_ != null) {
                    return domainBuilder_.getMessageOrBuilder();
                } else {
                    return domain_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.getDefaultInstance() : domain_;
                }
            }
            /**
             * <pre>
             * 弹幕显示区域
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuDomain domain = 15;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomainOrBuilder>
            getDomainFieldBuilder() {
                if (domainBuilder_ == null) {
                    domainBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomainOrBuilder>(
                            getDomain(),
                            getParentForChildren(),
                            isClean());
                    domain_ = null;
                }
                return domainBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed speed_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeedOrBuilder> speedBuilder_;
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             * @return Whether the speed field is set.
             */
            public boolean hasSpeed() {
                return speedBuilder_ != null || speed_ != null;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             * @return The speed.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed getSpeed() {
                if (speedBuilder_ == null) {
                    return speed_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.getDefaultInstance() : speed_;
                } else {
                    return speedBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             */
            public Builder setSpeed(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed value) {
                if (speedBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    speed_ = value;
                    onChanged();
                } else {
                    speedBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             */
            public Builder setSpeed(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder builderForValue) {
                if (speedBuilder_ == null) {
                    speed_ = builderForValue.build();
                    onChanged();
                } else {
                    speedBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             */
            public Builder mergeSpeed(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed value) {
                if (speedBuilder_ == null) {
                    if (speed_ != null) {
                        speed_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.newBuilder(speed_).mergeFrom(value).buildPartial();
                    } else {
                        speed_ = value;
                    }
                    onChanged();
                } else {
                    speedBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             */
            public Builder clearSpeed() {
                if (speedBuilder_ == null) {
                    speed_ = null;
                    onChanged();
                } else {
                    speed_ = null;
                    speedBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder getSpeedBuilder() {

                onChanged();
                return getSpeedFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeedOrBuilder getSpeedOrBuilder() {
                if (speedBuilder_ != null) {
                    return speedBuilder_.getMessageOrBuilder();
                } else {
                    return speed_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.getDefaultInstance() : speed_;
                }
            }
            /**
             * <pre>
             * 弹幕速度
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSpeed speed = 16;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeedOrBuilder>
            getSpeedFieldBuilder() {
                if (speedBuilder_ == null) {
                    speedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeedOrBuilder>(
                            getSpeed(),
                            getParentForChildren(),
                            isClean());
                    speed_ = null;
                }
                return speedBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist enableblocklist_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklistOrBuilder> enableblocklistBuilder_;
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             * @return Whether the enableblocklist field is set.
             */
            public boolean hasEnableblocklist() {
                return enableblocklistBuilder_ != null || enableblocklist_ != null;
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             * @return The enableblocklist.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist getEnableblocklist() {
                if (enableblocklistBuilder_ == null) {
                    return enableblocklist_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.getDefaultInstance() : enableblocklist_;
                } else {
                    return enableblocklistBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             */
            public Builder setEnableblocklist(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist value) {
                if (enableblocklistBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    enableblocklist_ = value;
                    onChanged();
                } else {
                    enableblocklistBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             */
            public Builder setEnableblocklist(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder builderForValue) {
                if (enableblocklistBuilder_ == null) {
                    enableblocklist_ = builderForValue.build();
                    onChanged();
                } else {
                    enableblocklistBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             */
            public Builder mergeEnableblocklist(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist value) {
                if (enableblocklistBuilder_ == null) {
                    if (enableblocklist_ != null) {
                        enableblocklist_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.newBuilder(enableblocklist_).mergeFrom(value).buildPartial();
                    } else {
                        enableblocklist_ = value;
                    }
                    onChanged();
                } else {
                    enableblocklistBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             */
            public Builder clearEnableblocklist() {
                if (enableblocklistBuilder_ == null) {
                    enableblocklist_ = null;
                    onChanged();
                } else {
                    enableblocklist_ = null;
                    enableblocklistBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder getEnableblocklistBuilder() {

                onChanged();
                return getEnableblocklistFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklistOrBuilder getEnableblocklistOrBuilder() {
                if (enableblocklistBuilder_ != null) {
                    return enableblocklistBuilder_.getMessageOrBuilder();
                } else {
                    return enableblocklist_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.getDefaultInstance() : enableblocklist_;
                }
            }
            /**
             * <pre>
             * 是否开启屏蔽列表
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist enableblocklist = 17;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklistOrBuilder>
            getEnableblocklistFieldBuilder() {
                if (enableblocklistBuilder_ == null) {
                    enableblocklistBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklistOrBuilder>(
                            getEnableblocklist(),
                            getParentForChildren(),
                            isClean());
                    enableblocklist_ = null;
                }
                return enableblocklistBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitchOrBuilder> inlinePlayerDanmakuSwitchBuilder_;
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             * @return Whether the inlinePlayerDanmakuSwitch field is set.
             */
            public boolean hasInlinePlayerDanmakuSwitch() {
                return inlinePlayerDanmakuSwitchBuilder_ != null || inlinePlayerDanmakuSwitch_ != null;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             * @return The inlinePlayerDanmakuSwitch.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch getInlinePlayerDanmakuSwitch() {
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    return inlinePlayerDanmakuSwitch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.getDefaultInstance() : inlinePlayerDanmakuSwitch_;
                } else {
                    return inlinePlayerDanmakuSwitchBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             */
            public Builder setInlinePlayerDanmakuSwitch(com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch value) {
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    inlinePlayerDanmakuSwitch_ = value;
                    onChanged();
                } else {
                    inlinePlayerDanmakuSwitchBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             */
            public Builder setInlinePlayerDanmakuSwitch(
                    com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder builderForValue) {
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    inlinePlayerDanmakuSwitch_ = builderForValue.build();
                    onChanged();
                } else {
                    inlinePlayerDanmakuSwitchBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             */
            public Builder mergeInlinePlayerDanmakuSwitch(com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch value) {
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    if (inlinePlayerDanmakuSwitch_ != null) {
                        inlinePlayerDanmakuSwitch_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.newBuilder(inlinePlayerDanmakuSwitch_).mergeFrom(value).buildPartial();
                    } else {
                        inlinePlayerDanmakuSwitch_ = value;
                    }
                    onChanged();
                } else {
                    inlinePlayerDanmakuSwitchBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             */
            public Builder clearInlinePlayerDanmakuSwitch() {
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    inlinePlayerDanmakuSwitch_ = null;
                    onChanged();
                } else {
                    inlinePlayerDanmakuSwitch_ = null;
                    inlinePlayerDanmakuSwitchBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder getInlinePlayerDanmakuSwitchBuilder() {

                onChanged();
                return getInlinePlayerDanmakuSwitchFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitchOrBuilder getInlinePlayerDanmakuSwitchOrBuilder() {
                if (inlinePlayerDanmakuSwitchBuilder_ != null) {
                    return inlinePlayerDanmakuSwitchBuilder_.getMessageOrBuilder();
                } else {
                    return inlinePlayerDanmakuSwitch_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.getDefaultInstance() : inlinePlayerDanmakuSwitch_;
                }
            }
            /**
             * <pre>
             * 是否开启弹幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch inlinePlayerDanmakuSwitch = 18;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitchOrBuilder>
            getInlinePlayerDanmakuSwitchFieldBuilder() {
                if (inlinePlayerDanmakuSwitchBuilder_ == null) {
                    inlinePlayerDanmakuSwitchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitchOrBuilder>(
                            getInlinePlayerDanmakuSwitch(),
                            getParentForChildren(),
                            isClean());
                    inlinePlayerDanmakuSwitch_ = null;
                }
                return inlinePlayerDanmakuSwitchBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch seniorModeSwitch_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitchOrBuilder> seniorModeSwitchBuilder_;
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             * @return Whether the seniorModeSwitch field is set.
             */
            public boolean hasSeniorModeSwitch() {
                return seniorModeSwitchBuilder_ != null || seniorModeSwitch_ != null;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             * @return The seniorModeSwitch.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch getSeniorModeSwitch() {
                if (seniorModeSwitchBuilder_ == null) {
                    return seniorModeSwitch_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.getDefaultInstance() : seniorModeSwitch_;
                } else {
                    return seniorModeSwitchBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             */
            public Builder setSeniorModeSwitch(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch value) {
                if (seniorModeSwitchBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    seniorModeSwitch_ = value;
                    onChanged();
                } else {
                    seniorModeSwitchBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             */
            public Builder setSeniorModeSwitch(
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder builderForValue) {
                if (seniorModeSwitchBuilder_ == null) {
                    seniorModeSwitch_ = builderForValue.build();
                    onChanged();
                } else {
                    seniorModeSwitchBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             */
            public Builder mergeSeniorModeSwitch(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch value) {
                if (seniorModeSwitchBuilder_ == null) {
                    if (seniorModeSwitch_ != null) {
                        seniorModeSwitch_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.newBuilder(seniorModeSwitch_).mergeFrom(value).buildPartial();
                    } else {
                        seniorModeSwitch_ = value;
                    }
                    onChanged();
                } else {
                    seniorModeSwitchBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             */
            public Builder clearSeniorModeSwitch() {
                if (seniorModeSwitchBuilder_ == null) {
                    seniorModeSwitch_ = null;
                    onChanged();
                } else {
                    seniorModeSwitch_ = null;
                    seniorModeSwitchBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder getSeniorModeSwitchBuilder() {

                onChanged();
                return getSeniorModeSwitchFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitchOrBuilder getSeniorModeSwitchOrBuilder() {
                if (seniorModeSwitchBuilder_ != null) {
                    return seniorModeSwitchBuilder_.getMessageOrBuilder();
                } else {
                    return seniorModeSwitch_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.getDefaultInstance() : seniorModeSwitch_;
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch senior_mode_switch = 19;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitchOrBuilder>
            getSeniorModeSwitchFieldBuilder() {
                if (seniorModeSwitchBuilder_ == null) {
                    seniorModeSwitchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitchOrBuilder>(
                            getSeniorModeSwitch(),
                            getParentForChildren(),
                            isClean());
                    seniorModeSwitch_ = null;
                }
                return seniorModeSwitchBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.DmPlayerConfigReq)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmPlayerConfigReq)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmPlayerConfigReq getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmSegConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmSegConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 page_size = 1;</code>
         * @return The pageSize.
         */
        long getPageSize();

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 total = 2;</code>
         * @return The total.
         */
        long getTotal();
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegConfig}
     */
    public static final class DmSegConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmSegConfig)
            DmSegConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmSegConfig.newBuilder() to construct.
        private DmSegConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmSegConfig() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmSegConfig(
                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: {

                            pageSize_ = input.readInt64();
                            break;
                        }
                        case 16: {

                            total_ = input.readInt64();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder.class);
        }

        public static final int PAGE_SIZE_FIELD_NUMBER = 1;
        private long pageSize_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 page_size = 1;</code>
         * @return The pageSize.
         */
        @java.lang.Override
        public long getPageSize() {
            return pageSize_;
        }

        public static final int TOTAL_FIELD_NUMBER = 2;
        private long total_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 total = 2;</code>
         * @return The total.
         */
        @java.lang.Override
        public long getTotal() {
            return total_;
        }

        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 (pageSize_ != 0L) {
                output.writeInt64(1, pageSize_);
            }
            if (total_ != 0L) {
                output.writeInt64(2, total_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (pageSize_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, pageSize_);
            }
            if (total_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, total_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig) obj;

            if (getPageSize()
                    != other.getPageSize()) return false;
            if (getTotal()
                    != other.getTotal()) 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) + PAGE_SIZE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getPageSize());
            hash = (37 * hash) + TOTAL_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getTotal());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmSegConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.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();
                pageSize_ = 0L;

                total_ = 0L;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig(this);
                result.pageSize_ = pageSize_;
                result.total_ = total_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.getDefaultInstance()) return this;
                if (other.getPageSize() != 0L) {
                    setPageSize(other.getPageSize());
                }
                if (other.getTotal() != 0L) {
                    setTotal(other.getTotal());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long pageSize_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 page_size = 1;</code>
             * @return The pageSize.
             */
            @java.lang.Override
            public long getPageSize() {
                return pageSize_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 page_size = 1;</code>
             * @param value The pageSize to set.
             * @return This builder for chaining.
             */
            public Builder setPageSize(long value) {

                pageSize_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 page_size = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPageSize() {

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

            private long total_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 total = 2;</code>
             * @return The total.
             */
            @java.lang.Override
            public long getTotal() {
                return total_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 total = 2;</code>
             * @param value The total to set.
             * @return This builder for chaining.
             */
            public Builder setTotal(long value) {

                total_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 total = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearTotal() {

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

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


            // @@protoc_insertion_point(builder_scope:com.yutou.qqbot.bilibili.DmSegConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmSegConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmSegMobileReplyOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmSegMobileReply)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>
        getElemsList();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getElems(int index);
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        int getElemsCount();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder>
        getElemsOrBuilderList();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder getElemsOrBuilder(
                int index);

        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>int32 state = 2;</code>
         * @return The state.
         */
        int getState();

        /**
         * <pre>
         * 弹幕云屏蔽ai评分值
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
         * @return Whether the aiFlag field is set.
         */
        boolean hasAiFlag();
        /**
         * <pre>
         * 弹幕云屏蔽ai评分值
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
         * @return The aiFlag.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag getAiFlag();
        /**
         * <pre>
         * 弹幕云屏蔽ai评分值
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlagOrBuilder getAiFlagOrBuilder();
    }
    /**
     * <pre>
     * 获取弹幕-响应
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegMobileReply}
     */
    public static final class DmSegMobileReply extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmSegMobileReply)
            DmSegMobileReplyOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmSegMobileReply.newBuilder() to construct.
        private DmSegMobileReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmSegMobileReply() {
            elems_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmSegMobileReply(
                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<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            elems_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.parser(), extensionRegistry));
                            break;
                        }
                        case 16: {

                            state_ = input.readInt32();
                            break;
                        }
                        case 26: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder subBuilder = null;
                            if (aiFlag_ != null) {
                                subBuilder = aiFlag_.toBuilder();
                            }
                            aiFlag_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(aiFlag_);
                                aiFlag_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply.Builder.class);
        }

        public static final int ELEMS_FIELD_NUMBER = 1;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> elems_;
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> getElemsList() {
            return elems_;
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder>
        getElemsOrBuilderList() {
            return elems_;
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        @java.lang.Override
        public int getElemsCount() {
            return elems_.size();
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getElems(int index) {
            return elems_.get(index);
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder getElemsOrBuilder(
                int index) {
            return elems_.get(index);
        }

        public static final int STATE_FIELD_NUMBER = 2;
        private int state_;
        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>int32 state = 2;</code>
         * @return The state.
         */
        @java.lang.Override
        public int getState() {
            return state_;
        }

        public static final int AI_FLAG_FIELD_NUMBER = 3;
        private com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag aiFlag_;
        /**
         * <pre>
         * 弹幕云屏蔽ai评分值
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
         * @return Whether the aiFlag field is set.
         */
        @java.lang.Override
        public boolean hasAiFlag() {
            return aiFlag_ != null;
        }
        /**
         * <pre>
         * 弹幕云屏蔽ai评分值
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
         * @return The aiFlag.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag getAiFlag() {
            return aiFlag_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.getDefaultInstance() : aiFlag_;
        }
        /**
         * <pre>
         * 弹幕云屏蔽ai评分值
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlagOrBuilder getAiFlagOrBuilder() {
            return getAiFlag();
        }

        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));
            }
            if (state_ != 0) {
                output.writeInt32(2, state_);
            }
            if (aiFlag_ != null) {
                output.writeMessage(3, getAiFlag());
            }
            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));
            }
            if (state_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(2, state_);
            }
            if (aiFlag_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(3, getAiFlag());
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply other = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply) obj;

            if (!getElemsList()
                    .equals(other.getElemsList())) return false;
            if (getState()
                    != other.getState()) return false;
            if (hasAiFlag() != other.hasAiFlag()) return false;
            if (hasAiFlag()) {
                if (!getAiFlag()
                        .equals(other.getAiFlag())) 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 = (37 * hash) + STATE_FIELD_NUMBER;
            hash = (53 * hash) + getState();
            if (hasAiFlag()) {
                hash = (37 * hash) + AI_FLAG_FIELD_NUMBER;
                hash = (53 * hash) + getAiFlag().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 获取弹幕-响应
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegMobileReply}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmSegMobileReply)
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReplyOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply.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();
                }
                state_ = 0;

                if (aiFlagBuilder_ == null) {
                    aiFlag_ = null;
                } else {
                    aiFlag_ = null;
                    aiFlagBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply result = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply(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();
                }
                result.state_ = state_;
                if (aiFlagBuilder_ == null) {
                    result.aiFlag_ = aiFlag_;
                } else {
                    result.aiFlag_ = aiFlagBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply.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_);
                        }
                    }
                }
                if (other.getState() != 0) {
                    setState(other.getState());
                }
                if (other.hasAiFlag()) {
                    mergeAiFlag(other.getAiFlag());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> elems_ =
                    java.util.Collections.emptyList();
            private void ensureElemsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    elems_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>(elems_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder> elemsBuilder_;

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

            private int state_ ;
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>int32 state = 2;</code>
             * @return The state.
             */
            @java.lang.Override
            public int getState() {
                return state_;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>int32 state = 2;</code>
             * @param value The state to set.
             * @return This builder for chaining.
             */
            public Builder setState(int value) {

                state_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>int32 state = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearState() {

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

            private com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag aiFlag_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlagOrBuilder> aiFlagBuilder_;
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             * @return Whether the aiFlag field is set.
             */
            public boolean hasAiFlag() {
                return aiFlagBuilder_ != null || aiFlag_ != null;
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             * @return The aiFlag.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag getAiFlag() {
                if (aiFlagBuilder_ == null) {
                    return aiFlag_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.getDefaultInstance() : aiFlag_;
                } else {
                    return aiFlagBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             */
            public Builder setAiFlag(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag value) {
                if (aiFlagBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    aiFlag_ = value;
                    onChanged();
                } else {
                    aiFlagBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             */
            public Builder setAiFlag(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder builderForValue) {
                if (aiFlagBuilder_ == null) {
                    aiFlag_ = builderForValue.build();
                    onChanged();
                } else {
                    aiFlagBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             */
            public Builder mergeAiFlag(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag value) {
                if (aiFlagBuilder_ == null) {
                    if (aiFlag_ != null) {
                        aiFlag_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.newBuilder(aiFlag_).mergeFrom(value).buildPartial();
                    } else {
                        aiFlag_ = value;
                    }
                    onChanged();
                } else {
                    aiFlagBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             */
            public Builder clearAiFlag() {
                if (aiFlagBuilder_ == null) {
                    aiFlag_ = null;
                    onChanged();
                } else {
                    aiFlag_ = null;
                    aiFlagBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder getAiFlagBuilder() {

                onChanged();
                return getAiFlagFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlagOrBuilder getAiFlagOrBuilder() {
                if (aiFlagBuilder_ != null) {
                    return aiFlagBuilder_.getMessageOrBuilder();
                } else {
                    return aiFlag_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.getDefaultInstance() : aiFlag_;
                }
            }
            /**
             * <pre>
             * 弹幕云屏蔽ai评分值
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuAIFlag ai_flag = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlagOrBuilder>
            getAiFlagFieldBuilder() {
                if (aiFlagBuilder_ == null) {
                    aiFlagBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlag.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuAIFlagOrBuilder>(
                            getAiFlag(),
                            getParentForChildren(),
                            isClean());
                    aiFlag_ = null;
                }
                return aiFlagBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.DmSegMobileReply)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmSegMobileReply)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReply getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmSegMobileReqOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmSegMobileReq)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        long getPid();

        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        long getOid();

        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        int getType();

        /**
         * <pre>
         * 分段(6min)
         * </pre>
         *
         * <code>int64 segment_index = 4;</code>
         * @return The segmentIndex.
         */
        long getSegmentIndex();

        /**
         * <pre>
         * 是否青少年模式
         * </pre>
         *
         * <code>int32 teenagers_mode = 5;</code>
         * @return The teenagersMode.
         */
        int getTeenagersMode();
    }
    /**
     * <pre>
     * 获取弹幕-请求
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegMobileReq}
     */
    public static final class DmSegMobileReq extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmSegMobileReq)
            DmSegMobileReqOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmSegMobileReq.newBuilder() to construct.
        private DmSegMobileReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmSegMobileReq() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmSegMobileReq(
                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: {

                            pid_ = input.readInt64();
                            break;
                        }
                        case 16: {

                            oid_ = input.readInt64();
                            break;
                        }
                        case 24: {

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

                            segmentIndex_ = input.readInt64();
                            break;
                        }
                        case 40: {

                            teenagersMode_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq.Builder.class);
        }

        public static final int PID_FIELD_NUMBER = 1;
        private long pid_;
        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        @java.lang.Override
        public long getPid() {
            return pid_;
        }

        public static final int OID_FIELD_NUMBER = 2;
        private long oid_;
        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        @java.lang.Override
        public long getOid() {
            return oid_;
        }

        public static final int TYPE_FIELD_NUMBER = 3;
        private int type_;
        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        @java.lang.Override
        public int getType() {
            return type_;
        }

        public static final int SEGMENT_INDEX_FIELD_NUMBER = 4;
        private long segmentIndex_;
        /**
         * <pre>
         * 分段(6min)
         * </pre>
         *
         * <code>int64 segment_index = 4;</code>
         * @return The segmentIndex.
         */
        @java.lang.Override
        public long getSegmentIndex() {
            return segmentIndex_;
        }

        public static final int TEENAGERS_MODE_FIELD_NUMBER = 5;
        private int teenagersMode_;
        /**
         * <pre>
         * 是否青少年模式
         * </pre>
         *
         * <code>int32 teenagers_mode = 5;</code>
         * @return The teenagersMode.
         */
        @java.lang.Override
        public int getTeenagersMode() {
            return teenagersMode_;
        }

        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 (pid_ != 0L) {
                output.writeInt64(1, pid_);
            }
            if (oid_ != 0L) {
                output.writeInt64(2, oid_);
            }
            if (type_ != 0) {
                output.writeInt32(3, type_);
            }
            if (segmentIndex_ != 0L) {
                output.writeInt64(4, segmentIndex_);
            }
            if (teenagersMode_ != 0) {
                output.writeInt32(5, teenagersMode_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (pid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, pid_);
            }
            if (oid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, oid_);
            }
            if (type_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, type_);
            }
            if (segmentIndex_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(4, segmentIndex_);
            }
            if (teenagersMode_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(5, teenagersMode_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq other = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq) obj;

            if (getPid()
                    != other.getPid()) return false;
            if (getOid()
                    != other.getOid()) return false;
            if (getType()
                    != other.getType()) return false;
            if (getSegmentIndex()
                    != other.getSegmentIndex()) return false;
            if (getTeenagersMode()
                    != other.getTeenagersMode()) 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) + PID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getPid());
            hash = (37 * hash) + OID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getOid());
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getType();
            hash = (37 * hash) + SEGMENT_INDEX_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getSegmentIndex());
            hash = (37 * hash) + TEENAGERS_MODE_FIELD_NUMBER;
            hash = (53 * hash) + getTeenagersMode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 获取弹幕-请求
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegMobileReq}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmSegMobileReq)
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReqOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq.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();
                pid_ = 0L;

                oid_ = 0L;

                type_ = 0;

                segmentIndex_ = 0L;

                teenagersMode_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq result = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq(this);
                result.pid_ = pid_;
                result.oid_ = oid_;
                result.type_ = type_;
                result.segmentIndex_ = segmentIndex_;
                result.teenagersMode_ = teenagersMode_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq.getDefaultInstance()) return this;
                if (other.getPid() != 0L) {
                    setPid(other.getPid());
                }
                if (other.getOid() != 0L) {
                    setOid(other.getOid());
                }
                if (other.getType() != 0) {
                    setType(other.getType());
                }
                if (other.getSegmentIndex() != 0L) {
                    setSegmentIndex(other.getSegmentIndex());
                }
                if (other.getTeenagersMode() != 0) {
                    setTeenagersMode(other.getTeenagersMode());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long pid_ ;
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return The pid.
             */
            @java.lang.Override
            public long getPid() {
                return pid_;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @param value The pid to set.
             * @return This builder for chaining.
             */
            public Builder setPid(long value) {

                pid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPid() {

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

            private long oid_ ;
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return The oid.
             */
            @java.lang.Override
            public long getOid() {
                return oid_;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @param value The oid to set.
             * @return This builder for chaining.
             */
            public Builder setOid(long value) {

                oid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOid() {

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

            private int type_ ;
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return The type.
             */
            @java.lang.Override
            public int getType() {
                return type_;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <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;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {

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

            private long segmentIndex_ ;
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @return The segmentIndex.
             */
            @java.lang.Override
            public long getSegmentIndex() {
                return segmentIndex_;
            }
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @param value The segmentIndex to set.
             * @return This builder for chaining.
             */
            public Builder setSegmentIndex(long value) {

                segmentIndex_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearSegmentIndex() {

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

            private int teenagersMode_ ;
            /**
             * <pre>
             * 是否青少年模式
             * </pre>
             *
             * <code>int32 teenagers_mode = 5;</code>
             * @return The teenagersMode.
             */
            @java.lang.Override
            public int getTeenagersMode() {
                return teenagersMode_;
            }
            /**
             * <pre>
             * 是否青少年模式
             * </pre>
             *
             * <code>int32 teenagers_mode = 5;</code>
             * @param value The teenagersMode to set.
             * @return This builder for chaining.
             */
            public Builder setTeenagersMode(int value) {

                teenagersMode_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否青少年模式
             * </pre>
             *
             * <code>int32 teenagers_mode = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearTeenagersMode() {

                teenagersMode_ = 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:com.yutou.qqbot.bilibili.DmSegMobileReq)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmSegMobileReq)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegMobileReq getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmSegOttReplyOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmSegOttReply)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>bool closed = 1;</code>
         * @return The closed.
         */
        boolean getClosed();

        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>
        getElemsList();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getElems(int index);
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        int getElemsCount();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder>
        getElemsOrBuilderList();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder getElemsOrBuilder(
                int index);
    }
    /**
     * <pre>
     * ott弹幕列表-响应
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegOttReply}
     */
    public static final class DmSegOttReply extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmSegOttReply)
            DmSegOttReplyOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmSegOttReply.newBuilder() to construct.
        private DmSegOttReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmSegOttReply() {
            elems_ = java.util.Collections.emptyList();
        }

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

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

                            closed_ = input.readBool();
                            break;
                        }
                        case 18: {
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                elems_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            elems_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply.Builder.class);
        }

        public static final int CLOSED_FIELD_NUMBER = 1;
        private boolean closed_;
        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>bool closed = 1;</code>
         * @return The closed.
         */
        @java.lang.Override
        public boolean getClosed() {
            return closed_;
        }

        public static final int ELEMS_FIELD_NUMBER = 2;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> elems_;
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> getElemsList() {
            return elems_;
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder>
        getElemsOrBuilderList() {
            return elems_;
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public int getElemsCount() {
            return elems_.size();
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getElems(int index) {
            return elems_.get(index);
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder 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 {
            if (closed_ != false) {
                output.writeBool(1, closed_);
            }
            for (int i = 0; i < elems_.size(); i++) {
                output.writeMessage(2, elems_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (closed_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, closed_);
            }
            for (int i = 0; i < elems_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(2, 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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply other = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply) obj;

            if (getClosed()
                    != other.getClosed()) return false;
            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();
            hash = (37 * hash) + CLOSED_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getClosed());
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * ott弹幕列表-响应
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegOttReply}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmSegOttReply)
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReplyOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply.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();
                closed_ = false;

                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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply result = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply(this);
                int from_bitField0_ = bitField0_;
                result.closed_ = closed_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply.getDefaultInstance()) return this;
                if (other.getClosed() != false) {
                    setClosed(other.getClosed());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private boolean closed_ ;
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @return The closed.
             */
            @java.lang.Override
            public boolean getClosed() {
                return closed_;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @param value The closed to set.
             * @return This builder for chaining.
             */
            public Builder setClosed(boolean value) {

                closed_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearClosed() {

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

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> elems_ =
                    java.util.Collections.emptyList();
            private void ensureElemsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    elems_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>(elems_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder> elemsBuilder_;

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

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmSegOttReply)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReply getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmSegOttReqOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmSegOttReq)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        long getPid();

        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        long getOid();

        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        int getType();

        /**
         * <pre>
         * 分段(6min)
         * </pre>
         *
         * <code>int64 segment_index = 4;</code>
         * @return The segmentIndex.
         */
        long getSegmentIndex();
    }
    /**
     * <pre>
     * ott弹幕列表-请求
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegOttReq}
     */
    public static final class DmSegOttReq extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmSegOttReq)
            DmSegOttReqOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmSegOttReq.newBuilder() to construct.
        private DmSegOttReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmSegOttReq() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmSegOttReq(
                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: {

                            pid_ = input.readInt64();
                            break;
                        }
                        case 16: {

                            oid_ = input.readInt64();
                            break;
                        }
                        case 24: {

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

                            segmentIndex_ = input.readInt64();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq.Builder.class);
        }

        public static final int PID_FIELD_NUMBER = 1;
        private long pid_;
        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        @java.lang.Override
        public long getPid() {
            return pid_;
        }

        public static final int OID_FIELD_NUMBER = 2;
        private long oid_;
        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        @java.lang.Override
        public long getOid() {
            return oid_;
        }

        public static final int TYPE_FIELD_NUMBER = 3;
        private int type_;
        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        @java.lang.Override
        public int getType() {
            return type_;
        }

        public static final int SEGMENT_INDEX_FIELD_NUMBER = 4;
        private long segmentIndex_;
        /**
         * <pre>
         * 分段(6min)
         * </pre>
         *
         * <code>int64 segment_index = 4;</code>
         * @return The segmentIndex.
         */
        @java.lang.Override
        public long getSegmentIndex() {
            return segmentIndex_;
        }

        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 (pid_ != 0L) {
                output.writeInt64(1, pid_);
            }
            if (oid_ != 0L) {
                output.writeInt64(2, oid_);
            }
            if (type_ != 0) {
                output.writeInt32(3, type_);
            }
            if (segmentIndex_ != 0L) {
                output.writeInt64(4, segmentIndex_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (pid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, pid_);
            }
            if (oid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, oid_);
            }
            if (type_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, type_);
            }
            if (segmentIndex_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(4, segmentIndex_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq other = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq) obj;

            if (getPid()
                    != other.getPid()) return false;
            if (getOid()
                    != other.getOid()) return false;
            if (getType()
                    != other.getType()) return false;
            if (getSegmentIndex()
                    != other.getSegmentIndex()) 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) + PID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getPid());
            hash = (37 * hash) + OID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getOid());
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getType();
            hash = (37 * hash) + SEGMENT_INDEX_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getSegmentIndex());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * ott弹幕列表-请求
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegOttReq}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmSegOttReq)
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReqOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq.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();
                pid_ = 0L;

                oid_ = 0L;

                type_ = 0;

                segmentIndex_ = 0L;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq result = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq(this);
                result.pid_ = pid_;
                result.oid_ = oid_;
                result.type_ = type_;
                result.segmentIndex_ = segmentIndex_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq.getDefaultInstance()) return this;
                if (other.getPid() != 0L) {
                    setPid(other.getPid());
                }
                if (other.getOid() != 0L) {
                    setOid(other.getOid());
                }
                if (other.getType() != 0) {
                    setType(other.getType());
                }
                if (other.getSegmentIndex() != 0L) {
                    setSegmentIndex(other.getSegmentIndex());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long pid_ ;
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return The pid.
             */
            @java.lang.Override
            public long getPid() {
                return pid_;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @param value The pid to set.
             * @return This builder for chaining.
             */
            public Builder setPid(long value) {

                pid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPid() {

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

            private long oid_ ;
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return The oid.
             */
            @java.lang.Override
            public long getOid() {
                return oid_;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @param value The oid to set.
             * @return This builder for chaining.
             */
            public Builder setOid(long value) {

                oid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOid() {

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

            private int type_ ;
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return The type.
             */
            @java.lang.Override
            public int getType() {
                return type_;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <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;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {

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

            private long segmentIndex_ ;
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @return The segmentIndex.
             */
            @java.lang.Override
            public long getSegmentIndex() {
                return segmentIndex_;
            }
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @param value The segmentIndex to set.
             * @return This builder for chaining.
             */
            public Builder setSegmentIndex(long value) {

                segmentIndex_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearSegmentIndex() {

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

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


            // @@protoc_insertion_point(builder_scope:com.yutou.qqbot.bilibili.DmSegOttReq)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmSegOttReq)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegOttReq getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmSegSDKReplyOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmSegSDKReply)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>bool closed = 1;</code>
         * @return The closed.
         */
        boolean getClosed();

        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>
        getElemsList();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getElems(int index);
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        int getElemsCount();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder>
        getElemsOrBuilderList();
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder getElemsOrBuilder(
                int index);
    }
    /**
     * <pre>
     * 弹幕SDK-响应
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegSDKReply}
     */
    public static final class DmSegSDKReply extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmSegSDKReply)
            DmSegSDKReplyOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmSegSDKReply.newBuilder() to construct.
        private DmSegSDKReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmSegSDKReply() {
            elems_ = java.util.Collections.emptyList();
        }

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

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

                            closed_ = input.readBool();
                            break;
                        }
                        case 18: {
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                elems_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            elems_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply.Builder.class);
        }

        public static final int CLOSED_FIELD_NUMBER = 1;
        private boolean closed_;
        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>bool closed = 1;</code>
         * @return The closed.
         */
        @java.lang.Override
        public boolean getClosed() {
            return closed_;
        }

        public static final int ELEMS_FIELD_NUMBER = 2;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> elems_;
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> getElemsList() {
            return elems_;
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder>
        getElemsOrBuilderList() {
            return elems_;
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public int getElemsCount() {
            return elems_.size();
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem getElems(int index) {
            return elems_.get(index);
        }
        /**
         * <pre>
         * 弹幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.DanmakuElem elems = 2;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder 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 {
            if (closed_ != false) {
                output.writeBool(1, closed_);
            }
            for (int i = 0; i < elems_.size(); i++) {
                output.writeMessage(2, elems_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (closed_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, closed_);
            }
            for (int i = 0; i < elems_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(2, 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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply other = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply) obj;

            if (getClosed()
                    != other.getClosed()) return false;
            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();
            hash = (37 * hash) + CLOSED_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getClosed());
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕SDK-响应
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegSDKReply}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmSegSDKReply)
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReplyOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply.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();
                closed_ = false;

                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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply result = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply(this);
                int from_bitField0_ = bitField0_;
                result.closed_ = closed_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply.getDefaultInstance()) return this;
                if (other.getClosed() != false) {
                    setClosed(other.getClosed());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private boolean closed_ ;
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @return The closed.
             */
            @java.lang.Override
            public boolean getClosed() {
                return closed_;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @param value The closed to set.
             * @return This builder for chaining.
             */
            public Builder setClosed(boolean value) {

                closed_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearClosed() {

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

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem> elems_ =
                    java.util.Collections.emptyList();
            private void ensureElemsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    elems_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem>(elems_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElem.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuElemOrBuilder> elemsBuilder_;

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

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmSegSDKReply)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReply getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmSegSDKReqOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmSegSDKReq)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        long getPid();

        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        long getOid();

        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        int getType();

        /**
         * <pre>
         * 分段(6min)
         * </pre>
         *
         * <code>int64 segment_index = 4;</code>
         * @return The segmentIndex.
         */
        long getSegmentIndex();
    }
    /**
     * <pre>
     * 弹幕SDK-请求
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegSDKReq}
     */
    public static final class DmSegSDKReq extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmSegSDKReq)
            DmSegSDKReqOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmSegSDKReq.newBuilder() to construct.
        private DmSegSDKReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmSegSDKReq() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmSegSDKReq(
                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: {

                            pid_ = input.readInt64();
                            break;
                        }
                        case 16: {

                            oid_ = input.readInt64();
                            break;
                        }
                        case 24: {

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

                            segmentIndex_ = input.readInt64();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq.Builder.class);
        }

        public static final int PID_FIELD_NUMBER = 1;
        private long pid_;
        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        @java.lang.Override
        public long getPid() {
            return pid_;
        }

        public static final int OID_FIELD_NUMBER = 2;
        private long oid_;
        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        @java.lang.Override
        public long getOid() {
            return oid_;
        }

        public static final int TYPE_FIELD_NUMBER = 3;
        private int type_;
        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        @java.lang.Override
        public int getType() {
            return type_;
        }

        public static final int SEGMENT_INDEX_FIELD_NUMBER = 4;
        private long segmentIndex_;
        /**
         * <pre>
         * 分段(6min)
         * </pre>
         *
         * <code>int64 segment_index = 4;</code>
         * @return The segmentIndex.
         */
        @java.lang.Override
        public long getSegmentIndex() {
            return segmentIndex_;
        }

        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 (pid_ != 0L) {
                output.writeInt64(1, pid_);
            }
            if (oid_ != 0L) {
                output.writeInt64(2, oid_);
            }
            if (type_ != 0) {
                output.writeInt32(3, type_);
            }
            if (segmentIndex_ != 0L) {
                output.writeInt64(4, segmentIndex_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (pid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, pid_);
            }
            if (oid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, oid_);
            }
            if (type_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, type_);
            }
            if (segmentIndex_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(4, segmentIndex_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq other = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq) obj;

            if (getPid()
                    != other.getPid()) return false;
            if (getOid()
                    != other.getOid()) return false;
            if (getType()
                    != other.getType()) return false;
            if (getSegmentIndex()
                    != other.getSegmentIndex()) 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) + PID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getPid());
            hash = (37 * hash) + OID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getOid());
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getType();
            hash = (37 * hash) + SEGMENT_INDEX_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getSegmentIndex());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕SDK-请求
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmSegSDKReq}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmSegSDKReq)
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReqOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq.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();
                pid_ = 0L;

                oid_ = 0L;

                type_ = 0;

                segmentIndex_ = 0L;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq result = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq(this);
                result.pid_ = pid_;
                result.oid_ = oid_;
                result.type_ = type_;
                result.segmentIndex_ = segmentIndex_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq.getDefaultInstance()) return this;
                if (other.getPid() != 0L) {
                    setPid(other.getPid());
                }
                if (other.getOid() != 0L) {
                    setOid(other.getOid());
                }
                if (other.getType() != 0) {
                    setType(other.getType());
                }
                if (other.getSegmentIndex() != 0L) {
                    setSegmentIndex(other.getSegmentIndex());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long pid_ ;
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return The pid.
             */
            @java.lang.Override
            public long getPid() {
                return pid_;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @param value The pid to set.
             * @return This builder for chaining.
             */
            public Builder setPid(long value) {

                pid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPid() {

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

            private long oid_ ;
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return The oid.
             */
            @java.lang.Override
            public long getOid() {
                return oid_;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @param value The oid to set.
             * @return This builder for chaining.
             */
            public Builder setOid(long value) {

                oid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOid() {

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

            private int type_ ;
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return The type.
             */
            @java.lang.Override
            public int getType() {
                return type_;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <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;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {

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

            private long segmentIndex_ ;
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @return The segmentIndex.
             */
            @java.lang.Override
            public long getSegmentIndex() {
                return segmentIndex_;
            }
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @param value The segmentIndex to set.
             * @return This builder for chaining.
             */
            public Builder setSegmentIndex(long value) {

                segmentIndex_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 分段(6min)
             * </pre>
             *
             * <code>int64 segment_index = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearSegmentIndex() {

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

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


            // @@protoc_insertion_point(builder_scope:com.yutou.qqbot.bilibili.DmSegSDKReq)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmSegSDKReq)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegSDKReq getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmViewReplyOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmViewReply)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>bool closed = 1;</code>
         * @return The closed.
         */
        boolean getClosed();

        /**
         * <pre>
         * 智能防挡弹幕蒙版信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
         * @return Whether the mask field is set.
         */
        boolean hasMask();
        /**
         * <pre>
         * 智能防挡弹幕蒙版信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
         * @return The mask.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.VideoMask getMask();
        /**
         * <pre>
         * 智能防挡弹幕蒙版信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.VideoMaskOrBuilder getMaskOrBuilder();

        /**
         * <pre>
         * 视频字幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
         * @return Whether the subtitle field is set.
         */
        boolean hasSubtitle();
        /**
         * <pre>
         * 视频字幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
         * @return The subtitle.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle getSubtitle();
        /**
         * <pre>
         * 视频字幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitleOrBuilder getSubtitleOrBuilder();

        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @return A list containing the specialDms.
         */
        java.util.List<java.lang.String>
        getSpecialDmsList();
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @return The count of specialDms.
         */
        int getSpecialDmsCount();
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @param index The index of the element to return.
         * @return The specialDms at the given index.
         */
        java.lang.String getSpecialDms(int index);
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @param index The index of the value to return.
         * @return The bytes of the specialDms at the given index.
         */
        com.google.protobuf.ByteString
        getSpecialDmsBytes(int index);

        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
         * @return Whether the aiFlag field is set.
         */
        boolean hasAiFlag();
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
         * @return The aiFlag.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getAiFlag();
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder getAiFlagOrBuilder();

        /**
         * <pre>
         * 弹幕配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
         * @return Whether the playerConfig field is set.
         */
        boolean hasPlayerConfig();
        /**
         * <pre>
         * 弹幕配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
         * @return The playerConfig.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig getPlayerConfig();
        /**
         * <pre>
         * 弹幕配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfigOrBuilder getPlayerConfigOrBuilder();

        /**
         * <pre>
         * 弹幕发送框样式
         * </pre>
         *
         * <code>int32 send_box_style = 7;</code>
         * @return The sendBoxStyle.
         */
        int getSendBoxStyle();

        /**
         * <pre>
         * 是否允许
         * </pre>
         *
         * <code>bool allow = 8;</code>
         * @return The allow.
         */
        boolean getAllow();

        /**
         * <pre>
         * check box 是否展示
         * </pre>
         *
         * <code>string check_box = 9;</code>
         * @return The checkBox.
         */
        java.lang.String getCheckBox();
        /**
         * <pre>
         * check box 是否展示
         * </pre>
         *
         * <code>string check_box = 9;</code>
         * @return The bytes for checkBox.
         */
        com.google.protobuf.ByteString
        getCheckBoxBytes();

        /**
         * <pre>
         * check box 展示文本
         * </pre>
         *
         * <code>string check_box_show_msg = 10;</code>
         * @return The checkBoxShowMsg.
         */
        java.lang.String getCheckBoxShowMsg();
        /**
         * <pre>
         * check box 展示文本
         * </pre>
         *
         * <code>string check_box_show_msg = 10;</code>
         * @return The bytes for checkBoxShowMsg.
         */
        com.google.protobuf.ByteString
        getCheckBoxShowMsgBytes();

        /**
         * <pre>
         * 展示文案
         * </pre>
         *
         * <code>string text_placeholder = 11;</code>
         * @return The textPlaceholder.
         */
        java.lang.String getTextPlaceholder();
        /**
         * <pre>
         * 展示文案
         * </pre>
         *
         * <code>string text_placeholder = 11;</code>
         * @return The bytes for textPlaceholder.
         */
        com.google.protobuf.ByteString
        getTextPlaceholderBytes();

        /**
         * <pre>
         * 弹幕输入框文案
         * </pre>
         *
         * <code>string input_placeholder = 12;</code>
         * @return The inputPlaceholder.
         */
        java.lang.String getInputPlaceholder();
        /**
         * <pre>
         * 弹幕输入框文案
         * </pre>
         *
         * <code>string input_placeholder = 12;</code>
         * @return The bytes for inputPlaceholder.
         */
        com.google.protobuf.ByteString
        getInputPlaceholderBytes();

        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @return A list containing the reportFilterContent.
         */
        java.util.List<java.lang.String>
        getReportFilterContentList();
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @return The count of reportFilterContent.
         */
        int getReportFilterContentCount();
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @param index The index of the element to return.
         * @return The reportFilterContent at the given index.
         */
        java.lang.String getReportFilterContent(int index);
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @param index The index of the value to return.
         * @return The bytes of the reportFilterContent at the given index.
         */
        com.google.protobuf.ByteString
        getReportFilterContentBytes(int index);

        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
         * @return Whether the expoReport field is set.
         */
        boolean hasExpoReport();
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
         * @return The expoReport.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport getExpoReport();
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.ExpoReportOrBuilder getExpoReportOrBuilder();

        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
         * @return Whether the buzzwordConfig field is set.
         */
        boolean hasBuzzwordConfig();
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
         * @return The buzzwordConfig.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig getBuzzwordConfig();
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfigOrBuilder getBuzzwordConfigOrBuilder();

        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions>
        getExpressionsList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.Expressions getExpressions(int index);
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        int getExpressionsCount();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
        getExpressionsOrBuilderList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder getExpressionsOrBuilder(
                int index);
    }
    /**
     * <pre>
     * 客户端弹幕元数据-响应
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmViewReply}
     */
    public static final class DmViewReply extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmViewReply)
            DmViewReplyOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmViewReply.newBuilder() to construct.
        private DmViewReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmViewReply() {
            specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            checkBox_ = "";
            checkBoxShowMsg_ = "";
            textPlaceholder_ = "";
            inputPlaceholder_ = "";
            reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            expressions_ = java.util.Collections.emptyList();
        }

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

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

                            closed_ = input.readBool();
                            break;
                        }
                        case 18: {
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder subBuilder = null;
                            if (mask_ != null) {
                                subBuilder = mask_.toBuilder();
                            }
                            mask_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(mask_);
                                mask_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 26: {
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder subBuilder = null;
                            if (subtitle_ != null) {
                                subBuilder = subtitle_.toBuilder();
                            }
                            subtitle_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(subtitle_);
                                subtitle_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 34: {
                            java.lang.String s = input.readStringRequireUtf8();
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                specialDms_ = new com.google.protobuf.LazyStringArrayList();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            specialDms_.add(s);
                            break;
                        }
                        case 42: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder subBuilder = null;
                            if (aiFlag_ != null) {
                                subBuilder = aiFlag_.toBuilder();
                            }
                            aiFlag_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(aiFlag_);
                                aiFlag_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 50: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder subBuilder = null;
                            if (playerConfig_ != null) {
                                subBuilder = playerConfig_.toBuilder();
                            }
                            playerConfig_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(playerConfig_);
                                playerConfig_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 56: {

                            sendBoxStyle_ = input.readInt32();
                            break;
                        }
                        case 64: {

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

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

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

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

                            inputPlaceholder_ = s;
                            break;
                        }
                        case 106: {
                            java.lang.String s = input.readStringRequireUtf8();
                            if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                                reportFilterContent_ = new com.google.protobuf.LazyStringArrayList();
                                mutable_bitField0_ |= 0x00000002;
                            }
                            reportFilterContent_.add(s);
                            break;
                        }
                        case 114: {
                            com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder subBuilder = null;
                            if (expoReport_ != null) {
                                subBuilder = expoReport_.toBuilder();
                            }
                            expoReport_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(expoReport_);
                                expoReport_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 122: {
                            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder subBuilder = null;
                            if (buzzwordConfig_ != null) {
                                subBuilder = buzzwordConfig_.toBuilder();
                            }
                            buzzwordConfig_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(buzzwordConfig_);
                                buzzwordConfig_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 130: {
                            if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                                expressions_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Expressions>();
                                mutable_bitField0_ |= 0x00000004;
                            }
                            expressions_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.Expressions.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    specialDms_ = specialDms_.getUnmodifiableView();
                }
                if (((mutable_bitField0_ & 0x00000002) != 0)) {
                    reportFilterContent_ = reportFilterContent_.getUnmodifiableView();
                }
                if (((mutable_bitField0_ & 0x00000004) != 0)) {
                    expressions_ = java.util.Collections.unmodifiableList(expressions_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReply_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReply_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply.Builder.class);
        }

        public static final int CLOSED_FIELD_NUMBER = 1;
        private boolean closed_;
        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>bool closed = 1;</code>
         * @return The closed.
         */
        @java.lang.Override
        public boolean getClosed() {
            return closed_;
        }

        public static final int MASK_FIELD_NUMBER = 2;
        private com.yutou.qqbot.bilibili.VideoDanMu.VideoMask mask_;
        /**
         * <pre>
         * 智能防挡弹幕蒙版信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
         * @return Whether the mask field is set.
         */
        @java.lang.Override
        public boolean hasMask() {
            return mask_ != null;
        }
        /**
         * <pre>
         * 智能防挡弹幕蒙版信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
         * @return The mask.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.VideoMask getMask() {
            return mask_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.getDefaultInstance() : mask_;
        }
        /**
         * <pre>
         * 智能防挡弹幕蒙版信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.VideoMaskOrBuilder getMaskOrBuilder() {
            return getMask();
        }

        public static final int SUBTITLE_FIELD_NUMBER = 3;
        private com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle subtitle_;
        /**
         * <pre>
         * 视频字幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
         * @return Whether the subtitle field is set.
         */
        @java.lang.Override
        public boolean hasSubtitle() {
            return subtitle_ != null;
        }
        /**
         * <pre>
         * 视频字幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
         * @return The subtitle.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle getSubtitle() {
            return subtitle_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.getDefaultInstance() : subtitle_;
        }
        /**
         * <pre>
         * 视频字幕
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitleOrBuilder getSubtitleOrBuilder() {
            return getSubtitle();
        }

        public static final int SPECIAL_DMS_FIELD_NUMBER = 4;
        private com.google.protobuf.LazyStringList specialDms_;
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @return A list containing the specialDms.
         */
        public com.google.protobuf.ProtocolStringList
        getSpecialDmsList() {
            return specialDms_;
        }
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @return The count of specialDms.
         */
        public int getSpecialDmsCount() {
            return specialDms_.size();
        }
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @param index The index of the element to return.
         * @return The specialDms at the given index.
         */
        public java.lang.String getSpecialDms(int index) {
            return specialDms_.get(index);
        }
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 4;</code>
         * @param index The index of the value to return.
         * @return The bytes of the specialDms at the given index.
         */
        public com.google.protobuf.ByteString
        getSpecialDmsBytes(int index) {
            return specialDms_.getByteString(index);
        }

        public static final int AI_FLAG_FIELD_NUMBER = 5;
        private com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig aiFlag_;
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
         * @return Whether the aiFlag field is set.
         */
        @java.lang.Override
        public boolean hasAiFlag() {
            return aiFlag_ != null;
        }
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
         * @return The aiFlag.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getAiFlag() {
            return aiFlag_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance() : aiFlag_;
        }
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder getAiFlagOrBuilder() {
            return getAiFlag();
        }

        public static final int PLAYER_CONFIG_FIELD_NUMBER = 6;
        private com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig playerConfig_;
        /**
         * <pre>
         * 弹幕配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
         * @return Whether the playerConfig field is set.
         */
        @java.lang.Override
        public boolean hasPlayerConfig() {
            return playerConfig_ != null;
        }
        /**
         * <pre>
         * 弹幕配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
         * @return The playerConfig.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig getPlayerConfig() {
            return playerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.getDefaultInstance() : playerConfig_;
        }
        /**
         * <pre>
         * 弹幕配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfigOrBuilder getPlayerConfigOrBuilder() {
            return getPlayerConfig();
        }

        public static final int SEND_BOX_STYLE_FIELD_NUMBER = 7;
        private int sendBoxStyle_;
        /**
         * <pre>
         * 弹幕发送框样式
         * </pre>
         *
         * <code>int32 send_box_style = 7;</code>
         * @return The sendBoxStyle.
         */
        @java.lang.Override
        public int getSendBoxStyle() {
            return sendBoxStyle_;
        }

        public static final int ALLOW_FIELD_NUMBER = 8;
        private boolean allow_;
        /**
         * <pre>
         * 是否允许
         * </pre>
         *
         * <code>bool allow = 8;</code>
         * @return The allow.
         */
        @java.lang.Override
        public boolean getAllow() {
            return allow_;
        }

        public static final int CHECK_BOX_FIELD_NUMBER = 9;
        private volatile java.lang.Object checkBox_;
        /**
         * <pre>
         * check box 是否展示
         * </pre>
         *
         * <code>string check_box = 9;</code>
         * @return The checkBox.
         */
        @java.lang.Override
        public java.lang.String getCheckBox() {
            java.lang.Object ref = checkBox_;
            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();
                checkBox_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * check box 是否展示
         * </pre>
         *
         * <code>string check_box = 9;</code>
         * @return The bytes for checkBox.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getCheckBoxBytes() {
            java.lang.Object ref = checkBox_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                checkBox_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int CHECK_BOX_SHOW_MSG_FIELD_NUMBER = 10;
        private volatile java.lang.Object checkBoxShowMsg_;
        /**
         * <pre>
         * check box 展示文本
         * </pre>
         *
         * <code>string check_box_show_msg = 10;</code>
         * @return The checkBoxShowMsg.
         */
        @java.lang.Override
        public java.lang.String getCheckBoxShowMsg() {
            java.lang.Object ref = checkBoxShowMsg_;
            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();
                checkBoxShowMsg_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * check box 展示文本
         * </pre>
         *
         * <code>string check_box_show_msg = 10;</code>
         * @return The bytes for checkBoxShowMsg.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getCheckBoxShowMsgBytes() {
            java.lang.Object ref = checkBoxShowMsg_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                checkBoxShowMsg_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int TEXT_PLACEHOLDER_FIELD_NUMBER = 11;
        private volatile java.lang.Object textPlaceholder_;
        /**
         * <pre>
         * 展示文案
         * </pre>
         *
         * <code>string text_placeholder = 11;</code>
         * @return The textPlaceholder.
         */
        @java.lang.Override
        public java.lang.String getTextPlaceholder() {
            java.lang.Object ref = textPlaceholder_;
            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();
                textPlaceholder_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 展示文案
         * </pre>
         *
         * <code>string text_placeholder = 11;</code>
         * @return The bytes for textPlaceholder.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getTextPlaceholderBytes() {
            java.lang.Object ref = textPlaceholder_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                textPlaceholder_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int INPUT_PLACEHOLDER_FIELD_NUMBER = 12;
        private volatile java.lang.Object inputPlaceholder_;
        /**
         * <pre>
         * 弹幕输入框文案
         * </pre>
         *
         * <code>string input_placeholder = 12;</code>
         * @return The inputPlaceholder.
         */
        @java.lang.Override
        public java.lang.String getInputPlaceholder() {
            java.lang.Object ref = inputPlaceholder_;
            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();
                inputPlaceholder_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 弹幕输入框文案
         * </pre>
         *
         * <code>string input_placeholder = 12;</code>
         * @return The bytes for inputPlaceholder.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getInputPlaceholderBytes() {
            java.lang.Object ref = inputPlaceholder_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                inputPlaceholder_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int REPORT_FILTER_CONTENT_FIELD_NUMBER = 13;
        private com.google.protobuf.LazyStringList reportFilterContent_;
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @return A list containing the reportFilterContent.
         */
        public com.google.protobuf.ProtocolStringList
        getReportFilterContentList() {
            return reportFilterContent_;
        }
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @return The count of reportFilterContent.
         */
        public int getReportFilterContentCount() {
            return reportFilterContent_.size();
        }
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @param index The index of the element to return.
         * @return The reportFilterContent at the given index.
         */
        public java.lang.String getReportFilterContent(int index) {
            return reportFilterContent_.get(index);
        }
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽的正则规则
         * </pre>
         *
         * <code>repeated string report_filter_content = 13;</code>
         * @param index The index of the value to return.
         * @return The bytes of the reportFilterContent at the given index.
         */
        public com.google.protobuf.ByteString
        getReportFilterContentBytes(int index) {
            return reportFilterContent_.getByteString(index);
        }

        public static final int EXPO_REPORT_FIELD_NUMBER = 14;
        private com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport expoReport_;
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
         * @return Whether the expoReport field is set.
         */
        @java.lang.Override
        public boolean hasExpoReport() {
            return expoReport_ != null;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
         * @return The expoReport.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport getExpoReport() {
            return expoReport_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.getDefaultInstance() : expoReport_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReportOrBuilder getExpoReportOrBuilder() {
            return getExpoReport();
        }

        public static final int BUZZWORD_CONFIG_FIELD_NUMBER = 15;
        private com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig buzzwordConfig_;
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
         * @return Whether the buzzwordConfig field is set.
         */
        @java.lang.Override
        public boolean hasBuzzwordConfig() {
            return buzzwordConfig_ != null;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
         * @return The buzzwordConfig.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig getBuzzwordConfig() {
            return buzzwordConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.getDefaultInstance() : buzzwordConfig_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfigOrBuilder getBuzzwordConfigOrBuilder() {
            return getBuzzwordConfig();
        }

        public static final int EXPRESSIONS_FIELD_NUMBER = 16;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> expressions_;
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> getExpressionsList() {
            return expressions_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
        getExpressionsOrBuilderList() {
            return expressions_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        @java.lang.Override
        public int getExpressionsCount() {
            return expressions_.size();
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Expressions getExpressions(int index) {
            return expressions_.get(index);
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder getExpressionsOrBuilder(
                int index) {
            return expressions_.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 {
            if (closed_ != false) {
                output.writeBool(1, closed_);
            }
            if (mask_ != null) {
                output.writeMessage(2, getMask());
            }
            if (subtitle_ != null) {
                output.writeMessage(3, getSubtitle());
            }
            for (int i = 0; i < specialDms_.size(); i++) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, specialDms_.getRaw(i));
            }
            if (aiFlag_ != null) {
                output.writeMessage(5, getAiFlag());
            }
            if (playerConfig_ != null) {
                output.writeMessage(6, getPlayerConfig());
            }
            if (sendBoxStyle_ != 0) {
                output.writeInt32(7, sendBoxStyle_);
            }
            if (allow_ != false) {
                output.writeBool(8, allow_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checkBox_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 9, checkBox_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checkBoxShowMsg_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 10, checkBoxShowMsg_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(textPlaceholder_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 11, textPlaceholder_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(inputPlaceholder_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 12, inputPlaceholder_);
            }
            for (int i = 0; i < reportFilterContent_.size(); i++) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 13, reportFilterContent_.getRaw(i));
            }
            if (expoReport_ != null) {
                output.writeMessage(14, getExpoReport());
            }
            if (buzzwordConfig_ != null) {
                output.writeMessage(15, getBuzzwordConfig());
            }
            for (int i = 0; i < expressions_.size(); i++) {
                output.writeMessage(16, expressions_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (closed_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, closed_);
            }
            if (mask_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(2, getMask());
            }
            if (subtitle_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(3, getSubtitle());
            }
            {
                int dataSize = 0;
                for (int i = 0; i < specialDms_.size(); i++) {
                    dataSize += computeStringSizeNoTag(specialDms_.getRaw(i));
                }
                size += dataSize;
                size += 1 * getSpecialDmsList().size();
            }
            if (aiFlag_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(5, getAiFlag());
            }
            if (playerConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(6, getPlayerConfig());
            }
            if (sendBoxStyle_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(7, sendBoxStyle_);
            }
            if (allow_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(8, allow_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checkBox_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, checkBox_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checkBoxShowMsg_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, checkBoxShowMsg_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(textPlaceholder_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, textPlaceholder_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(inputPlaceholder_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, inputPlaceholder_);
            }
            {
                int dataSize = 0;
                for (int i = 0; i < reportFilterContent_.size(); i++) {
                    dataSize += computeStringSizeNoTag(reportFilterContent_.getRaw(i));
                }
                size += dataSize;
                size += 1 * getReportFilterContentList().size();
            }
            if (expoReport_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(14, getExpoReport());
            }
            if (buzzwordConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(15, getBuzzwordConfig());
            }
            for (int i = 0; i < expressions_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(16, expressions_.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 com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply other = (com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply) obj;

            if (getClosed()
                    != other.getClosed()) return false;
            if (hasMask() != other.hasMask()) return false;
            if (hasMask()) {
                if (!getMask()
                        .equals(other.getMask())) return false;
            }
            if (hasSubtitle() != other.hasSubtitle()) return false;
            if (hasSubtitle()) {
                if (!getSubtitle()
                        .equals(other.getSubtitle())) return false;
            }
            if (!getSpecialDmsList()
                    .equals(other.getSpecialDmsList())) return false;
            if (hasAiFlag() != other.hasAiFlag()) return false;
            if (hasAiFlag()) {
                if (!getAiFlag()
                        .equals(other.getAiFlag())) return false;
            }
            if (hasPlayerConfig() != other.hasPlayerConfig()) return false;
            if (hasPlayerConfig()) {
                if (!getPlayerConfig()
                        .equals(other.getPlayerConfig())) return false;
            }
            if (getSendBoxStyle()
                    != other.getSendBoxStyle()) return false;
            if (getAllow()
                    != other.getAllow()) return false;
            if (!getCheckBox()
                    .equals(other.getCheckBox())) return false;
            if (!getCheckBoxShowMsg()
                    .equals(other.getCheckBoxShowMsg())) return false;
            if (!getTextPlaceholder()
                    .equals(other.getTextPlaceholder())) return false;
            if (!getInputPlaceholder()
                    .equals(other.getInputPlaceholder())) return false;
            if (!getReportFilterContentList()
                    .equals(other.getReportFilterContentList())) return false;
            if (hasExpoReport() != other.hasExpoReport()) return false;
            if (hasExpoReport()) {
                if (!getExpoReport()
                        .equals(other.getExpoReport())) return false;
            }
            if (hasBuzzwordConfig() != other.hasBuzzwordConfig()) return false;
            if (hasBuzzwordConfig()) {
                if (!getBuzzwordConfig()
                        .equals(other.getBuzzwordConfig())) return false;
            }
            if (!getExpressionsList()
                    .equals(other.getExpressionsList())) 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) + CLOSED_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getClosed());
            if (hasMask()) {
                hash = (37 * hash) + MASK_FIELD_NUMBER;
                hash = (53 * hash) + getMask().hashCode();
            }
            if (hasSubtitle()) {
                hash = (37 * hash) + SUBTITLE_FIELD_NUMBER;
                hash = (53 * hash) + getSubtitle().hashCode();
            }
            if (getSpecialDmsCount() > 0) {
                hash = (37 * hash) + SPECIAL_DMS_FIELD_NUMBER;
                hash = (53 * hash) + getSpecialDmsList().hashCode();
            }
            if (hasAiFlag()) {
                hash = (37 * hash) + AI_FLAG_FIELD_NUMBER;
                hash = (53 * hash) + getAiFlag().hashCode();
            }
            if (hasPlayerConfig()) {
                hash = (37 * hash) + PLAYER_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getPlayerConfig().hashCode();
            }
            hash = (37 * hash) + SEND_BOX_STYLE_FIELD_NUMBER;
            hash = (53 * hash) + getSendBoxStyle();
            hash = (37 * hash) + ALLOW_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getAllow());
            hash = (37 * hash) + CHECK_BOX_FIELD_NUMBER;
            hash = (53 * hash) + getCheckBox().hashCode();
            hash = (37 * hash) + CHECK_BOX_SHOW_MSG_FIELD_NUMBER;
            hash = (53 * hash) + getCheckBoxShowMsg().hashCode();
            hash = (37 * hash) + TEXT_PLACEHOLDER_FIELD_NUMBER;
            hash = (53 * hash) + getTextPlaceholder().hashCode();
            hash = (37 * hash) + INPUT_PLACEHOLDER_FIELD_NUMBER;
            hash = (53 * hash) + getInputPlaceholder().hashCode();
            if (getReportFilterContentCount() > 0) {
                hash = (37 * hash) + REPORT_FILTER_CONTENT_FIELD_NUMBER;
                hash = (53 * hash) + getReportFilterContentList().hashCode();
            }
            if (hasExpoReport()) {
                hash = (37 * hash) + EXPO_REPORT_FIELD_NUMBER;
                hash = (53 * hash) + getExpoReport().hashCode();
            }
            if (hasBuzzwordConfig()) {
                hash = (37 * hash) + BUZZWORD_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getBuzzwordConfig().hashCode();
            }
            if (getExpressionsCount() > 0) {
                hash = (37 * hash) + EXPRESSIONS_FIELD_NUMBER;
                hash = (53 * hash) + getExpressionsList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 客户端弹幕元数据-响应
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmViewReply}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmViewReply)
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReplyOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReply_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReply_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                if (maskBuilder_ == null) {
                    mask_ = null;
                } else {
                    mask_ = null;
                    maskBuilder_ = null;
                }
                if (subtitleBuilder_ == null) {
                    subtitle_ = null;
                } else {
                    subtitle_ = null;
                    subtitleBuilder_ = null;
                }
                specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                if (aiFlagBuilder_ == null) {
                    aiFlag_ = null;
                } else {
                    aiFlag_ = null;
                    aiFlagBuilder_ = null;
                }
                if (playerConfigBuilder_ == null) {
                    playerConfig_ = null;
                } else {
                    playerConfig_ = null;
                    playerConfigBuilder_ = null;
                }
                sendBoxStyle_ = 0;

                allow_ = false;

                checkBox_ = "";

                checkBoxShowMsg_ = "";

                textPlaceholder_ = "";

                inputPlaceholder_ = "";

                reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000002);
                if (expoReportBuilder_ == null) {
                    expoReport_ = null;
                } else {
                    expoReport_ = null;
                    expoReportBuilder_ = null;
                }
                if (buzzwordConfigBuilder_ == null) {
                    buzzwordConfig_ = null;
                } else {
                    buzzwordConfig_ = null;
                    buzzwordConfigBuilder_ = null;
                }
                if (expressionsBuilder_ == null) {
                    expressions_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                } else {
                    expressionsBuilder_.clear();
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReply_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply result = new com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply(this);
                int from_bitField0_ = bitField0_;
                result.closed_ = closed_;
                if (maskBuilder_ == null) {
                    result.mask_ = mask_;
                } else {
                    result.mask_ = maskBuilder_.build();
                }
                if (subtitleBuilder_ == null) {
                    result.subtitle_ = subtitle_;
                } else {
                    result.subtitle_ = subtitleBuilder_.build();
                }
                if (((bitField0_ & 0x00000001) != 0)) {
                    specialDms_ = specialDms_.getUnmodifiableView();
                    bitField0_ = (bitField0_ & ~0x00000001);
                }
                result.specialDms_ = specialDms_;
                if (aiFlagBuilder_ == null) {
                    result.aiFlag_ = aiFlag_;
                } else {
                    result.aiFlag_ = aiFlagBuilder_.build();
                }
                if (playerConfigBuilder_ == null) {
                    result.playerConfig_ = playerConfig_;
                } else {
                    result.playerConfig_ = playerConfigBuilder_.build();
                }
                result.sendBoxStyle_ = sendBoxStyle_;
                result.allow_ = allow_;
                result.checkBox_ = checkBox_;
                result.checkBoxShowMsg_ = checkBoxShowMsg_;
                result.textPlaceholder_ = textPlaceholder_;
                result.inputPlaceholder_ = inputPlaceholder_;
                if (((bitField0_ & 0x00000002) != 0)) {
                    reportFilterContent_ = reportFilterContent_.getUnmodifiableView();
                    bitField0_ = (bitField0_ & ~0x00000002);
                }
                result.reportFilterContent_ = reportFilterContent_;
                if (expoReportBuilder_ == null) {
                    result.expoReport_ = expoReport_;
                } else {
                    result.expoReport_ = expoReportBuilder_.build();
                }
                if (buzzwordConfigBuilder_ == null) {
                    result.buzzwordConfig_ = buzzwordConfig_;
                } else {
                    result.buzzwordConfig_ = buzzwordConfigBuilder_.build();
                }
                if (expressionsBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0)) {
                        expressions_ = java.util.Collections.unmodifiableList(expressions_);
                        bitField0_ = (bitField0_ & ~0x00000004);
                    }
                    result.expressions_ = expressions_;
                } else {
                    result.expressions_ = expressionsBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply.getDefaultInstance()) return this;
                if (other.getClosed() != false) {
                    setClosed(other.getClosed());
                }
                if (other.hasMask()) {
                    mergeMask(other.getMask());
                }
                if (other.hasSubtitle()) {
                    mergeSubtitle(other.getSubtitle());
                }
                if (!other.specialDms_.isEmpty()) {
                    if (specialDms_.isEmpty()) {
                        specialDms_ = other.specialDms_;
                        bitField0_ = (bitField0_ & ~0x00000001);
                    } else {
                        ensureSpecialDmsIsMutable();
                        specialDms_.addAll(other.specialDms_);
                    }
                    onChanged();
                }
                if (other.hasAiFlag()) {
                    mergeAiFlag(other.getAiFlag());
                }
                if (other.hasPlayerConfig()) {
                    mergePlayerConfig(other.getPlayerConfig());
                }
                if (other.getSendBoxStyle() != 0) {
                    setSendBoxStyle(other.getSendBoxStyle());
                }
                if (other.getAllow() != false) {
                    setAllow(other.getAllow());
                }
                if (!other.getCheckBox().isEmpty()) {
                    checkBox_ = other.checkBox_;
                    onChanged();
                }
                if (!other.getCheckBoxShowMsg().isEmpty()) {
                    checkBoxShowMsg_ = other.checkBoxShowMsg_;
                    onChanged();
                }
                if (!other.getTextPlaceholder().isEmpty()) {
                    textPlaceholder_ = other.textPlaceholder_;
                    onChanged();
                }
                if (!other.getInputPlaceholder().isEmpty()) {
                    inputPlaceholder_ = other.inputPlaceholder_;
                    onChanged();
                }
                if (!other.reportFilterContent_.isEmpty()) {
                    if (reportFilterContent_.isEmpty()) {
                        reportFilterContent_ = other.reportFilterContent_;
                        bitField0_ = (bitField0_ & ~0x00000002);
                    } else {
                        ensureReportFilterContentIsMutable();
                        reportFilterContent_.addAll(other.reportFilterContent_);
                    }
                    onChanged();
                }
                if (other.hasExpoReport()) {
                    mergeExpoReport(other.getExpoReport());
                }
                if (other.hasBuzzwordConfig()) {
                    mergeBuzzwordConfig(other.getBuzzwordConfig());
                }
                if (expressionsBuilder_ == null) {
                    if (!other.expressions_.isEmpty()) {
                        if (expressions_.isEmpty()) {
                            expressions_ = other.expressions_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                        } else {
                            ensureExpressionsIsMutable();
                            expressions_.addAll(other.expressions_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.expressions_.isEmpty()) {
                        if (expressionsBuilder_.isEmpty()) {
                            expressionsBuilder_.dispose();
                            expressionsBuilder_ = null;
                            expressions_ = other.expressions_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                            expressionsBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getExpressionsFieldBuilder() : null;
                        } else {
                            expressionsBuilder_.addAllMessages(other.expressions_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private boolean closed_ ;
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @return The closed.
             */
            @java.lang.Override
            public boolean getClosed() {
                return closed_;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @param value The closed to set.
             * @return This builder for chaining.
             */
            public Builder setClosed(boolean value) {

                closed_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>bool closed = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearClosed() {

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

            private com.yutou.qqbot.bilibili.VideoDanMu.VideoMask mask_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.VideoMask, com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder, com.yutou.qqbot.bilibili.VideoDanMu.VideoMaskOrBuilder> maskBuilder_;
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             * @return Whether the mask field is set.
             */
            public boolean hasMask() {
                return maskBuilder_ != null || mask_ != null;
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             * @return The mask.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoMask getMask() {
                if (maskBuilder_ == null) {
                    return mask_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.getDefaultInstance() : mask_;
                } else {
                    return maskBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             */
            public Builder setMask(com.yutou.qqbot.bilibili.VideoDanMu.VideoMask value) {
                if (maskBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    mask_ = value;
                    onChanged();
                } else {
                    maskBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             */
            public Builder setMask(
                    com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder builderForValue) {
                if (maskBuilder_ == null) {
                    mask_ = builderForValue.build();
                    onChanged();
                } else {
                    maskBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             */
            public Builder mergeMask(com.yutou.qqbot.bilibili.VideoDanMu.VideoMask value) {
                if (maskBuilder_ == null) {
                    if (mask_ != null) {
                        mask_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.newBuilder(mask_).mergeFrom(value).buildPartial();
                    } else {
                        mask_ = value;
                    }
                    onChanged();
                } else {
                    maskBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             */
            public Builder clearMask() {
                if (maskBuilder_ == null) {
                    mask_ = null;
                    onChanged();
                } else {
                    mask_ = null;
                    maskBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder getMaskBuilder() {

                onChanged();
                return getMaskFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoMaskOrBuilder getMaskOrBuilder() {
                if (maskBuilder_ != null) {
                    return maskBuilder_.getMessageOrBuilder();
                } else {
                    return mask_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.getDefaultInstance() : mask_;
                }
            }
            /**
             * <pre>
             * 智能防挡弹幕蒙版信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoMask mask = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.VideoMask, com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder, com.yutou.qqbot.bilibili.VideoDanMu.VideoMaskOrBuilder>
            getMaskFieldBuilder() {
                if (maskBuilder_ == null) {
                    maskBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoMask, com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder, com.yutou.qqbot.bilibili.VideoDanMu.VideoMaskOrBuilder>(
                            getMask(),
                            getParentForChildren(),
                            isClean());
                    mask_ = null;
                }
                return maskBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle subtitle_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitleOrBuilder> subtitleBuilder_;
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             * @return Whether the subtitle field is set.
             */
            public boolean hasSubtitle() {
                return subtitleBuilder_ != null || subtitle_ != null;
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             * @return The subtitle.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle getSubtitle() {
                if (subtitleBuilder_ == null) {
                    return subtitle_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.getDefaultInstance() : subtitle_;
                } else {
                    return subtitleBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             */
            public Builder setSubtitle(com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle value) {
                if (subtitleBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    subtitle_ = value;
                    onChanged();
                } else {
                    subtitleBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             */
            public Builder setSubtitle(
                    com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder builderForValue) {
                if (subtitleBuilder_ == null) {
                    subtitle_ = builderForValue.build();
                    onChanged();
                } else {
                    subtitleBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             */
            public Builder mergeSubtitle(com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle value) {
                if (subtitleBuilder_ == null) {
                    if (subtitle_ != null) {
                        subtitle_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.newBuilder(subtitle_).mergeFrom(value).buildPartial();
                    } else {
                        subtitle_ = value;
                    }
                    onChanged();
                } else {
                    subtitleBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             */
            public Builder clearSubtitle() {
                if (subtitleBuilder_ == null) {
                    subtitle_ = null;
                    onChanged();
                } else {
                    subtitle_ = null;
                    subtitleBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder getSubtitleBuilder() {

                onChanged();
                return getSubtitleFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitleOrBuilder getSubtitleOrBuilder() {
                if (subtitleBuilder_ != null) {
                    return subtitleBuilder_.getMessageOrBuilder();
                } else {
                    return subtitle_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.getDefaultInstance() : subtitle_;
                }
            }
            /**
             * <pre>
             * 视频字幕
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.VideoSubtitle subtitle = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitleOrBuilder>
            getSubtitleFieldBuilder() {
                if (subtitleBuilder_ == null) {
                    subtitleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitleOrBuilder>(
                            getSubtitle(),
                            getParentForChildren(),
                            isClean());
                    subtitle_ = null;
                }
                return subtitleBuilder_;
            }

            private com.google.protobuf.LazyStringList specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            private void ensureSpecialDmsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    specialDms_ = new com.google.protobuf.LazyStringArrayList(specialDms_);
                    bitField0_ |= 0x00000001;
                }
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @return A list containing the specialDms.
             */
            public com.google.protobuf.ProtocolStringList
            getSpecialDmsList() {
                return specialDms_.getUnmodifiableView();
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @return The count of specialDms.
             */
            public int getSpecialDmsCount() {
                return specialDms_.size();
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @param index The index of the element to return.
             * @return The specialDms at the given index.
             */
            public java.lang.String getSpecialDms(int index) {
                return specialDms_.get(index);
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @param index The index of the value to return.
             * @return The bytes of the specialDms at the given index.
             */
            public com.google.protobuf.ByteString
            getSpecialDmsBytes(int index) {
                return specialDms_.getByteString(index);
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @param index The index to set the value at.
             * @param value The specialDms to set.
             * @return This builder for chaining.
             */
            public Builder setSpecialDms(
                    int index, java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureSpecialDmsIsMutable();
                specialDms_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @param value The specialDms to add.
             * @return This builder for chaining.
             */
            public Builder addSpecialDms(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureSpecialDmsIsMutable();
                specialDms_.add(value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @param values The specialDms to add.
             * @return This builder for chaining.
             */
            public Builder addAllSpecialDms(
                    java.lang.Iterable<java.lang.String> values) {
                ensureSpecialDmsIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                        values, specialDms_);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearSpecialDms() {
                specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 4;</code>
             * @param value The bytes of the specialDms to add.
             * @return This builder for chaining.
             */
            public Builder addSpecialDmsBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ensureSpecialDmsIsMutable();
                specialDms_.add(value);
                onChanged();
                return this;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig aiFlag_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder> aiFlagBuilder_;
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             * @return Whether the aiFlag field is set.
             */
            public boolean hasAiFlag() {
                return aiFlagBuilder_ != null || aiFlag_ != null;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             * @return The aiFlag.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getAiFlag() {
                if (aiFlagBuilder_ == null) {
                    return aiFlag_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance() : aiFlag_;
                } else {
                    return aiFlagBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             */
            public Builder setAiFlag(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig value) {
                if (aiFlagBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    aiFlag_ = value;
                    onChanged();
                } else {
                    aiFlagBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             */
            public Builder setAiFlag(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder builderForValue) {
                if (aiFlagBuilder_ == null) {
                    aiFlag_ = builderForValue.build();
                    onChanged();
                } else {
                    aiFlagBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             */
            public Builder mergeAiFlag(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig value) {
                if (aiFlagBuilder_ == null) {
                    if (aiFlag_ != null) {
                        aiFlag_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.newBuilder(aiFlag_).mergeFrom(value).buildPartial();
                    } else {
                        aiFlag_ = value;
                    }
                    onChanged();
                } else {
                    aiFlagBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             */
            public Builder clearAiFlag() {
                if (aiFlagBuilder_ == null) {
                    aiFlag_ = null;
                    onChanged();
                } else {
                    aiFlag_ = null;
                    aiFlagBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder getAiFlagBuilder() {

                onChanged();
                return getAiFlagFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder getAiFlagOrBuilder() {
                if (aiFlagBuilder_ != null) {
                    return aiFlagBuilder_.getMessageOrBuilder();
                } else {
                    return aiFlag_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance() : aiFlag_;
                }
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig ai_flag = 5;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder>
            getAiFlagFieldBuilder() {
                if (aiFlagBuilder_ == null) {
                    aiFlagBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder>(
                            getAiFlag(),
                            getParentForChildren(),
                            isClean());
                    aiFlag_ = null;
                }
                return aiFlagBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig playerConfig_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfigOrBuilder> playerConfigBuilder_;
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             * @return Whether the playerConfig field is set.
             */
            public boolean hasPlayerConfig() {
                return playerConfigBuilder_ != null || playerConfig_ != null;
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             * @return The playerConfig.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig getPlayerConfig() {
                if (playerConfigBuilder_ == null) {
                    return playerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.getDefaultInstance() : playerConfig_;
                } else {
                    return playerConfigBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             */
            public Builder setPlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig value) {
                if (playerConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    playerConfig_ = value;
                    onChanged();
                } else {
                    playerConfigBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             */
            public Builder setPlayerConfig(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder builderForValue) {
                if (playerConfigBuilder_ == null) {
                    playerConfig_ = builderForValue.build();
                    onChanged();
                } else {
                    playerConfigBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             */
            public Builder mergePlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig value) {
                if (playerConfigBuilder_ == null) {
                    if (playerConfig_ != null) {
                        playerConfig_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.newBuilder(playerConfig_).mergeFrom(value).buildPartial();
                    } else {
                        playerConfig_ = value;
                    }
                    onChanged();
                } else {
                    playerConfigBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             */
            public Builder clearPlayerConfig() {
                if (playerConfigBuilder_ == null) {
                    playerConfig_ = null;
                    onChanged();
                } else {
                    playerConfig_ = null;
                    playerConfigBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder getPlayerConfigBuilder() {

                onChanged();
                return getPlayerConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfigOrBuilder getPlayerConfigOrBuilder() {
                if (playerConfigBuilder_ != null) {
                    return playerConfigBuilder_.getMessageOrBuilder();
                } else {
                    return playerConfig_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.getDefaultInstance() : playerConfig_;
                }
            }
            /**
             * <pre>
             * 弹幕配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuPlayerViewConfig player_config = 6;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfigOrBuilder>
            getPlayerConfigFieldBuilder() {
                if (playerConfigBuilder_ == null) {
                    playerConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuPlayerViewConfigOrBuilder>(
                            getPlayerConfig(),
                            getParentForChildren(),
                            isClean());
                    playerConfig_ = null;
                }
                return playerConfigBuilder_;
            }

            private int sendBoxStyle_ ;
            /**
             * <pre>
             * 弹幕发送框样式
             * </pre>
             *
             * <code>int32 send_box_style = 7;</code>
             * @return The sendBoxStyle.
             */
            @java.lang.Override
            public int getSendBoxStyle() {
                return sendBoxStyle_;
            }
            /**
             * <pre>
             * 弹幕发送框样式
             * </pre>
             *
             * <code>int32 send_box_style = 7;</code>
             * @param value The sendBoxStyle to set.
             * @return This builder for chaining.
             */
            public Builder setSendBoxStyle(int value) {

                sendBoxStyle_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕发送框样式
             * </pre>
             *
             * <code>int32 send_box_style = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearSendBoxStyle() {

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

            private boolean allow_ ;
            /**
             * <pre>
             * 是否允许
             * </pre>
             *
             * <code>bool allow = 8;</code>
             * @return The allow.
             */
            @java.lang.Override
            public boolean getAllow() {
                return allow_;
            }
            /**
             * <pre>
             * 是否允许
             * </pre>
             *
             * <code>bool allow = 8;</code>
             * @param value The allow to set.
             * @return This builder for chaining.
             */
            public Builder setAllow(boolean value) {

                allow_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否允许
             * </pre>
             *
             * <code>bool allow = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearAllow() {

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

            private java.lang.Object checkBox_ = "";
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>string check_box = 9;</code>
             * @return The checkBox.
             */
            public java.lang.String getCheckBox() {
                java.lang.Object ref = checkBox_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    checkBox_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>string check_box = 9;</code>
             * @return The bytes for checkBox.
             */
            public com.google.protobuf.ByteString
            getCheckBoxBytes() {
                java.lang.Object ref = checkBox_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    checkBox_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>string check_box = 9;</code>
             * @param value The checkBox to set.
             * @return This builder for chaining.
             */
            public Builder setCheckBox(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                checkBox_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>string check_box = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearCheckBox() {

                checkBox_ = getDefaultInstance().getCheckBox();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>string check_box = 9;</code>
             * @param value The bytes for checkBox to set.
             * @return This builder for chaining.
             */
            public Builder setCheckBoxBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object checkBoxShowMsg_ = "";
            /**
             * <pre>
             * check box 展示文本
             * </pre>
             *
             * <code>string check_box_show_msg = 10;</code>
             * @return The checkBoxShowMsg.
             */
            public java.lang.String getCheckBoxShowMsg() {
                java.lang.Object ref = checkBoxShowMsg_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    checkBoxShowMsg_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * check box 展示文本
             * </pre>
             *
             * <code>string check_box_show_msg = 10;</code>
             * @return The bytes for checkBoxShowMsg.
             */
            public com.google.protobuf.ByteString
            getCheckBoxShowMsgBytes() {
                java.lang.Object ref = checkBoxShowMsg_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    checkBoxShowMsg_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * check box 展示文本
             * </pre>
             *
             * <code>string check_box_show_msg = 10;</code>
             * @param value The checkBoxShowMsg to set.
             * @return This builder for chaining.
             */
            public Builder setCheckBoxShowMsg(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                checkBoxShowMsg_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * check box 展示文本
             * </pre>
             *
             * <code>string check_box_show_msg = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearCheckBoxShowMsg() {

                checkBoxShowMsg_ = getDefaultInstance().getCheckBoxShowMsg();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * check box 展示文本
             * </pre>
             *
             * <code>string check_box_show_msg = 10;</code>
             * @param value The bytes for checkBoxShowMsg to set.
             * @return This builder for chaining.
             */
            public Builder setCheckBoxShowMsgBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object textPlaceholder_ = "";
            /**
             * <pre>
             * 展示文案
             * </pre>
             *
             * <code>string text_placeholder = 11;</code>
             * @return The textPlaceholder.
             */
            public java.lang.String getTextPlaceholder() {
                java.lang.Object ref = textPlaceholder_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    textPlaceholder_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 展示文案
             * </pre>
             *
             * <code>string text_placeholder = 11;</code>
             * @return The bytes for textPlaceholder.
             */
            public com.google.protobuf.ByteString
            getTextPlaceholderBytes() {
                java.lang.Object ref = textPlaceholder_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    textPlaceholder_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 展示文案
             * </pre>
             *
             * <code>string text_placeholder = 11;</code>
             * @param value The textPlaceholder to set.
             * @return This builder for chaining.
             */
            public Builder setTextPlaceholder(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                textPlaceholder_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 展示文案
             * </pre>
             *
             * <code>string text_placeholder = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearTextPlaceholder() {

                textPlaceholder_ = getDefaultInstance().getTextPlaceholder();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 展示文案
             * </pre>
             *
             * <code>string text_placeholder = 11;</code>
             * @param value The bytes for textPlaceholder to set.
             * @return This builder for chaining.
             */
            public Builder setTextPlaceholderBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object inputPlaceholder_ = "";
            /**
             * <pre>
             * 弹幕输入框文案
             * </pre>
             *
             * <code>string input_placeholder = 12;</code>
             * @return The inputPlaceholder.
             */
            public java.lang.String getInputPlaceholder() {
                java.lang.Object ref = inputPlaceholder_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    inputPlaceholder_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 弹幕输入框文案
             * </pre>
             *
             * <code>string input_placeholder = 12;</code>
             * @return The bytes for inputPlaceholder.
             */
            public com.google.protobuf.ByteString
            getInputPlaceholderBytes() {
                java.lang.Object ref = inputPlaceholder_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    inputPlaceholder_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 弹幕输入框文案
             * </pre>
             *
             * <code>string input_placeholder = 12;</code>
             * @param value The inputPlaceholder to set.
             * @return This builder for chaining.
             */
            public Builder setInputPlaceholder(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                inputPlaceholder_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕输入框文案
             * </pre>
             *
             * <code>string input_placeholder = 12;</code>
             * @return This builder for chaining.
             */
            public Builder clearInputPlaceholder() {

                inputPlaceholder_ = getDefaultInstance().getInputPlaceholder();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕输入框文案
             * </pre>
             *
             * <code>string input_placeholder = 12;</code>
             * @param value The bytes for inputPlaceholder to set.
             * @return This builder for chaining.
             */
            public Builder setInputPlaceholderBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private com.google.protobuf.LazyStringList reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            private void ensureReportFilterContentIsMutable() {
                if (!((bitField0_ & 0x00000002) != 0)) {
                    reportFilterContent_ = new com.google.protobuf.LazyStringArrayList(reportFilterContent_);
                    bitField0_ |= 0x00000002;
                }
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @return A list containing the reportFilterContent.
             */
            public com.google.protobuf.ProtocolStringList
            getReportFilterContentList() {
                return reportFilterContent_.getUnmodifiableView();
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @return The count of reportFilterContent.
             */
            public int getReportFilterContentCount() {
                return reportFilterContent_.size();
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @param index The index of the element to return.
             * @return The reportFilterContent at the given index.
             */
            public java.lang.String getReportFilterContent(int index) {
                return reportFilterContent_.get(index);
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @param index The index of the value to return.
             * @return The bytes of the reportFilterContent at the given index.
             */
            public com.google.protobuf.ByteString
            getReportFilterContentBytes(int index) {
                return reportFilterContent_.getByteString(index);
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @param index The index to set the value at.
             * @param value The reportFilterContent to set.
             * @return This builder for chaining.
             */
            public Builder setReportFilterContent(
                    int index, java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureReportFilterContentIsMutable();
                reportFilterContent_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @param value The reportFilterContent to add.
             * @return This builder for chaining.
             */
            public Builder addReportFilterContent(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureReportFilterContentIsMutable();
                reportFilterContent_.add(value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @param values The reportFilterContent to add.
             * @return This builder for chaining.
             */
            public Builder addAllReportFilterContent(
                    java.lang.Iterable<java.lang.String> values) {
                ensureReportFilterContentIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                        values, reportFilterContent_);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @return This builder for chaining.
             */
            public Builder clearReportFilterContent() {
                reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽的正则规则
             * </pre>
             *
             * <code>repeated string report_filter_content = 13;</code>
             * @param value The bytes of the reportFilterContent to add.
             * @return This builder for chaining.
             */
            public Builder addReportFilterContentBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ensureReportFilterContentIsMutable();
                reportFilterContent_.add(value);
                onChanged();
                return this;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport expoReport_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReportOrBuilder> expoReportBuilder_;
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             * @return Whether the expoReport field is set.
             */
            public boolean hasExpoReport() {
                return expoReportBuilder_ != null || expoReport_ != null;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             * @return The expoReport.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport getExpoReport() {
                if (expoReportBuilder_ == null) {
                    return expoReport_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.getDefaultInstance() : expoReport_;
                } else {
                    return expoReportBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             */
            public Builder setExpoReport(com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport value) {
                if (expoReportBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    expoReport_ = value;
                    onChanged();
                } else {
                    expoReportBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             */
            public Builder setExpoReport(
                    com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder builderForValue) {
                if (expoReportBuilder_ == null) {
                    expoReport_ = builderForValue.build();
                    onChanged();
                } else {
                    expoReportBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             */
            public Builder mergeExpoReport(com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport value) {
                if (expoReportBuilder_ == null) {
                    if (expoReport_ != null) {
                        expoReport_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.newBuilder(expoReport_).mergeFrom(value).buildPartial();
                    } else {
                        expoReport_ = value;
                    }
                    onChanged();
                } else {
                    expoReportBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             */
            public Builder clearExpoReport() {
                if (expoReportBuilder_ == null) {
                    expoReport_ = null;
                    onChanged();
                } else {
                    expoReport_ = null;
                    expoReportBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder getExpoReportBuilder() {

                onChanged();
                return getExpoReportFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReportOrBuilder getExpoReportOrBuilder() {
                if (expoReportBuilder_ != null) {
                    return expoReportBuilder_.getMessageOrBuilder();
                } else {
                    return expoReport_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.getDefaultInstance() : expoReport_;
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.ExpoReport expo_report = 14;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReportOrBuilder>
            getExpoReportFieldBuilder() {
                if (expoReportBuilder_ == null) {
                    expoReportBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReportOrBuilder>(
                            getExpoReport(),
                            getParentForChildren(),
                            isClean());
                    expoReport_ = null;
                }
                return expoReportBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig buzzwordConfig_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfigOrBuilder> buzzwordConfigBuilder_;
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             * @return Whether the buzzwordConfig field is set.
             */
            public boolean hasBuzzwordConfig() {
                return buzzwordConfigBuilder_ != null || buzzwordConfig_ != null;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             * @return The buzzwordConfig.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig getBuzzwordConfig() {
                if (buzzwordConfigBuilder_ == null) {
                    return buzzwordConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.getDefaultInstance() : buzzwordConfig_;
                } else {
                    return buzzwordConfigBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             */
            public Builder setBuzzwordConfig(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig value) {
                if (buzzwordConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    buzzwordConfig_ = value;
                    onChanged();
                } else {
                    buzzwordConfigBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             */
            public Builder setBuzzwordConfig(
                    com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder builderForValue) {
                if (buzzwordConfigBuilder_ == null) {
                    buzzwordConfig_ = builderForValue.build();
                    onChanged();
                } else {
                    buzzwordConfigBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             */
            public Builder mergeBuzzwordConfig(com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig value) {
                if (buzzwordConfigBuilder_ == null) {
                    if (buzzwordConfig_ != null) {
                        buzzwordConfig_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.newBuilder(buzzwordConfig_).mergeFrom(value).buildPartial();
                    } else {
                        buzzwordConfig_ = value;
                    }
                    onChanged();
                } else {
                    buzzwordConfigBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             */
            public Builder clearBuzzwordConfig() {
                if (buzzwordConfigBuilder_ == null) {
                    buzzwordConfig_ = null;
                    onChanged();
                } else {
                    buzzwordConfig_ = null;
                    buzzwordConfigBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder getBuzzwordConfigBuilder() {

                onChanged();
                return getBuzzwordConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfigOrBuilder getBuzzwordConfigOrBuilder() {
                if (buzzwordConfigBuilder_ != null) {
                    return buzzwordConfigBuilder_.getMessageOrBuilder();
                } else {
                    return buzzwordConfig_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.getDefaultInstance() : buzzwordConfig_;
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.BuzzwordConfig buzzword_config = 15;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfigOrBuilder>
            getBuzzwordConfigFieldBuilder() {
                if (buzzwordConfigBuilder_ == null) {
                    buzzwordConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.BuzzwordConfigOrBuilder>(
                            getBuzzwordConfig(),
                            getParentForChildren(),
                            isClean());
                    buzzwordConfig_ = null;
                }
                return buzzwordConfigBuilder_;
            }

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> expressions_ =
                    java.util.Collections.emptyList();
            private void ensureExpressionsIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    expressions_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Expressions>(expressions_);
                    bitField0_ |= 0x00000004;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Expressions, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder> expressionsBuilder_;

            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> getExpressionsList() {
                if (expressionsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(expressions_);
                } else {
                    return expressionsBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public int getExpressionsCount() {
                if (expressionsBuilder_ == null) {
                    return expressions_.size();
                } else {
                    return expressionsBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions getExpressions(int index) {
                if (expressionsBuilder_ == null) {
                    return expressions_.get(index);
                } else {
                    return expressionsBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder setExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions value) {
                if (expressionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureExpressionsIsMutable();
                    expressions_.set(index, value);
                    onChanged();
                } else {
                    expressionsBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder setExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder builderForValue) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    expressionsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder addExpressions(com.yutou.qqbot.bilibili.VideoDanMu.Expressions value) {
                if (expressionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureExpressionsIsMutable();
                    expressions_.add(value);
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder addExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions value) {
                if (expressionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureExpressionsIsMutable();
                    expressions_.add(index, value);
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder addExpressions(
                    com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder builderForValue) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.add(builderForValue.build());
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder addExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder builderForValue) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder addAllExpressions(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.Expressions> values) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, expressions_);
                    onChanged();
                } else {
                    expressionsBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder clearExpressions() {
                if (expressionsBuilder_ == null) {
                    expressions_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                    onChanged();
                } else {
                    expressionsBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public Builder removeExpressions(int index) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.remove(index);
                    onChanged();
                } else {
                    expressionsBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder getExpressionsBuilder(
                    int index) {
                return getExpressionsFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder getExpressionsOrBuilder(
                    int index) {
                if (expressionsBuilder_ == null) {
                    return expressions_.get(index);  } else {
                    return expressionsBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
            getExpressionsOrBuilderList() {
                if (expressionsBuilder_ != null) {
                    return expressionsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(expressions_);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder addExpressionsBuilder() {
                return getExpressionsFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.Expressions.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder addExpressionsBuilder(
                    int index) {
                return getExpressionsFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 16;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder>
            getExpressionsBuilderList() {
                return getExpressionsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Expressions, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
            getExpressionsFieldBuilder() {
                if (expressionsBuilder_ == null) {
                    expressionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.Expressions, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>(
                            expressions_,
                            ((bitField0_ & 0x00000004) != 0),
                            getParentForChildren(),
                            isClean());
                    expressions_ = null;
                }
                return expressionsBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.DmViewReply)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmViewReply)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReply getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmViewReqOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmViewReq)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        long getPid();

        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        long getOid();

        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        int getType();

        /**
         * <pre>
         * 页面spm
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The spmid.
         */
        java.lang.String getSpmid();
        /**
         * <pre>
         * 页面spm
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The bytes for spmid.
         */
        com.google.protobuf.ByteString
        getSpmidBytes();

        /**
         * <pre>
         * 是否冷启
         * </pre>
         *
         * <code>int32 is_hard_boot = 5;</code>
         * @return The isHardBoot.
         */
        int getIsHardBoot();
    }
    /**
     * <pre>
     * 客户端弹幕元数据-请求
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmViewReq}
     */
    public static final class DmViewReq extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmViewReq)
            DmViewReqOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmViewReq.newBuilder() to construct.
        private DmViewReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmViewReq() {
            spmid_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private DmViewReq(
                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: {

                            pid_ = input.readInt64();
                            break;
                        }
                        case 16: {

                            oid_ = input.readInt64();
                            break;
                        }
                        case 24: {

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

                            spmid_ = s;
                            break;
                        }
                        case 40: {

                            isHardBoot_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReq_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReq_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq.Builder.class);
        }

        public static final int PID_FIELD_NUMBER = 1;
        private long pid_;
        /**
         * <pre>
         * 稿件avid/漫画epid
         * </pre>
         *
         * <code>int64 pid = 1;</code>
         * @return The pid.
         */
        @java.lang.Override
        public long getPid() {
            return pid_;
        }

        public static final int OID_FIELD_NUMBER = 2;
        private long oid_;
        /**
         * <pre>
         * 视频cid/漫画cid
         * </pre>
         *
         * <code>int64 oid = 2;</code>
         * @return The oid.
         */
        @java.lang.Override
        public long getOid() {
            return oid_;
        }

        public static final int TYPE_FIELD_NUMBER = 3;
        private int type_;
        /**
         * <pre>
         * 弹幕类型
         * 1:视频 2:漫画
         * </pre>
         *
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        @java.lang.Override
        public int getType() {
            return type_;
        }

        public static final int SPMID_FIELD_NUMBER = 4;
        private volatile java.lang.Object spmid_;
        /**
         * <pre>
         * 页面spm
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The spmid.
         */
        @java.lang.Override
        public java.lang.String getSpmid() {
            java.lang.Object ref = spmid_;
            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();
                spmid_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 页面spm
         * </pre>
         *
         * <code>string spmid = 4;</code>
         * @return The bytes for spmid.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getSpmidBytes() {
            java.lang.Object ref = spmid_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                spmid_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int IS_HARD_BOOT_FIELD_NUMBER = 5;
        private int isHardBoot_;
        /**
         * <pre>
         * 是否冷启
         * </pre>
         *
         * <code>int32 is_hard_boot = 5;</code>
         * @return The isHardBoot.
         */
        @java.lang.Override
        public int getIsHardBoot() {
            return isHardBoot_;
        }

        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 (pid_ != 0L) {
                output.writeInt64(1, pid_);
            }
            if (oid_ != 0L) {
                output.writeInt64(2, oid_);
            }
            if (type_ != 0) {
                output.writeInt32(3, type_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(spmid_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, spmid_);
            }
            if (isHardBoot_ != 0) {
                output.writeInt32(5, isHardBoot_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (pid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, pid_);
            }
            if (oid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, oid_);
            }
            if (type_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, type_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(spmid_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, spmid_);
            }
            if (isHardBoot_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(5, isHardBoot_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq other = (com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq) obj;

            if (getPid()
                    != other.getPid()) return false;
            if (getOid()
                    != other.getOid()) return false;
            if (getType()
                    != other.getType()) return false;
            if (!getSpmid()
                    .equals(other.getSpmid())) return false;
            if (getIsHardBoot()
                    != other.getIsHardBoot()) 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) + PID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getPid());
            hash = (37 * hash) + OID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getOid());
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getType();
            hash = (37 * hash) + SPMID_FIELD_NUMBER;
            hash = (53 * hash) + getSpmid().hashCode();
            hash = (37 * hash) + IS_HARD_BOOT_FIELD_NUMBER;
            hash = (53 * hash) + getIsHardBoot();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 客户端弹幕元数据-请求
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmViewReq}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmViewReq)
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReqOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReq_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReq_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq.class, com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq.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();
                pid_ = 0L;

                oid_ = 0L;

                type_ = 0;

                spmid_ = "";

                isHardBoot_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmViewReq_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq result = new com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq(this);
                result.pid_ = pid_;
                result.oid_ = oid_;
                result.type_ = type_;
                result.spmid_ = spmid_;
                result.isHardBoot_ = isHardBoot_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq.getDefaultInstance()) return this;
                if (other.getPid() != 0L) {
                    setPid(other.getPid());
                }
                if (other.getOid() != 0L) {
                    setOid(other.getOid());
                }
                if (other.getType() != 0) {
                    setType(other.getType());
                }
                if (!other.getSpmid().isEmpty()) {
                    spmid_ = other.spmid_;
                    onChanged();
                }
                if (other.getIsHardBoot() != 0) {
                    setIsHardBoot(other.getIsHardBoot());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long pid_ ;
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return The pid.
             */
            @java.lang.Override
            public long getPid() {
                return pid_;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @param value The pid to set.
             * @return This builder for chaining.
             */
            public Builder setPid(long value) {

                pid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 稿件avid/漫画epid
             * </pre>
             *
             * <code>int64 pid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearPid() {

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

            private long oid_ ;
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return The oid.
             */
            @java.lang.Override
            public long getOid() {
                return oid_;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @param value The oid to set.
             * @return This builder for chaining.
             */
            public Builder setOid(long value) {

                oid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频cid/漫画cid
             * </pre>
             *
             * <code>int64 oid = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOid() {

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

            private int type_ ;
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return The type.
             */
            @java.lang.Override
            public int getType() {
                return type_;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <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;
            }
            /**
             * <pre>
             * 弹幕类型
             * 1:视频 2:漫画
             * </pre>
             *
             * <code>int32 type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {

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

            private java.lang.Object spmid_ = "";
            /**
             * <pre>
             * 页面spm
             * </pre>
             *
             * <code>string spmid = 4;</code>
             * @return The spmid.
             */
            public java.lang.String getSpmid() {
                java.lang.Object ref = spmid_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    spmid_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 页面spm
             * </pre>
             *
             * <code>string spmid = 4;</code>
             * @return The bytes for spmid.
             */
            public com.google.protobuf.ByteString
            getSpmidBytes() {
                java.lang.Object ref = spmid_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    spmid_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 页面spm
             * </pre>
             *
             * <code>string spmid = 4;</code>
             * @param value The spmid to set.
             * @return This builder for chaining.
             */
            public Builder setSpmid(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                spmid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 页面spm
             * </pre>
             *
             * <code>string spmid = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearSpmid() {

                spmid_ = getDefaultInstance().getSpmid();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 页面spm
             * </pre>
             *
             * <code>string spmid = 4;</code>
             * @param value The bytes for spmid to set.
             * @return This builder for chaining.
             */
            public Builder setSpmidBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int isHardBoot_ ;
            /**
             * <pre>
             * 是否冷启
             * </pre>
             *
             * <code>int32 is_hard_boot = 5;</code>
             * @return The isHardBoot.
             */
            @java.lang.Override
            public int getIsHardBoot() {
                return isHardBoot_;
            }
            /**
             * <pre>
             * 是否冷启
             * </pre>
             *
             * <code>int32 is_hard_boot = 5;</code>
             * @param value The isHardBoot to set.
             * @return This builder for chaining.
             */
            public Builder setIsHardBoot(int value) {

                isHardBoot_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否冷启
             * </pre>
             *
             * <code>int32 is_hard_boot = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsHardBoot() {

                isHardBoot_ = 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:com.yutou.qqbot.bilibili.DmViewReq)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmViewReq)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmViewReq getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DmWebViewReplyOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.DmWebViewReply)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>int32 state = 1;</code>
         * @return The state.
         */
        int getState();

        /**
         * <pre>
         * </pre>
         *
         * <code>string text = 2;</code>
         * @return The text.
         */
        java.lang.String getText();
        /**
         * <pre>
         * </pre>
         *
         * <code>string text = 2;</code>
         * @return The bytes for text.
         */
        com.google.protobuf.ByteString
        getTextBytes();

        /**
         * <pre>
         * </pre>
         *
         * <code>string text_side = 3;</code>
         * @return The textSide.
         */
        java.lang.String getTextSide();
        /**
         * <pre>
         * </pre>
         *
         * <code>string text_side = 3;</code>
         * @return The bytes for textSide.
         */
        com.google.protobuf.ByteString
        getTextSideBytes();

        /**
         * <pre>
         * 分段弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
         * @return Whether the dmSge field is set.
         */
        boolean hasDmSge();
        /**
         * <pre>
         * 分段弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
         * @return The dmSge.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig getDmSge();
        /**
         * <pre>
         * 分段弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfigOrBuilder getDmSgeOrBuilder();

        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
         * @return Whether the flag field is set.
         */
        boolean hasFlag();
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
         * @return The flag.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getFlag();
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder getFlagOrBuilder();

        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @return A list containing the specialDms.
         */
        java.util.List<java.lang.String>
        getSpecialDmsList();
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @return The count of specialDms.
         */
        int getSpecialDmsCount();
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @param index The index of the element to return.
         * @return The specialDms at the given index.
         */
        java.lang.String getSpecialDms(int index);
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @param index The index of the value to return.
         * @return The bytes of the specialDms at the given index.
         */
        com.google.protobuf.ByteString
        getSpecialDmsBytes(int index);

        /**
         * <pre>
         * check box 是否展示
         * </pre>
         *
         * <code>bool check_box = 7;</code>
         * @return The checkBox.
         */
        boolean getCheckBox();

        /**
         * <pre>
         * 弹幕数
         * </pre>
         *
         * <code>int64 count = 8;</code>
         * @return The count.
         */
        long getCount();

        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm>
        getCommandDmsList();
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.CommandDm getCommandDms(int index);
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        int getCommandDmsCount();
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder>
        getCommandDmsOrBuilderList();
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder getCommandDmsOrBuilder(
                int index);

        /**
         * <pre>
         * 用户弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
         * @return Whether the playerConfig field is set.
         */
        boolean hasPlayerConfig();
        /**
         * <pre>
         * 用户弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
         * @return The playerConfig.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig getPlayerConfig();
        /**
         * <pre>
         * 用户弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfigOrBuilder getPlayerConfigOrBuilder();

        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @return A list containing the reportFilterContent.
         */
        java.util.List<java.lang.String>
        getReportFilterContentList();
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @return The count of reportFilterContent.
         */
        int getReportFilterContentCount();
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @param index The index of the element to return.
         * @return The reportFilterContent at the given index.
         */
        java.lang.String getReportFilterContent(int index);
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @param index The index of the value to return.
         * @return The bytes of the reportFilterContent at the given index.
         */
        com.google.protobuf.ByteString
        getReportFilterContentBytes(int index);

        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions>
        getExpressionsList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.Expressions getExpressions(int index);
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        int getExpressionsCount();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
        getExpressionsOrBuilderList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder getExpressionsOrBuilder(
                int index);
    }
    /**
     * <pre>
     * web端弹幕元数据-响应
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.DmWebViewReply}
     */
    public static final class DmWebViewReply extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.DmWebViewReply)
            DmWebViewReplyOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use DmWebViewReply.newBuilder() to construct.
        private DmWebViewReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DmWebViewReply() {
            text_ = "";
            textSide_ = "";
            specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            commandDms_ = java.util.Collections.emptyList();
            reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            expressions_ = java.util.Collections.emptyList();
        }

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

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

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

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

                            textSide_ = s;
                            break;
                        }
                        case 34: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder subBuilder = null;
                            if (dmSge_ != null) {
                                subBuilder = dmSge_.toBuilder();
                            }
                            dmSge_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(dmSge_);
                                dmSge_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 42: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder subBuilder = null;
                            if (flag_ != null) {
                                subBuilder = flag_.toBuilder();
                            }
                            flag_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(flag_);
                                flag_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 50: {
                            java.lang.String s = input.readStringRequireUtf8();
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                specialDms_ = new com.google.protobuf.LazyStringArrayList();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            specialDms_.add(s);
                            break;
                        }
                        case 56: {

                            checkBox_ = input.readBool();
                            break;
                        }
                        case 64: {

                            count_ = input.readInt64();
                            break;
                        }
                        case 74: {
                            if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                                commandDms_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm>();
                                mutable_bitField0_ |= 0x00000002;
                            }
                            commandDms_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.parser(), extensionRegistry));
                            break;
                        }
                        case 82: {
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder subBuilder = null;
                            if (playerConfig_ != null) {
                                subBuilder = playerConfig_.toBuilder();
                            }
                            playerConfig_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(playerConfig_);
                                playerConfig_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 90: {
                            java.lang.String s = input.readStringRequireUtf8();
                            if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                                reportFilterContent_ = new com.google.protobuf.LazyStringArrayList();
                                mutable_bitField0_ |= 0x00000004;
                            }
                            reportFilterContent_.add(s);
                            break;
                        }
                        case 98: {
                            if (!((mutable_bitField0_ & 0x00000008) != 0)) {
                                expressions_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Expressions>();
                                mutable_bitField0_ |= 0x00000008;
                            }
                            expressions_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.Expressions.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    specialDms_ = specialDms_.getUnmodifiableView();
                }
                if (((mutable_bitField0_ & 0x00000002) != 0)) {
                    commandDms_ = java.util.Collections.unmodifiableList(commandDms_);
                }
                if (((mutable_bitField0_ & 0x00000004) != 0)) {
                    reportFilterContent_ = reportFilterContent_.getUnmodifiableView();
                }
                if (((mutable_bitField0_ & 0x00000008) != 0)) {
                    expressions_ = java.util.Collections.unmodifiableList(expressions_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply.Builder.class);
        }

        public static final int STATE_FIELD_NUMBER = 1;
        private int state_;
        /**
         * <pre>
         * 是否已关闭弹幕
         * 0:未关闭 1:已关闭
         * </pre>
         *
         * <code>int32 state = 1;</code>
         * @return The state.
         */
        @java.lang.Override
        public int getState() {
            return state_;
        }

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

        public static final int TEXT_SIDE_FIELD_NUMBER = 3;
        private volatile java.lang.Object textSide_;
        /**
         * <pre>
         * </pre>
         *
         * <code>string text_side = 3;</code>
         * @return The textSide.
         */
        @java.lang.Override
        public java.lang.String getTextSide() {
            java.lang.Object ref = textSide_;
            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();
                textSide_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>string text_side = 3;</code>
         * @return The bytes for textSide.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getTextSideBytes() {
            java.lang.Object ref = textSide_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                textSide_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DM_SGE_FIELD_NUMBER = 4;
        private com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig dmSge_;
        /**
         * <pre>
         * 分段弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
         * @return Whether the dmSge field is set.
         */
        @java.lang.Override
        public boolean hasDmSge() {
            return dmSge_ != null;
        }
        /**
         * <pre>
         * 分段弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
         * @return The dmSge.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig getDmSge() {
            return dmSge_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.getDefaultInstance() : dmSge_;
        }
        /**
         * <pre>
         * 分段弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfigOrBuilder getDmSgeOrBuilder() {
            return getDmSge();
        }

        public static final int FLAG_FIELD_NUMBER = 5;
        private com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig flag_;
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
         * @return Whether the flag field is set.
         */
        @java.lang.Override
        public boolean hasFlag() {
            return flag_ != null;
        }
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
         * @return The flag.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getFlag() {
            return flag_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance() : flag_;
        }
        /**
         * <pre>
         * 云屏蔽配置信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder getFlagOrBuilder() {
            return getFlag();
        }

        public static final int SPECIAL_DMS_FIELD_NUMBER = 6;
        private com.google.protobuf.LazyStringList specialDms_;
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @return A list containing the specialDms.
         */
        public com.google.protobuf.ProtocolStringList
        getSpecialDmsList() {
            return specialDms_;
        }
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @return The count of specialDms.
         */
        public int getSpecialDmsCount() {
            return specialDms_.size();
        }
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @param index The index of the element to return.
         * @return The specialDms at the given index.
         */
        public java.lang.String getSpecialDms(int index) {
            return specialDms_.get(index);
        }
        /**
         * <pre>
         * 高级弹幕专包url(bfs)
         * </pre>
         *
         * <code>repeated string special_dms = 6;</code>
         * @param index The index of the value to return.
         * @return The bytes of the specialDms at the given index.
         */
        public com.google.protobuf.ByteString
        getSpecialDmsBytes(int index) {
            return specialDms_.getByteString(index);
        }

        public static final int CHECK_BOX_FIELD_NUMBER = 7;
        private boolean checkBox_;
        /**
         * <pre>
         * check box 是否展示
         * </pre>
         *
         * <code>bool check_box = 7;</code>
         * @return The checkBox.
         */
        @java.lang.Override
        public boolean getCheckBox() {
            return checkBox_;
        }

        public static final int COUNT_FIELD_NUMBER = 8;
        private long count_;
        /**
         * <pre>
         * 弹幕数
         * </pre>
         *
         * <code>int64 count = 8;</code>
         * @return The count.
         */
        @java.lang.Override
        public long getCount() {
            return count_;
        }

        public static final int COMMANDDMS_FIELD_NUMBER = 9;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm> commandDms_;
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm> getCommandDmsList() {
            return commandDms_;
        }
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder>
        getCommandDmsOrBuilderList() {
            return commandDms_;
        }
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        @java.lang.Override
        public int getCommandDmsCount() {
            return commandDms_.size();
        }
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm getCommandDms(int index) {
            return commandDms_.get(index);
        }
        /**
         * <pre>
         * 互动弹幕
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder getCommandDmsOrBuilder(
                int index) {
            return commandDms_.get(index);
        }

        public static final int PLAYER_CONFIG_FIELD_NUMBER = 10;
        private com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig playerConfig_;
        /**
         * <pre>
         * 用户弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
         * @return Whether the playerConfig field is set.
         */
        @java.lang.Override
        public boolean hasPlayerConfig() {
            return playerConfig_ != null;
        }
        /**
         * <pre>
         * 用户弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
         * @return The playerConfig.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig getPlayerConfig() {
            return playerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.getDefaultInstance() : playerConfig_;
        }
        /**
         * <pre>
         * 用户弹幕配置
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfigOrBuilder getPlayerConfigOrBuilder() {
            return getPlayerConfig();
        }

        public static final int REPORT_FILTER_CONTENT_FIELD_NUMBER = 11;
        private com.google.protobuf.LazyStringList reportFilterContent_;
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @return A list containing the reportFilterContent.
         */
        public com.google.protobuf.ProtocolStringList
        getReportFilterContentList() {
            return reportFilterContent_;
        }
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @return The count of reportFilterContent.
         */
        public int getReportFilterContentCount() {
            return reportFilterContent_.size();
        }
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @param index The index of the element to return.
         * @return The reportFilterContent at the given index.
         */
        public java.lang.String getReportFilterContent(int index) {
            return reportFilterContent_.get(index);
        }
        /**
         * <pre>
         * 用户举报弹幕 cid维度屏蔽
         * </pre>
         *
         * <code>repeated string report_filter_content = 11;</code>
         * @param index The index of the value to return.
         * @return The bytes of the reportFilterContent at the given index.
         */
        public com.google.protobuf.ByteString
        getReportFilterContentBytes(int index) {
            return reportFilterContent_.getByteString(index);
        }

        public static final int EXPRESSIONS_FIELD_NUMBER = 12;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> expressions_;
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> getExpressionsList() {
            return expressions_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
        getExpressionsOrBuilderList() {
            return expressions_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        @java.lang.Override
        public int getExpressionsCount() {
            return expressions_.size();
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Expressions getExpressions(int index) {
            return expressions_.get(index);
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder getExpressionsOrBuilder(
                int index) {
            return expressions_.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 {
            if (state_ != 0) {
                output.writeInt32(1, state_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(textSide_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, textSide_);
            }
            if (dmSge_ != null) {
                output.writeMessage(4, getDmSge());
            }
            if (flag_ != null) {
                output.writeMessage(5, getFlag());
            }
            for (int i = 0; i < specialDms_.size(); i++) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 6, specialDms_.getRaw(i));
            }
            if (checkBox_ != false) {
                output.writeBool(7, checkBox_);
            }
            if (count_ != 0L) {
                output.writeInt64(8, count_);
            }
            for (int i = 0; i < commandDms_.size(); i++) {
                output.writeMessage(9, commandDms_.get(i));
            }
            if (playerConfig_ != null) {
                output.writeMessage(10, getPlayerConfig());
            }
            for (int i = 0; i < reportFilterContent_.size(); i++) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 11, reportFilterContent_.getRaw(i));
            }
            for (int i = 0; i < expressions_.size(); i++) {
                output.writeMessage(12, expressions_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (state_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(1, state_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(textSide_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, textSide_);
            }
            if (dmSge_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(4, getDmSge());
            }
            if (flag_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(5, getFlag());
            }
            {
                int dataSize = 0;
                for (int i = 0; i < specialDms_.size(); i++) {
                    dataSize += computeStringSizeNoTag(specialDms_.getRaw(i));
                }
                size += dataSize;
                size += 1 * getSpecialDmsList().size();
            }
            if (checkBox_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(7, checkBox_);
            }
            if (count_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(8, count_);
            }
            for (int i = 0; i < commandDms_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(9, commandDms_.get(i));
            }
            if (playerConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(10, getPlayerConfig());
            }
            {
                int dataSize = 0;
                for (int i = 0; i < reportFilterContent_.size(); i++) {
                    dataSize += computeStringSizeNoTag(reportFilterContent_.getRaw(i));
                }
                size += dataSize;
                size += 1 * getReportFilterContentList().size();
            }
            for (int i = 0; i < expressions_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(12, expressions_.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 com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply other = (com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply) obj;

            if (getState()
                    != other.getState()) return false;
            if (!getText()
                    .equals(other.getText())) return false;
            if (!getTextSide()
                    .equals(other.getTextSide())) return false;
            if (hasDmSge() != other.hasDmSge()) return false;
            if (hasDmSge()) {
                if (!getDmSge()
                        .equals(other.getDmSge())) return false;
            }
            if (hasFlag() != other.hasFlag()) return false;
            if (hasFlag()) {
                if (!getFlag()
                        .equals(other.getFlag())) return false;
            }
            if (!getSpecialDmsList()
                    .equals(other.getSpecialDmsList())) return false;
            if (getCheckBox()
                    != other.getCheckBox()) return false;
            if (getCount()
                    != other.getCount()) return false;
            if (!getCommandDmsList()
                    .equals(other.getCommandDmsList())) return false;
            if (hasPlayerConfig() != other.hasPlayerConfig()) return false;
            if (hasPlayerConfig()) {
                if (!getPlayerConfig()
                        .equals(other.getPlayerConfig())) return false;
            }
            if (!getReportFilterContentList()
                    .equals(other.getReportFilterContentList())) return false;
            if (!getExpressionsList()
                    .equals(other.getExpressionsList())) 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) + STATE_FIELD_NUMBER;
            hash = (53 * hash) + getState();
            hash = (37 * hash) + TEXT_FIELD_NUMBER;
            hash = (53 * hash) + getText().hashCode();
            hash = (37 * hash) + TEXT_SIDE_FIELD_NUMBER;
            hash = (53 * hash) + getTextSide().hashCode();
            if (hasDmSge()) {
                hash = (37 * hash) + DM_SGE_FIELD_NUMBER;
                hash = (53 * hash) + getDmSge().hashCode();
            }
            if (hasFlag()) {
                hash = (37 * hash) + FLAG_FIELD_NUMBER;
                hash = (53 * hash) + getFlag().hashCode();
            }
            if (getSpecialDmsCount() > 0) {
                hash = (37 * hash) + SPECIAL_DMS_FIELD_NUMBER;
                hash = (53 * hash) + getSpecialDmsList().hashCode();
            }
            hash = (37 * hash) + CHECK_BOX_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getCheckBox());
            hash = (37 * hash) + COUNT_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getCount());
            if (getCommandDmsCount() > 0) {
                hash = (37 * hash) + COMMANDDMS_FIELD_NUMBER;
                hash = (53 * hash) + getCommandDmsList().hashCode();
            }
            if (hasPlayerConfig()) {
                hash = (37 * hash) + PLAYER_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getPlayerConfig().hashCode();
            }
            if (getReportFilterContentCount() > 0) {
                hash = (37 * hash) + REPORT_FILTER_CONTENT_FIELD_NUMBER;
                hash = (53 * hash) + getReportFilterContentList().hashCode();
            }
            if (getExpressionsCount() > 0) {
                hash = (37 * hash) + EXPRESSIONS_FIELD_NUMBER;
                hash = (53 * hash) + getExpressionsList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * web端弹幕元数据-响应
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.DmWebViewReply}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.DmWebViewReply)
                com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReplyOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply.class, com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                text_ = "";

                textSide_ = "";

                if (dmSgeBuilder_ == null) {
                    dmSge_ = null;
                } else {
                    dmSge_ = null;
                    dmSgeBuilder_ = null;
                }
                if (flagBuilder_ == null) {
                    flag_ = null;
                } else {
                    flag_ = null;
                    flagBuilder_ = null;
                }
                specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                checkBox_ = false;

                count_ = 0L;

                if (commandDmsBuilder_ == null) {
                    commandDms_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000002);
                } else {
                    commandDmsBuilder_.clear();
                }
                if (playerConfigBuilder_ == null) {
                    playerConfig_ = null;
                } else {
                    playerConfig_ = null;
                    playerConfigBuilder_ = null;
                }
                reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000004);
                if (expressionsBuilder_ == null) {
                    expressions_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                } else {
                    expressionsBuilder_.clear();
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply build() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply result = new com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply(this);
                int from_bitField0_ = bitField0_;
                result.state_ = state_;
                result.text_ = text_;
                result.textSide_ = textSide_;
                if (dmSgeBuilder_ == null) {
                    result.dmSge_ = dmSge_;
                } else {
                    result.dmSge_ = dmSgeBuilder_.build();
                }
                if (flagBuilder_ == null) {
                    result.flag_ = flag_;
                } else {
                    result.flag_ = flagBuilder_.build();
                }
                if (((bitField0_ & 0x00000001) != 0)) {
                    specialDms_ = specialDms_.getUnmodifiableView();
                    bitField0_ = (bitField0_ & ~0x00000001);
                }
                result.specialDms_ = specialDms_;
                result.checkBox_ = checkBox_;
                result.count_ = count_;
                if (commandDmsBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0)) {
                        commandDms_ = java.util.Collections.unmodifiableList(commandDms_);
                        bitField0_ = (bitField0_ & ~0x00000002);
                    }
                    result.commandDms_ = commandDms_;
                } else {
                    result.commandDms_ = commandDmsBuilder_.build();
                }
                if (playerConfigBuilder_ == null) {
                    result.playerConfig_ = playerConfig_;
                } else {
                    result.playerConfig_ = playerConfigBuilder_.build();
                }
                if (((bitField0_ & 0x00000004) != 0)) {
                    reportFilterContent_ = reportFilterContent_.getUnmodifiableView();
                    bitField0_ = (bitField0_ & ~0x00000004);
                }
                result.reportFilterContent_ = reportFilterContent_;
                if (expressionsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        expressions_ = java.util.Collections.unmodifiableList(expressions_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.expressions_ = expressions_;
                } else {
                    result.expressions_ = expressionsBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply.getDefaultInstance()) return this;
                if (other.getState() != 0) {
                    setState(other.getState());
                }
                if (!other.getText().isEmpty()) {
                    text_ = other.text_;
                    onChanged();
                }
                if (!other.getTextSide().isEmpty()) {
                    textSide_ = other.textSide_;
                    onChanged();
                }
                if (other.hasDmSge()) {
                    mergeDmSge(other.getDmSge());
                }
                if (other.hasFlag()) {
                    mergeFlag(other.getFlag());
                }
                if (!other.specialDms_.isEmpty()) {
                    if (specialDms_.isEmpty()) {
                        specialDms_ = other.specialDms_;
                        bitField0_ = (bitField0_ & ~0x00000001);
                    } else {
                        ensureSpecialDmsIsMutable();
                        specialDms_.addAll(other.specialDms_);
                    }
                    onChanged();
                }
                if (other.getCheckBox() != false) {
                    setCheckBox(other.getCheckBox());
                }
                if (other.getCount() != 0L) {
                    setCount(other.getCount());
                }
                if (commandDmsBuilder_ == null) {
                    if (!other.commandDms_.isEmpty()) {
                        if (commandDms_.isEmpty()) {
                            commandDms_ = other.commandDms_;
                            bitField0_ = (bitField0_ & ~0x00000002);
                        } else {
                            ensureCommandDmsIsMutable();
                            commandDms_.addAll(other.commandDms_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.commandDms_.isEmpty()) {
                        if (commandDmsBuilder_.isEmpty()) {
                            commandDmsBuilder_.dispose();
                            commandDmsBuilder_ = null;
                            commandDms_ = other.commandDms_;
                            bitField0_ = (bitField0_ & ~0x00000002);
                            commandDmsBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getCommandDmsFieldBuilder() : null;
                        } else {
                            commandDmsBuilder_.addAllMessages(other.commandDms_);
                        }
                    }
                }
                if (other.hasPlayerConfig()) {
                    mergePlayerConfig(other.getPlayerConfig());
                }
                if (!other.reportFilterContent_.isEmpty()) {
                    if (reportFilterContent_.isEmpty()) {
                        reportFilterContent_ = other.reportFilterContent_;
                        bitField0_ = (bitField0_ & ~0x00000004);
                    } else {
                        ensureReportFilterContentIsMutable();
                        reportFilterContent_.addAll(other.reportFilterContent_);
                    }
                    onChanged();
                }
                if (expressionsBuilder_ == null) {
                    if (!other.expressions_.isEmpty()) {
                        if (expressions_.isEmpty()) {
                            expressions_ = other.expressions_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureExpressionsIsMutable();
                            expressions_.addAll(other.expressions_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.expressions_.isEmpty()) {
                        if (expressionsBuilder_.isEmpty()) {
                            expressionsBuilder_.dispose();
                            expressionsBuilder_ = null;
                            expressions_ = other.expressions_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            expressionsBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getExpressionsFieldBuilder() : null;
                        } else {
                            expressionsBuilder_.addAllMessages(other.expressions_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private int state_ ;
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>int32 state = 1;</code>
             * @return The state.
             */
            @java.lang.Override
            public int getState() {
                return state_;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>int32 state = 1;</code>
             * @param value The state to set.
             * @return This builder for chaining.
             */
            public Builder setState(int value) {

                state_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 是否已关闭弹幕
             * 0:未关闭 1:已关闭
             * </pre>
             *
             * <code>int32 state = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearState() {

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

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

                text_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string text = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearText() {

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

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

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

                textSide_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string text_side = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearTextSide() {

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

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

            private com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig dmSge_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfigOrBuilder> dmSgeBuilder_;
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             * @return Whether the dmSge field is set.
             */
            public boolean hasDmSge() {
                return dmSgeBuilder_ != null || dmSge_ != null;
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             * @return The dmSge.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig getDmSge() {
                if (dmSgeBuilder_ == null) {
                    return dmSge_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.getDefaultInstance() : dmSge_;
                } else {
                    return dmSgeBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             */
            public Builder setDmSge(com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig value) {
                if (dmSgeBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    dmSge_ = value;
                    onChanged();
                } else {
                    dmSgeBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             */
            public Builder setDmSge(
                    com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder builderForValue) {
                if (dmSgeBuilder_ == null) {
                    dmSge_ = builderForValue.build();
                    onChanged();
                } else {
                    dmSgeBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             */
            public Builder mergeDmSge(com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig value) {
                if (dmSgeBuilder_ == null) {
                    if (dmSge_ != null) {
                        dmSge_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.newBuilder(dmSge_).mergeFrom(value).buildPartial();
                    } else {
                        dmSge_ = value;
                    }
                    onChanged();
                } else {
                    dmSgeBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             */
            public Builder clearDmSge() {
                if (dmSgeBuilder_ == null) {
                    dmSge_ = null;
                    onChanged();
                } else {
                    dmSge_ = null;
                    dmSgeBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder getDmSgeBuilder() {

                onChanged();
                return getDmSgeFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfigOrBuilder getDmSgeOrBuilder() {
                if (dmSgeBuilder_ != null) {
                    return dmSgeBuilder_.getMessageOrBuilder();
                } else {
                    return dmSge_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.getDefaultInstance() : dmSge_;
                }
            }
            /**
             * <pre>
             * 分段弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DmSegConfig dm_sge = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfigOrBuilder>
            getDmSgeFieldBuilder() {
                if (dmSgeBuilder_ == null) {
                    dmSgeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DmSegConfigOrBuilder>(
                            getDmSge(),
                            getParentForChildren(),
                            isClean());
                    dmSge_ = null;
                }
                return dmSgeBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig flag_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder> flagBuilder_;
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             * @return Whether the flag field is set.
             */
            public boolean hasFlag() {
                return flagBuilder_ != null || flag_ != null;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             * @return The flag.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig getFlag() {
                if (flagBuilder_ == null) {
                    return flag_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance() : flag_;
                } else {
                    return flagBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             */
            public Builder setFlag(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig value) {
                if (flagBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    flag_ = value;
                    onChanged();
                } else {
                    flagBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             */
            public Builder setFlag(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder builderForValue) {
                if (flagBuilder_ == null) {
                    flag_ = builderForValue.build();
                    onChanged();
                } else {
                    flagBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             */
            public Builder mergeFlag(com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig value) {
                if (flagBuilder_ == null) {
                    if (flag_ != null) {
                        flag_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.newBuilder(flag_).mergeFrom(value).buildPartial();
                    } else {
                        flag_ = value;
                    }
                    onChanged();
                } else {
                    flagBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             */
            public Builder clearFlag() {
                if (flagBuilder_ == null) {
                    flag_ = null;
                    onChanged();
                } else {
                    flag_ = null;
                    flagBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder getFlagBuilder() {

                onChanged();
                return getFlagFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder getFlagOrBuilder() {
                if (flagBuilder_ != null) {
                    return flagBuilder_.getMessageOrBuilder();
                } else {
                    return flag_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.getDefaultInstance() : flag_;
                }
            }
            /**
             * <pre>
             * 云屏蔽配置信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmakuFlagConfig flag = 5;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder>
            getFlagFieldBuilder() {
                if (flagBuilder_ == null) {
                    flagBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmakuFlagConfigOrBuilder>(
                            getFlag(),
                            getParentForChildren(),
                            isClean());
                    flag_ = null;
                }
                return flagBuilder_;
            }

            private com.google.protobuf.LazyStringList specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            private void ensureSpecialDmsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    specialDms_ = new com.google.protobuf.LazyStringArrayList(specialDms_);
                    bitField0_ |= 0x00000001;
                }
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @return A list containing the specialDms.
             */
            public com.google.protobuf.ProtocolStringList
            getSpecialDmsList() {
                return specialDms_.getUnmodifiableView();
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @return The count of specialDms.
             */
            public int getSpecialDmsCount() {
                return specialDms_.size();
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @param index The index of the element to return.
             * @return The specialDms at the given index.
             */
            public java.lang.String getSpecialDms(int index) {
                return specialDms_.get(index);
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @param index The index of the value to return.
             * @return The bytes of the specialDms at the given index.
             */
            public com.google.protobuf.ByteString
            getSpecialDmsBytes(int index) {
                return specialDms_.getByteString(index);
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @param index The index to set the value at.
             * @param value The specialDms to set.
             * @return This builder for chaining.
             */
            public Builder setSpecialDms(
                    int index, java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureSpecialDmsIsMutable();
                specialDms_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @param value The specialDms to add.
             * @return This builder for chaining.
             */
            public Builder addSpecialDms(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureSpecialDmsIsMutable();
                specialDms_.add(value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @param values The specialDms to add.
             * @return This builder for chaining.
             */
            public Builder addAllSpecialDms(
                    java.lang.Iterable<java.lang.String> values) {
                ensureSpecialDmsIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                        values, specialDms_);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearSpecialDms() {
                specialDms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 高级弹幕专包url(bfs)
             * </pre>
             *
             * <code>repeated string special_dms = 6;</code>
             * @param value The bytes of the specialDms to add.
             * @return This builder for chaining.
             */
            public Builder addSpecialDmsBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ensureSpecialDmsIsMutable();
                specialDms_.add(value);
                onChanged();
                return this;
            }

            private boolean checkBox_ ;
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>bool check_box = 7;</code>
             * @return The checkBox.
             */
            @java.lang.Override
            public boolean getCheckBox() {
                return checkBox_;
            }
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>bool check_box = 7;</code>
             * @param value The checkBox to set.
             * @return This builder for chaining.
             */
            public Builder setCheckBox(boolean value) {

                checkBox_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * check box 是否展示
             * </pre>
             *
             * <code>bool check_box = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearCheckBox() {

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

            private long count_ ;
            /**
             * <pre>
             * 弹幕数
             * </pre>
             *
             * <code>int64 count = 8;</code>
             * @return The count.
             */
            @java.lang.Override
            public long getCount() {
                return count_;
            }
            /**
             * <pre>
             * 弹幕数
             * </pre>
             *
             * <code>int64 count = 8;</code>
             * @param value The count to set.
             * @return This builder for chaining.
             */
            public Builder setCount(long value) {

                count_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 弹幕数
             * </pre>
             *
             * <code>int64 count = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearCount() {

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

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm> commandDms_ =
                    java.util.Collections.emptyList();
            private void ensureCommandDmsIsMutable() {
                if (!((bitField0_ & 0x00000002) != 0)) {
                    commandDms_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm>(commandDms_);
                    bitField0_ |= 0x00000002;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.CommandDm, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder, com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder> commandDmsBuilder_;

            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm> getCommandDmsList() {
                if (commandDmsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(commandDms_);
                } else {
                    return commandDmsBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public int getCommandDmsCount() {
                if (commandDmsBuilder_ == null) {
                    return commandDms_.size();
                } else {
                    return commandDmsBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm getCommandDms(int index) {
                if (commandDmsBuilder_ == null) {
                    return commandDms_.get(index);
                } else {
                    return commandDmsBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder setCommandDms(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm value) {
                if (commandDmsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureCommandDmsIsMutable();
                    commandDms_.set(index, value);
                    onChanged();
                } else {
                    commandDmsBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder setCommandDms(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder builderForValue) {
                if (commandDmsBuilder_ == null) {
                    ensureCommandDmsIsMutable();
                    commandDms_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    commandDmsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder addCommandDms(com.yutou.qqbot.bilibili.VideoDanMu.CommandDm value) {
                if (commandDmsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureCommandDmsIsMutable();
                    commandDms_.add(value);
                    onChanged();
                } else {
                    commandDmsBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder addCommandDms(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm value) {
                if (commandDmsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureCommandDmsIsMutable();
                    commandDms_.add(index, value);
                    onChanged();
                } else {
                    commandDmsBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder addCommandDms(
                    com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder builderForValue) {
                if (commandDmsBuilder_ == null) {
                    ensureCommandDmsIsMutable();
                    commandDms_.add(builderForValue.build());
                    onChanged();
                } else {
                    commandDmsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder addCommandDms(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder builderForValue) {
                if (commandDmsBuilder_ == null) {
                    ensureCommandDmsIsMutable();
                    commandDms_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    commandDmsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder addAllCommandDms(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.CommandDm> values) {
                if (commandDmsBuilder_ == null) {
                    ensureCommandDmsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, commandDms_);
                    onChanged();
                } else {
                    commandDmsBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder clearCommandDms() {
                if (commandDmsBuilder_ == null) {
                    commandDms_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000002);
                    onChanged();
                } else {
                    commandDmsBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public Builder removeCommandDms(int index) {
                if (commandDmsBuilder_ == null) {
                    ensureCommandDmsIsMutable();
                    commandDms_.remove(index);
                    onChanged();
                } else {
                    commandDmsBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder getCommandDmsBuilder(
                    int index) {
                return getCommandDmsFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder getCommandDmsOrBuilder(
                    int index) {
                if (commandDmsBuilder_ == null) {
                    return commandDms_.get(index);  } else {
                    return commandDmsBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder>
            getCommandDmsOrBuilderList() {
                if (commandDmsBuilder_ != null) {
                    return commandDmsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(commandDms_);
                }
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder addCommandDmsBuilder() {
                return getCommandDmsFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.getDefaultInstance());
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder addCommandDmsBuilder(
                    int index) {
                return getCommandDmsFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.getDefaultInstance());
            }
            /**
             * <pre>
             * 互动弹幕
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.CommandDm commandDms = 9;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder>
            getCommandDmsBuilderList() {
                return getCommandDmsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.CommandDm, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder, com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder>
            getCommandDmsFieldBuilder() {
                if (commandDmsBuilder_ == null) {
                    commandDmsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.CommandDm, com.yutou.qqbot.bilibili.VideoDanMu.CommandDm.Builder, com.yutou.qqbot.bilibili.VideoDanMu.CommandDmOrBuilder>(
                            commandDms_,
                            ((bitField0_ & 0x00000002) != 0),
                            getParentForChildren(),
                            isClean());
                    commandDms_ = null;
                }
                return commandDmsBuilder_;
            }

            private com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig playerConfig_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfigOrBuilder> playerConfigBuilder_;
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             * @return Whether the playerConfig field is set.
             */
            public boolean hasPlayerConfig() {
                return playerConfigBuilder_ != null || playerConfig_ != null;
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             * @return The playerConfig.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig getPlayerConfig() {
                if (playerConfigBuilder_ == null) {
                    return playerConfig_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.getDefaultInstance() : playerConfig_;
                } else {
                    return playerConfigBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             */
            public Builder setPlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig value) {
                if (playerConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    playerConfig_ = value;
                    onChanged();
                } else {
                    playerConfigBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             */
            public Builder setPlayerConfig(
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder builderForValue) {
                if (playerConfigBuilder_ == null) {
                    playerConfig_ = builderForValue.build();
                    onChanged();
                } else {
                    playerConfigBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             */
            public Builder mergePlayerConfig(com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig value) {
                if (playerConfigBuilder_ == null) {
                    if (playerConfig_ != null) {
                        playerConfig_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.newBuilder(playerConfig_).mergeFrom(value).buildPartial();
                    } else {
                        playerConfig_ = value;
                    }
                    onChanged();
                } else {
                    playerConfigBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             */
            public Builder clearPlayerConfig() {
                if (playerConfigBuilder_ == null) {
                    playerConfig_ = null;
                    onChanged();
                } else {
                    playerConfig_ = null;
                    playerConfigBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder getPlayerConfigBuilder() {

                onChanged();
                return getPlayerConfigFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfigOrBuilder getPlayerConfigOrBuilder() {
                if (playerConfigBuilder_ != null) {
                    return playerConfigBuilder_.getMessageOrBuilder();
                } else {
                    return playerConfig_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.getDefaultInstance() : playerConfig_;
                }
            }
            /**
             * <pre>
             * 用户弹幕配置
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.DanmuWebPlayerConfig player_config = 10;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfigOrBuilder>
            getPlayerConfigFieldBuilder() {
                if (playerConfigBuilder_ == null) {
                    playerConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfig.Builder, com.yutou.qqbot.bilibili.VideoDanMu.DanmuWebPlayerConfigOrBuilder>(
                            getPlayerConfig(),
                            getParentForChildren(),
                            isClean());
                    playerConfig_ = null;
                }
                return playerConfigBuilder_;
            }

            private com.google.protobuf.LazyStringList reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            private void ensureReportFilterContentIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    reportFilterContent_ = new com.google.protobuf.LazyStringArrayList(reportFilterContent_);
                    bitField0_ |= 0x00000004;
                }
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @return A list containing the reportFilterContent.
             */
            public com.google.protobuf.ProtocolStringList
            getReportFilterContentList() {
                return reportFilterContent_.getUnmodifiableView();
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @return The count of reportFilterContent.
             */
            public int getReportFilterContentCount() {
                return reportFilterContent_.size();
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @param index The index of the element to return.
             * @return The reportFilterContent at the given index.
             */
            public java.lang.String getReportFilterContent(int index) {
                return reportFilterContent_.get(index);
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @param index The index of the value to return.
             * @return The bytes of the reportFilterContent at the given index.
             */
            public com.google.protobuf.ByteString
            getReportFilterContentBytes(int index) {
                return reportFilterContent_.getByteString(index);
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @param index The index to set the value at.
             * @param value The reportFilterContent to set.
             * @return This builder for chaining.
             */
            public Builder setReportFilterContent(
                    int index, java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureReportFilterContentIsMutable();
                reportFilterContent_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @param value The reportFilterContent to add.
             * @return This builder for chaining.
             */
            public Builder addReportFilterContent(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureReportFilterContentIsMutable();
                reportFilterContent_.add(value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @param values The reportFilterContent to add.
             * @return This builder for chaining.
             */
            public Builder addAllReportFilterContent(
                    java.lang.Iterable<java.lang.String> values) {
                ensureReportFilterContentIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                        values, reportFilterContent_);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearReportFilterContent() {
                reportFilterContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户举报弹幕 cid维度屏蔽
             * </pre>
             *
             * <code>repeated string report_filter_content = 11;</code>
             * @param value The bytes of the reportFilterContent to add.
             * @return This builder for chaining.
             */
            public Builder addReportFilterContentBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ensureReportFilterContentIsMutable();
                reportFilterContent_.add(value);
                onChanged();
                return this;
            }

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> expressions_ =
                    java.util.Collections.emptyList();
            private void ensureExpressionsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    expressions_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Expressions>(expressions_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Expressions, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder> expressionsBuilder_;

            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions> getExpressionsList() {
                if (expressionsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(expressions_);
                } else {
                    return expressionsBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public int getExpressionsCount() {
                if (expressionsBuilder_ == null) {
                    return expressions_.size();
                } else {
                    return expressionsBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions getExpressions(int index) {
                if (expressionsBuilder_ == null) {
                    return expressions_.get(index);
                } else {
                    return expressionsBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder setExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions value) {
                if (expressionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureExpressionsIsMutable();
                    expressions_.set(index, value);
                    onChanged();
                } else {
                    expressionsBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder setExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder builderForValue) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    expressionsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder addExpressions(com.yutou.qqbot.bilibili.VideoDanMu.Expressions value) {
                if (expressionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureExpressionsIsMutable();
                    expressions_.add(value);
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder addExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions value) {
                if (expressionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureExpressionsIsMutable();
                    expressions_.add(index, value);
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder addExpressions(
                    com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder builderForValue) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.add(builderForValue.build());
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder addExpressions(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder builderForValue) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    expressionsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder addAllExpressions(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.Expressions> values) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, expressions_);
                    onChanged();
                } else {
                    expressionsBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder clearExpressions() {
                if (expressionsBuilder_ == null) {
                    expressions_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    expressionsBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public Builder removeExpressions(int index) {
                if (expressionsBuilder_ == null) {
                    ensureExpressionsIsMutable();
                    expressions_.remove(index);
                    onChanged();
                } else {
                    expressionsBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder getExpressionsBuilder(
                    int index) {
                return getExpressionsFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder getExpressionsOrBuilder(
                    int index) {
                if (expressionsBuilder_ == null) {
                    return expressions_.get(index);  } else {
                    return expressionsBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
            getExpressionsOrBuilderList() {
                if (expressionsBuilder_ != null) {
                    return expressionsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(expressions_);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder addExpressionsBuilder() {
                return getExpressionsFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.Expressions.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder addExpressionsBuilder(
                    int index) {
                return getExpressionsFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expressions expressions = 12;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder>
            getExpressionsBuilderList() {
                return getExpressionsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Expressions, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>
            getExpressionsFieldBuilder() {
                if (expressionsBuilder_ == null) {
                    expressionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.Expressions, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder>(
                            expressions_,
                            ((bitField0_ & 0x00000008) != 0),
                            getParentForChildren(),
                            isClean());
                    expressions_ = null;
                }
                return expressionsBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.DmWebViewReply)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.DmWebViewReply)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.DmWebViewReply getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface ExpoReportOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.ExpoReport)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>bool should_report_at_end = 1;</code>
         * @return The shouldReportAtEnd.
         */
        boolean getShouldReportAtEnd();
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.ExpoReport}
     */
    public static final class ExpoReport extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.ExpoReport)
            ExpoReportOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use ExpoReport.newBuilder() to construct.
        private ExpoReport(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private ExpoReport() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private ExpoReport(
                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: {

                            shouldReportAtEnd_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_ExpoReport_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_ExpoReport_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.class, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder.class);
        }

        public static final int SHOULD_REPORT_AT_END_FIELD_NUMBER = 1;
        private boolean shouldReportAtEnd_;
        /**
         * <pre>
         * </pre>
         *
         * <code>bool should_report_at_end = 1;</code>
         * @return The shouldReportAtEnd.
         */
        @java.lang.Override
        public boolean getShouldReportAtEnd() {
            return shouldReportAtEnd_;
        }

        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 (shouldReportAtEnd_ != false) {
                output.writeBool(1, shouldReportAtEnd_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (shouldReportAtEnd_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, shouldReportAtEnd_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport other = (com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport) obj;

            if (getShouldReportAtEnd()
                    != other.getShouldReportAtEnd()) 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) + SHOULD_REPORT_AT_END_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getShouldReportAtEnd());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.ExpoReport}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.ExpoReport)
                com.yutou.qqbot.bilibili.VideoDanMu.ExpoReportOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_ExpoReport_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_ExpoReport_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.class, com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.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();
                shouldReportAtEnd_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_ExpoReport_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport build() {
                com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport result = new com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport(this);
                result.shouldReportAtEnd_ = shouldReportAtEnd_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport.getDefaultInstance()) return this;
                if (other.getShouldReportAtEnd() != false) {
                    setShouldReportAtEnd(other.getShouldReportAtEnd());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean shouldReportAtEnd_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>bool should_report_at_end = 1;</code>
             * @return The shouldReportAtEnd.
             */
            @java.lang.Override
            public boolean getShouldReportAtEnd() {
                return shouldReportAtEnd_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>bool should_report_at_end = 1;</code>
             * @param value The shouldReportAtEnd to set.
             * @return This builder for chaining.
             */
            public Builder setShouldReportAtEnd(boolean value) {

                shouldReportAtEnd_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>bool should_report_at_end = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearShouldReportAtEnd() {

                shouldReportAtEnd_ = 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:com.yutou.qqbot.bilibili.ExpoReport)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.ExpoReport)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.ExpoReport getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface ExpressionOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.Expression)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @return A list containing the keyword.
         */
        java.util.List<java.lang.String>
        getKeywordList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @return The count of keyword.
         */
        int getKeywordCount();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @param index The index of the element to return.
         * @return The keyword at the given index.
         */
        java.lang.String getKeyword(int index);
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @param index The index of the value to return.
         * @return The bytes of the keyword at the given index.
         */
        com.google.protobuf.ByteString
        getKeywordBytes(int index);

        /**
         * <pre>
         * </pre>
         *
         * <code>string url = 2;</code>
         * @return The url.
         */
        java.lang.String getUrl();
        /**
         * <pre>
         * </pre>
         *
         * <code>string url = 2;</code>
         * @return The bytes for url.
         */
        com.google.protobuf.ByteString
        getUrlBytes();

        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Period>
        getPeriodList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.Period getPeriod(int index);
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        int getPeriodCount();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder>
        getPeriodOrBuilderList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder getPeriodOrBuilder(
                int index);
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.Expression}
     */
    public static final class Expression extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.Expression)
            ExpressionOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Expression.newBuilder() to construct.
        private Expression(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Expression() {
            keyword_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            url_ = "";
            period_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private Expression(
                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: {
                            java.lang.String s = input.readStringRequireUtf8();
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                keyword_ = new com.google.protobuf.LazyStringArrayList();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            keyword_.add(s);
                            break;
                        }
                        case 18: {
                            java.lang.String s = input.readStringRequireUtf8();

                            url_ = s;
                            break;
                        }
                        case 26: {
                            if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                                period_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Period>();
                                mutable_bitField0_ |= 0x00000002;
                            }
                            period_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.Period.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    keyword_ = keyword_.getUnmodifiableView();
                }
                if (((mutable_bitField0_ & 0x00000002) != 0)) {
                    period_ = java.util.Collections.unmodifiableList(period_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expression_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expression_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.Expression.class, com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder.class);
        }

        public static final int KEYWORD_FIELD_NUMBER = 1;
        private com.google.protobuf.LazyStringList keyword_;
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @return A list containing the keyword.
         */
        public com.google.protobuf.ProtocolStringList
        getKeywordList() {
            return keyword_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @return The count of keyword.
         */
        public int getKeywordCount() {
            return keyword_.size();
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @param index The index of the element to return.
         * @return The keyword at the given index.
         */
        public java.lang.String getKeyword(int index) {
            return keyword_.get(index);
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated string keyword = 1;</code>
         * @param index The index of the value to return.
         * @return The bytes of the keyword at the given index.
         */
        public com.google.protobuf.ByteString
        getKeywordBytes(int index) {
            return keyword_.getByteString(index);
        }

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

        public static final int PERIOD_FIELD_NUMBER = 3;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Period> period_;
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Period> getPeriodList() {
            return period_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder>
        getPeriodOrBuilderList() {
            return period_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        @java.lang.Override
        public int getPeriodCount() {
            return period_.size();
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Period getPeriod(int index) {
            return period_.get(index);
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder getPeriodOrBuilder(
                int index) {
            return period_.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 < keyword_.size(); i++) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, keyword_.getRaw(i));
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, url_);
            }
            for (int i = 0; i < period_.size(); i++) {
                output.writeMessage(3, period_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            {
                int dataSize = 0;
                for (int i = 0; i < keyword_.size(); i++) {
                    dataSize += computeStringSizeNoTag(keyword_.getRaw(i));
                }
                size += dataSize;
                size += 1 * getKeywordList().size();
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, url_);
            }
            for (int i = 0; i < period_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(3, period_.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 com.yutou.qqbot.bilibili.VideoDanMu.Expression)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.Expression other = (com.yutou.qqbot.bilibili.VideoDanMu.Expression) obj;

            if (!getKeywordList()
                    .equals(other.getKeywordList())) return false;
            if (!getUrl()
                    .equals(other.getUrl())) return false;
            if (!getPeriodList()
                    .equals(other.getPeriodList())) 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 (getKeywordCount() > 0) {
                hash = (37 * hash) + KEYWORD_FIELD_NUMBER;
                hash = (53 * hash) + getKeywordList().hashCode();
            }
            hash = (37 * hash) + URL_FIELD_NUMBER;
            hash = (53 * hash) + getUrl().hashCode();
            if (getPeriodCount() > 0) {
                hash = (37 * hash) + PERIOD_FIELD_NUMBER;
                hash = (53 * hash) + getPeriodList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.Expression prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.Expression}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.Expression)
                com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expression_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expression_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.Expression.class, com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.Expression.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                    com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                        .alwaysUseFieldBuilders) {
                    getPeriodFieldBuilder();
                }
            }
            @java.lang.Override
            public Builder clear() {
                super.clear();
                keyword_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                url_ = "";

                if (periodBuilder_ == null) {
                    period_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000002);
                } else {
                    periodBuilder_.clear();
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expression_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Expression getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.Expression.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Expression build() {
                com.yutou.qqbot.bilibili.VideoDanMu.Expression result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Expression buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.Expression result = new com.yutou.qqbot.bilibili.VideoDanMu.Expression(this);
                int from_bitField0_ = bitField0_;
                if (((bitField0_ & 0x00000001) != 0)) {
                    keyword_ = keyword_.getUnmodifiableView();
                    bitField0_ = (bitField0_ & ~0x00000001);
                }
                result.keyword_ = keyword_;
                result.url_ = url_;
                if (periodBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0)) {
                        period_ = java.util.Collections.unmodifiableList(period_);
                        bitField0_ = (bitField0_ & ~0x00000002);
                    }
                    result.period_ = period_;
                } else {
                    result.period_ = periodBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.Expression) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.Expression)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.Expression other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.Expression.getDefaultInstance()) return this;
                if (!other.keyword_.isEmpty()) {
                    if (keyword_.isEmpty()) {
                        keyword_ = other.keyword_;
                        bitField0_ = (bitField0_ & ~0x00000001);
                    } else {
                        ensureKeywordIsMutable();
                        keyword_.addAll(other.keyword_);
                    }
                    onChanged();
                }
                if (!other.getUrl().isEmpty()) {
                    url_ = other.url_;
                    onChanged();
                }
                if (periodBuilder_ == null) {
                    if (!other.period_.isEmpty()) {
                        if (period_.isEmpty()) {
                            period_ = other.period_;
                            bitField0_ = (bitField0_ & ~0x00000002);
                        } else {
                            ensurePeriodIsMutable();
                            period_.addAll(other.period_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.period_.isEmpty()) {
                        if (periodBuilder_.isEmpty()) {
                            periodBuilder_.dispose();
                            periodBuilder_ = null;
                            period_ = other.period_;
                            bitField0_ = (bitField0_ & ~0x00000002);
                            periodBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getPeriodFieldBuilder() : null;
                        } else {
                            periodBuilder_.addAllMessages(other.period_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.Expression parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.Expression) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private com.google.protobuf.LazyStringList keyword_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            private void ensureKeywordIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    keyword_ = new com.google.protobuf.LazyStringArrayList(keyword_);
                    bitField0_ |= 0x00000001;
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @return A list containing the keyword.
             */
            public com.google.protobuf.ProtocolStringList
            getKeywordList() {
                return keyword_.getUnmodifiableView();
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @return The count of keyword.
             */
            public int getKeywordCount() {
                return keyword_.size();
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @param index The index of the element to return.
             * @return The keyword at the given index.
             */
            public java.lang.String getKeyword(int index) {
                return keyword_.get(index);
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @param index The index of the value to return.
             * @return The bytes of the keyword at the given index.
             */
            public com.google.protobuf.ByteString
            getKeywordBytes(int index) {
                return keyword_.getByteString(index);
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @param index The index to set the value at.
             * @param value The keyword to set.
             * @return This builder for chaining.
             */
            public Builder setKeyword(
                    int index, java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureKeywordIsMutable();
                keyword_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @param value The keyword to add.
             * @return This builder for chaining.
             */
            public Builder addKeyword(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureKeywordIsMutable();
                keyword_.add(value);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @param values The keyword to add.
             * @return This builder for chaining.
             */
            public Builder addAllKeyword(
                    java.lang.Iterable<java.lang.String> values) {
                ensureKeywordIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                        values, keyword_);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearKeyword() {
                keyword_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated string keyword = 1;</code>
             * @param value The bytes of the keyword to add.
             * @return This builder for chaining.
             */
            public Builder addKeywordBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ensureKeywordIsMutable();
                keyword_.add(value);
                onChanged();
                return this;
            }

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

                url_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string url = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearUrl() {

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

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

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Period> period_ =
                    java.util.Collections.emptyList();
            private void ensurePeriodIsMutable() {
                if (!((bitField0_ & 0x00000002) != 0)) {
                    period_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Period>(period_);
                    bitField0_ |= 0x00000002;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Period, com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder> periodBuilder_;

            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Period> getPeriodList() {
                if (periodBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(period_);
                } else {
                    return periodBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public int getPeriodCount() {
                if (periodBuilder_ == null) {
                    return period_.size();
                } else {
                    return periodBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Period getPeriod(int index) {
                if (periodBuilder_ == null) {
                    return period_.get(index);
                } else {
                    return periodBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder setPeriod(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Period value) {
                if (periodBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensurePeriodIsMutable();
                    period_.set(index, value);
                    onChanged();
                } else {
                    periodBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder setPeriod(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder builderForValue) {
                if (periodBuilder_ == null) {
                    ensurePeriodIsMutable();
                    period_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    periodBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder addPeriod(com.yutou.qqbot.bilibili.VideoDanMu.Period value) {
                if (periodBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensurePeriodIsMutable();
                    period_.add(value);
                    onChanged();
                } else {
                    periodBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder addPeriod(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Period value) {
                if (periodBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensurePeriodIsMutable();
                    period_.add(index, value);
                    onChanged();
                } else {
                    periodBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder addPeriod(
                    com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder builderForValue) {
                if (periodBuilder_ == null) {
                    ensurePeriodIsMutable();
                    period_.add(builderForValue.build());
                    onChanged();
                } else {
                    periodBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder addPeriod(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder builderForValue) {
                if (periodBuilder_ == null) {
                    ensurePeriodIsMutable();
                    period_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    periodBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder addAllPeriod(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.Period> values) {
                if (periodBuilder_ == null) {
                    ensurePeriodIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, period_);
                    onChanged();
                } else {
                    periodBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder clearPeriod() {
                if (periodBuilder_ == null) {
                    period_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000002);
                    onChanged();
                } else {
                    periodBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public Builder removePeriod(int index) {
                if (periodBuilder_ == null) {
                    ensurePeriodIsMutable();
                    period_.remove(index);
                    onChanged();
                } else {
                    periodBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder getPeriodBuilder(
                    int index) {
                return getPeriodFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder getPeriodOrBuilder(
                    int index) {
                if (periodBuilder_ == null) {
                    return period_.get(index);  } else {
                    return periodBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder>
            getPeriodOrBuilderList() {
                if (periodBuilder_ != null) {
                    return periodBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(period_);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder addPeriodBuilder() {
                return getPeriodFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.Period.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder addPeriodBuilder(
                    int index) {
                return getPeriodFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.Period.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Period period = 3;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder>
            getPeriodBuilderList() {
                return getPeriodFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Period, com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder>
            getPeriodFieldBuilder() {
                if (periodBuilder_ == null) {
                    periodBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.Period, com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder, com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder>(
                            period_,
                            ((bitField0_ & 0x00000002) != 0),
                            getParentForChildren(),
                            isClean());
                    period_ = null;
                }
                return periodBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.Expression)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.Expression)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.Expression DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.Expression();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Expression getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Expression getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface ExpressionsOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.Expressions)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expression>
        getDataList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.Expression getData(int index);
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        int getDataCount();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder>
        getDataOrBuilderList();
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder getDataOrBuilder(
                int index);
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.Expressions}
     */
    public static final class Expressions extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.Expressions)
            ExpressionsOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Expressions.newBuilder() to construct.
        private Expressions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Expressions() {
            data_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private Expressions(
                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)) {
                                data_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Expression>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            data_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.Expression.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    data_ = java.util.Collections.unmodifiableList(data_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expressions_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expressions_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.Expressions.class, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder.class);
        }

        public static final int DATA_FIELD_NUMBER = 1;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expression> data_;
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expression> getDataList() {
            return data_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder>
        getDataOrBuilderList() {
            return data_;
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        @java.lang.Override
        public int getDataCount() {
            return data_.size();
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Expression getData(int index) {
            return data_.get(index);
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder getDataOrBuilder(
                int index) {
            return data_.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 < data_.size(); i++) {
                output.writeMessage(1, data_.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 < data_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(1, data_.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 com.yutou.qqbot.bilibili.VideoDanMu.Expressions)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.Expressions other = (com.yutou.qqbot.bilibili.VideoDanMu.Expressions) obj;

            if (!getDataList()
                    .equals(other.getDataList())) 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 (getDataCount() > 0) {
                hash = (37 * hash) + DATA_FIELD_NUMBER;
                hash = (53 * hash) + getDataList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.Expressions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.Expressions}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.Expressions)
                com.yutou.qqbot.bilibili.VideoDanMu.ExpressionsOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expressions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expressions_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.Expressions.class, com.yutou.qqbot.bilibili.VideoDanMu.Expressions.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.Expressions.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Expressions_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.Expressions.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions build() {
                com.yutou.qqbot.bilibili.VideoDanMu.Expressions result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Expressions buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.Expressions result = new com.yutou.qqbot.bilibili.VideoDanMu.Expressions(this);
                int from_bitField0_ = bitField0_;
                if (dataBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        data_ = java.util.Collections.unmodifiableList(data_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.data_ = data_;
                } else {
                    result.data_ = dataBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.Expressions) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.Expressions)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.Expressions other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.Expressions.getDefaultInstance()) return this;
                if (dataBuilder_ == null) {
                    if (!other.data_.isEmpty()) {
                        if (data_.isEmpty()) {
                            data_ = other.data_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureDataIsMutable();
                            data_.addAll(other.data_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.data_.isEmpty()) {
                        if (dataBuilder_.isEmpty()) {
                            dataBuilder_.dispose();
                            dataBuilder_ = null;
                            data_ = other.data_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            dataBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getDataFieldBuilder() : null;
                        } else {
                            dataBuilder_.addAllMessages(other.data_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.Expressions parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.Expressions) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expression> data_ =
                    java.util.Collections.emptyList();
            private void ensureDataIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    data_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.Expression>(data_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Expression, com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder> dataBuilder_;

            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expression> getDataList() {
                if (dataBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(data_);
                } else {
                    return dataBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public int getDataCount() {
                if (dataBuilder_ == null) {
                    return data_.size();
                } else {
                    return dataBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expression getData(int index) {
                if (dataBuilder_ == null) {
                    return data_.get(index);
                } else {
                    return dataBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder setData(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expression value) {
                if (dataBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDataIsMutable();
                    data_.set(index, value);
                    onChanged();
                } else {
                    dataBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder setData(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder builderForValue) {
                if (dataBuilder_ == null) {
                    ensureDataIsMutable();
                    data_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    dataBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder addData(com.yutou.qqbot.bilibili.VideoDanMu.Expression value) {
                if (dataBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDataIsMutable();
                    data_.add(value);
                    onChanged();
                } else {
                    dataBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder addData(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expression value) {
                if (dataBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDataIsMutable();
                    data_.add(index, value);
                    onChanged();
                } else {
                    dataBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder addData(
                    com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder builderForValue) {
                if (dataBuilder_ == null) {
                    ensureDataIsMutable();
                    data_.add(builderForValue.build());
                    onChanged();
                } else {
                    dataBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder addData(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder builderForValue) {
                if (dataBuilder_ == null) {
                    ensureDataIsMutable();
                    data_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    dataBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder addAllData(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.Expression> values) {
                if (dataBuilder_ == null) {
                    ensureDataIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, data_);
                    onChanged();
                } else {
                    dataBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder clearData() {
                if (dataBuilder_ == null) {
                    data_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    dataBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public Builder removeData(int index) {
                if (dataBuilder_ == null) {
                    ensureDataIsMutable();
                    data_.remove(index);
                    onChanged();
                } else {
                    dataBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder getDataBuilder(
                    int index) {
                return getDataFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder getDataOrBuilder(
                    int index) {
                if (dataBuilder_ == null) {
                    return data_.get(index);  } else {
                    return dataBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder>
            getDataOrBuilderList() {
                if (dataBuilder_ != null) {
                    return dataBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(data_);
                }
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder addDataBuilder() {
                return getDataFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.Expression.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder addDataBuilder(
                    int index) {
                return getDataFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.Expression.getDefaultInstance());
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.Expression data = 1;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder>
            getDataBuilderList() {
                return getDataFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.Expression, com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder>
            getDataFieldBuilder() {
                if (dataBuilder_ == null) {
                    dataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.Expression, com.yutou.qqbot.bilibili.VideoDanMu.Expression.Builder, com.yutou.qqbot.bilibili.VideoDanMu.ExpressionOrBuilder>(
                            data_,
                            ((bitField0_ & 0x00000001) != 0),
                            getParentForChildren(),
                            isClean());
                    data_ = null;
                }
                return dataBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.Expressions)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.Expressions)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.Expressions DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.Expressions();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Expressions getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Expressions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PeriodOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.Period)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 start = 1;</code>
         * @return The start.
         */
        long getStart();

        /**
         * <pre>
         * </pre>
         *
         * <code>int64 end = 2;</code>
         * @return The end.
         */
        long getEnd();
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.Period}
     */
    public static final class Period extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.Period)
            PeriodOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Period.newBuilder() to construct.
        private Period(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Period() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private Period(
                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: {

                            start_ = input.readInt64();
                            break;
                        }
                        case 16: {

                            end_ = input.readInt64();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Period_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Period_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.Period.class, com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder.class);
        }

        public static final int START_FIELD_NUMBER = 1;
        private long start_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 start = 1;</code>
         * @return The start.
         */
        @java.lang.Override
        public long getStart() {
            return start_;
        }

        public static final int END_FIELD_NUMBER = 2;
        private long end_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int64 end = 2;</code>
         * @return The end.
         */
        @java.lang.Override
        public long getEnd() {
            return end_;
        }

        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 (start_ != 0L) {
                output.writeInt64(1, start_);
            }
            if (end_ != 0L) {
                output.writeInt64(2, end_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (start_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, start_);
            }
            if (end_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(2, end_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.Period)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.Period other = (com.yutou.qqbot.bilibili.VideoDanMu.Period) obj;

            if (getStart()
                    != other.getStart()) return false;
            if (getEnd()
                    != other.getEnd()) 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) + START_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getStart());
            hash = (37 * hash) + END_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getEnd());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Period parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.Period prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.Period}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.Period)
                com.yutou.qqbot.bilibili.VideoDanMu.PeriodOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Period_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Period_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.Period.class, com.yutou.qqbot.bilibili.VideoDanMu.Period.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.Period.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();
                start_ = 0L;

                end_ = 0L;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Period_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Period getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.Period.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Period build() {
                com.yutou.qqbot.bilibili.VideoDanMu.Period result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Period buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.Period result = new com.yutou.qqbot.bilibili.VideoDanMu.Period(this);
                result.start_ = start_;
                result.end_ = end_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.Period) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.Period)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.Period other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.Period.getDefaultInstance()) return this;
                if (other.getStart() != 0L) {
                    setStart(other.getStart());
                }
                if (other.getEnd() != 0L) {
                    setEnd(other.getEnd());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.Period parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.Period) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long start_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 start = 1;</code>
             * @return The start.
             */
            @java.lang.Override
            public long getStart() {
                return start_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 start = 1;</code>
             * @param value The start to set.
             * @return This builder for chaining.
             */
            public Builder setStart(long value) {

                start_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 start = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearStart() {

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

            private long end_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 end = 2;</code>
             * @return The end.
             */
            @java.lang.Override
            public long getEnd() {
                return end_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 end = 2;</code>
             * @param value The end to set.
             * @return This builder for chaining.
             */
            public Builder setEnd(long value) {

                end_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int64 end = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearEnd() {

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

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


            // @@protoc_insertion_point(builder_scope:com.yutou.qqbot.bilibili.Period)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.Period)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.Period DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.Period();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Period getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Period getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface InlinePlayerDanmakuSwitchOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否开启弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch}
     */
    public static final class InlinePlayerDanmakuSwitch extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch)
            InlinePlayerDanmakuSwitchOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use InlinePlayerDanmakuSwitch.newBuilder() to construct.
        private InlinePlayerDanmakuSwitch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private InlinePlayerDanmakuSwitch() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private InlinePlayerDanmakuSwitch(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch other = (com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch)
                com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitchOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch build() {
                com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch result = new com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.InlinePlayerDanmakuSwitch)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.InlinePlayerDanmakuSwitch getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuAiRecommendedLevelOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 智能云屏蔽等级
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel}
     */
    public static final class PlayerDanmakuAiRecommendedLevel extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel)
            PlayerDanmakuAiRecommendedLevelOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuAiRecommendedLevel.newBuilder() to construct.
        private PlayerDanmakuAiRecommendedLevel(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuAiRecommendedLevel() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuAiRecommendedLevel(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 智能云屏蔽等级
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevelOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedLevel)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedLevel getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuAiRecommendedSwitchOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否开启智能云屏蔽
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch}
     */
    public static final class PlayerDanmakuAiRecommendedSwitch extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch)
            PlayerDanmakuAiRecommendedSwitchOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuAiRecommendedSwitch.newBuilder() to construct.
        private PlayerDanmakuAiRecommendedSwitch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuAiRecommendedSwitch() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuAiRecommendedSwitch(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否开启智能云屏蔽
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitchOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuAiRecommendedSwitch)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuAiRecommendedSwitch getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuBlockbottomOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否屏蔽底端弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom}
     */
    public static final class PlayerDanmakuBlockbottom extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom)
            PlayerDanmakuBlockbottomOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuBlockbottom.newBuilder() to construct.
        private PlayerDanmakuBlockbottom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuBlockbottom() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuBlockbottom(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否屏蔽底端弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottomOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuBlockbottom)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockbottom getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuBlockcolorfulOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否屏蔽彩色弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful}
     */
    public static final class PlayerDanmakuBlockcolorful extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful)
            PlayerDanmakuBlockcolorfulOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuBlockcolorful.newBuilder() to construct.
        private PlayerDanmakuBlockcolorful(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuBlockcolorful() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuBlockcolorful(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否屏蔽彩色弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorfulOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuBlockcolorful)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockcolorful getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuBlockrepeatOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否屏蔽重复弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat}
     */
    public static final class PlayerDanmakuBlockrepeat extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat)
            PlayerDanmakuBlockrepeatOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuBlockrepeat.newBuilder() to construct.
        private PlayerDanmakuBlockrepeat(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuBlockrepeat() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuBlockrepeat(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否屏蔽重复弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeatOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuBlockrepeat)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockrepeat getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuBlockscrollOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否屏蔽滚动弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll}
     */
    public static final class PlayerDanmakuBlockscroll extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll)
            PlayerDanmakuBlockscrollOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuBlockscroll.newBuilder() to construct.
        private PlayerDanmakuBlockscroll(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuBlockscroll() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuBlockscroll(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否屏蔽滚动弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscrollOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuBlockscroll)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockscroll getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuBlockspecialOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否屏蔽高级弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial}
     */
    public static final class PlayerDanmakuBlockspecial extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial)
            PlayerDanmakuBlockspecialOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuBlockspecial.newBuilder() to construct.
        private PlayerDanmakuBlockspecial(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuBlockspecial() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuBlockspecial(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否屏蔽高级弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecialOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuBlockspecial)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlockspecial getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuBlocktopOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否屏蔽顶端弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop}
     */
    public static final class PlayerDanmakuBlocktop extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop)
            PlayerDanmakuBlocktopOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuBlocktop.newBuilder() to construct.
        private PlayerDanmakuBlocktop(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuBlocktop() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuBlocktop(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否屏蔽顶端弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktopOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuBlocktop)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuBlocktop getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuDomainOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuDomain)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float value = 1;</code>
         * @return The value.
         */
        float getValue();
    }
    /**
     * <pre>
     * 弹幕显示区域
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuDomain}
     */
    public static final class PlayerDanmakuDomain extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuDomain)
            PlayerDanmakuDomainOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuDomain.newBuilder() to construct.
        private PlayerDanmakuDomain(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuDomain() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuDomain(
                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 13: {

                            value_ = input.readFloat();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private float value_;
        /**
         * <code>float value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public float getValue() {
            return value_;
        }

        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 (java.lang.Float.floatToRawIntBits(value_) != 0) {
                output.writeFloat(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (java.lang.Float.floatToRawIntBits(value_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain) obj;

            if (java.lang.Float.floatToIntBits(getValue())
                    != java.lang.Float.floatToIntBits(
                    other.getValue())) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕显示区域
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuDomain}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuDomain)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomainOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.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();
                value_ = 0F;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain.getDefaultInstance()) return this;
                if (other.getValue() != 0F) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private float value_ ;
            /**
             * <code>float value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public float getValue() {
                return value_;
            }
            /**
             * <code>float value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(float value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>float value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 0F;
                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:com.yutou.qqbot.bilibili.PlayerDanmakuDomain)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuDomain)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuDomain getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuEnableblocklistOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否开启屏蔽列表
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist}
     */
    public static final class PlayerDanmakuEnableblocklist extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist)
            PlayerDanmakuEnableblocklistOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuEnableblocklist.newBuilder() to construct.
        private PlayerDanmakuEnableblocklist(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuEnableblocklist() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuEnableblocklist(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否开启屏蔽列表
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklistOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuEnableblocklist)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuEnableblocklist getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuOpacityOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuOpacity)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float value = 1;</code>
         * @return The value.
         */
        float getValue();
    }
    /**
     * <pre>
     * 弹幕不透明度
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuOpacity}
     */
    public static final class PlayerDanmakuOpacity extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuOpacity)
            PlayerDanmakuOpacityOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuOpacity.newBuilder() to construct.
        private PlayerDanmakuOpacity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuOpacity() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuOpacity(
                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 13: {

                            value_ = input.readFloat();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private float value_;
        /**
         * <code>float value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public float getValue() {
            return value_;
        }

        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 (java.lang.Float.floatToRawIntBits(value_) != 0) {
                output.writeFloat(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (java.lang.Float.floatToRawIntBits(value_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity) obj;

            if (java.lang.Float.floatToIntBits(getValue())
                    != java.lang.Float.floatToIntBits(
                    other.getValue())) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕不透明度
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuOpacity}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuOpacity)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacityOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.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();
                value_ = 0F;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity.getDefaultInstance()) return this;
                if (other.getValue() != 0F) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private float value_ ;
            /**
             * <code>float value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public float getValue() {
                return value_;
            }
            /**
             * <code>float value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(float value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>float value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 0F;
                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:com.yutou.qqbot.bilibili.PlayerDanmakuOpacity)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuOpacity)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuOpacity getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuScalingfactorOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float value = 1;</code>
         * @return The value.
         */
        float getValue();
    }
    /**
     * <pre>
     * 弹幕缩放比例
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor}
     */
    public static final class PlayerDanmakuScalingfactor extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor)
            PlayerDanmakuScalingfactorOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuScalingfactor.newBuilder() to construct.
        private PlayerDanmakuScalingfactor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuScalingfactor() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuScalingfactor(
                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 13: {

                            value_ = input.readFloat();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private float value_;
        /**
         * <code>float value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public float getValue() {
            return value_;
        }

        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 (java.lang.Float.floatToRawIntBits(value_) != 0) {
                output.writeFloat(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (java.lang.Float.floatToRawIntBits(value_) != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeFloatSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor) obj;

            if (java.lang.Float.floatToIntBits(getValue())
                    != java.lang.Float.floatToIntBits(
                    other.getValue())) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕缩放比例
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactorOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.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();
                value_ = 0F;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor.getDefaultInstance()) return this;
                if (other.getValue() != 0F) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private float value_ ;
            /**
             * <code>float value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public float getValue() {
                return value_;
            }
            /**
             * <code>float value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(float value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>float value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 0F;
                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:com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuScalingfactor)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuScalingfactor getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuSeniorModeSwitchOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>int32 value = 1;</code>
         * @return The value.
         */
        int getValue();
    }
    /**
     * <pre>
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch}
     */
    public static final class PlayerDanmakuSeniorModeSwitch extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch)
            PlayerDanmakuSeniorModeSwitchOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuSeniorModeSwitch.newBuilder() to construct.
        private PlayerDanmakuSeniorModeSwitch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuSeniorModeSwitch() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuSeniorModeSwitch(
                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: {

                            value_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private int value_;
        /**
         * <code>int32 value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public int getValue() {
            return value_;
        }

        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 (value_ != 0) {
                output.writeInt32(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValue();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitchOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.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();
                value_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch.getDefaultInstance()) return this;
                if (other.getValue() != 0) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

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

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

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuSeniorModeSwitch)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSeniorModeSwitch getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuSpeedOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuSpeed)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>int32 value = 1;</code>
         * @return The value.
         */
        int getValue();
    }
    /**
     * <pre>
     * 弹幕速度
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSpeed}
     */
    public static final class PlayerDanmakuSpeed extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSpeed)
            PlayerDanmakuSpeedOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuSpeed.newBuilder() to construct.
        private PlayerDanmakuSpeed(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuSpeed() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuSpeed(
                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: {

                            value_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private int value_;
        /**
         * <code>int32 value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public int getValue() {
            return value_;
        }

        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 (value_ != 0) {
                output.writeInt32(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValue();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 弹幕速度
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSpeed}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSpeed)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeedOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.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();
                value_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed.getDefaultInstance()) return this;
                if (other.getValue() != 0) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

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

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

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuSpeed)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuSpeed)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSpeed getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuSwitchOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuSwitch)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();

        /**
         * <code>bool canIgnore = 2;</code>
         * @return The canIgnore.
         */
        boolean getCanIgnore();
    }
    /**
     * <pre>
     * 是否开启弹幕
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSwitch}
     */
    public static final class PlayerDanmakuSwitch extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSwitch)
            PlayerDanmakuSwitchOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuSwitch.newBuilder() to construct.
        private PlayerDanmakuSwitch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuSwitch() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuSwitch(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        case 16: {

                            canIgnore_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        public static final int CANIGNORE_FIELD_NUMBER = 2;
        private boolean canIgnore_;
        /**
         * <code>bool canIgnore = 2;</code>
         * @return The canIgnore.
         */
        @java.lang.Override
        public boolean getCanIgnore() {
            return canIgnore_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            if (canIgnore_ != false) {
                output.writeBool(2, canIgnore_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            if (canIgnore_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(2, canIgnore_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch) obj;

            if (getValue()
                    != other.getValue()) return false;
            if (getCanIgnore()
                    != other.getCanIgnore()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (37 * hash) + CANIGNORE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getCanIgnore());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否开启弹幕
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSwitch}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSwitch)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.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();
                value_ = false;

                canIgnore_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch(this);
                result.value_ = value_;
                result.canIgnore_ = canIgnore_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                if (other.getCanIgnore() != false) {
                    setCanIgnore(other.getCanIgnore());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

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

            private boolean canIgnore_ ;
            /**
             * <code>bool canIgnore = 2;</code>
             * @return The canIgnore.
             */
            @java.lang.Override
            public boolean getCanIgnore() {
                return canIgnore_;
            }
            /**
             * <code>bool canIgnore = 2;</code>
             * @param value The canIgnore to set.
             * @return This builder for chaining.
             */
            public Builder setCanIgnore(boolean value) {

                canIgnore_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool canIgnore = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearCanIgnore() {

                canIgnore_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuSwitch)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuSwitch)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitch getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuSwitchSaveOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否记录弹幕开关设置
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave}
     */
    public static final class PlayerDanmakuSwitchSave extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave)
            PlayerDanmakuSwitchSaveOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuSwitchSave.newBuilder() to construct.
        private PlayerDanmakuSwitchSave(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuSwitchSave() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuSwitchSave(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否记录弹幕开关设置
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSaveOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuSwitchSave)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuSwitchSave getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface PlayerDanmakuUseDefaultConfigOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        boolean getValue();
    }
    /**
     * <pre>
     * 是否使用推荐弹幕设置
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig}
     */
    public static final class PlayerDanmakuUseDefaultConfig extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig)
            PlayerDanmakuUseDefaultConfigOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PlayerDanmakuUseDefaultConfig.newBuilder() to construct.
        private PlayerDanmakuUseDefaultConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PlayerDanmakuUseDefaultConfig() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PlayerDanmakuUseDefaultConfig(
                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: {

                            value_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder.class);
        }

        public static final int VALUE_FIELD_NUMBER = 1;
        private boolean value_;
        /**
         * <code>bool value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public boolean getValue() {
            return value_;
        }

        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 (value_ != false) {
                output.writeBool(1, value_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (value_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(1, value_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig other = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig) obj;

            if (getValue()
                    != other.getValue()) 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) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getValue());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 是否使用推荐弹幕设置
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig)
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfigOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.class, com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.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();
                value_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig build() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig result = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig(this);
                result.value_ = value_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig.getDefaultInstance()) return this;
                if (other.getValue() != false) {
                    setValue(other.getValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private boolean value_ ;
            /**
             * <code>bool value = 1;</code>
             * @return The value.
             */
            @java.lang.Override
            public boolean getValue() {
                return value_;
            }
            /**
             * <code>bool value = 1;</code>
             * @param value The value to set.
             * @return This builder for chaining.
             */
            public Builder setValue(boolean value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool value = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearValue() {

                value_ = 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:com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.PlayerDanmakuUseDefaultConfig)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.PlayerDanmakuUseDefaultConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface ResponseOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.Response)
            com.google.protobuf.MessageOrBuilder {

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

        /**
         * <pre>
         * </pre>
         *
         * <code>string message = 2;</code>
         * @return The message.
         */
        java.lang.String getMessage();
        /**
         * <pre>
         * </pre>
         *
         * <code>string message = 2;</code>
         * @return The bytes for message.
         */
        com.google.protobuf.ByteString
        getMessageBytes();
    }
    /**
     * <pre>
     * 修改弹幕配置-响应
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.Response}
     */
    public static final class Response extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.Response)
            ResponseOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Response.newBuilder() to construct.
        private Response(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Response() {
            message_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private Response(
                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: {

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

                            message_ = s;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Response_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Response_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.Response.class, com.yutou.qqbot.bilibili.VideoDanMu.Response.Builder.class);
        }

        public static final int CODE_FIELD_NUMBER = 1;
        private int code_;
        /**
         * <pre>
         * </pre>
         *
         * <code>int32 code = 1;</code>
         * @return The code.
         */
        @java.lang.Override
        public int getCode() {
            return code_;
        }

        public static final int MESSAGE_FIELD_NUMBER = 2;
        private volatile java.lang.Object message_;
        /**
         * <pre>
         * </pre>
         *
         * <code>string message = 2;</code>
         * @return The message.
         */
        @java.lang.Override
        public java.lang.String getMessage() {
            java.lang.Object ref = message_;
            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();
                message_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * </pre>
         *
         * <code>string message = 2;</code>
         * @return The bytes for message.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getMessageBytes() {
            java.lang.Object ref = message_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                message_ = 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 (code_ != 0) {
                output.writeInt32(1, code_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (code_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(1, code_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.Response)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.Response other = (com.yutou.qqbot.bilibili.VideoDanMu.Response) obj;

            if (getCode()
                    != other.getCode()) return false;
            if (!getMessage()
                    .equals(other.getMessage())) 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) + CODE_FIELD_NUMBER;
            hash = (53 * hash) + getCode();
            hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
            hash = (53 * hash) + getMessage().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.Response parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.Response prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 修改弹幕配置-响应
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.Response}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.Response)
                com.yutou.qqbot.bilibili.VideoDanMu.ResponseOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Response_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Response_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.Response.class, com.yutou.qqbot.bilibili.VideoDanMu.Response.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.Response.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();
                code_ = 0;

                message_ = "";

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_Response_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Response getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.Response.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Response build() {
                com.yutou.qqbot.bilibili.VideoDanMu.Response result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.Response buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.Response result = new com.yutou.qqbot.bilibili.VideoDanMu.Response(this);
                result.code_ = code_;
                result.message_ = message_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.Response) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.Response)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.Response other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.Response.getDefaultInstance()) return this;
                if (other.getCode() != 0) {
                    setCode(other.getCode());
                }
                if (!other.getMessage().isEmpty()) {
                    message_ = other.message_;
                    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 {
                com.yutou.qqbot.bilibili.VideoDanMu.Response parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.Response) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private int code_ ;
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 code = 1;</code>
             * @return The code.
             */
            @java.lang.Override
            public int getCode() {
                return code_;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>int32 code = 1;</code>
             * @param value The code to set.
             * @return This builder for chaining.
             */
            public Builder setCode(int value) {

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

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

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

                message_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * </pre>
             *
             * <code>string message = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearMessage() {

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

                message_ = 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:com.yutou.qqbot.bilibili.Response)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.Response)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.Response DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.Response();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.Response getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.Response getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface SubtitleItemOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.SubtitleItem)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 字幕id
         * </pre>
         *
         * <code>int64 id = 1;</code>
         * @return The id.
         */
        long getId();

        /**
         * <pre>
         * 字幕id str
         * </pre>
         *
         * <code>string id_str = 2;</code>
         * @return The idStr.
         */
        java.lang.String getIdStr();
        /**
         * <pre>
         * 字幕id str
         * </pre>
         *
         * <code>string id_str = 2;</code>
         * @return The bytes for idStr.
         */
        com.google.protobuf.ByteString
        getIdStrBytes();

        /**
         * <pre>
         * 字幕语言代码
         * </pre>
         *
         * <code>string lan = 3;</code>
         * @return The lan.
         */
        java.lang.String getLan();
        /**
         * <pre>
         * 字幕语言代码
         * </pre>
         *
         * <code>string lan = 3;</code>
         * @return The bytes for lan.
         */
        com.google.protobuf.ByteString
        getLanBytes();

        /**
         * <pre>
         * 字幕语言
         * </pre>
         *
         * <code>string lan_doc = 4;</code>
         * @return The lanDoc.
         */
        java.lang.String getLanDoc();
        /**
         * <pre>
         * 字幕语言
         * </pre>
         *
         * <code>string lan_doc = 4;</code>
         * @return The bytes for lanDoc.
         */
        com.google.protobuf.ByteString
        getLanDocBytes();

        /**
         * <pre>
         * 字幕文件url
         * </pre>
         *
         * <code>string subtitle_url = 5;</code>
         * @return The subtitleUrl.
         */
        java.lang.String getSubtitleUrl();
        /**
         * <pre>
         * 字幕文件url
         * </pre>
         *
         * <code>string subtitle_url = 5;</code>
         * @return The bytes for subtitleUrl.
         */
        com.google.protobuf.ByteString
        getSubtitleUrlBytes();

        /**
         * <pre>
         * 字幕作者信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
         * @return Whether the author field is set.
         */
        boolean hasAuthor();
        /**
         * <pre>
         * 字幕作者信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
         * @return The author.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.UserInfo getAuthor();
        /**
         * <pre>
         * 字幕作者信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.UserInfoOrBuilder getAuthorOrBuilder();

        /**
         * <pre>
         * 字幕类型
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
         * @return The enum numeric value on the wire for type.
         */
        int getTypeValue();
        /**
         * <pre>
         * 字幕类型
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
         * @return The type.
         */
        com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType getType();
    }
    /**
     * <pre>
     * 单个字幕信息
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.SubtitleItem}
     */
    public static final class SubtitleItem extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.SubtitleItem)
            SubtitleItemOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use SubtitleItem.newBuilder() to construct.
        private SubtitleItem(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private SubtitleItem() {
            idStr_ = "";
            lan_ = "";
            lanDoc_ = "";
            subtitleUrl_ = "";
            type_ = 0;
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private SubtitleItem(
                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: {

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

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

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

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

                            subtitleUrl_ = s;
                            break;
                        }
                        case 50: {
                            com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder subBuilder = null;
                            if (author_ != null) {
                                subBuilder = author_.toBuilder();
                            }
                            author_ = input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(author_);
                                author_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 56: {
                            int rawValue = input.readEnum();

                            type_ = rawValue;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_SubtitleItem_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_SubtitleItem_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.class, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder.class);
        }

        public static final int ID_FIELD_NUMBER = 1;
        private long id_;
        /**
         * <pre>
         * 字幕id
         * </pre>
         *
         * <code>int64 id = 1;</code>
         * @return The id.
         */
        @java.lang.Override
        public long getId() {
            return id_;
        }

        public static final int ID_STR_FIELD_NUMBER = 2;
        private volatile java.lang.Object idStr_;
        /**
         * <pre>
         * 字幕id str
         * </pre>
         *
         * <code>string id_str = 2;</code>
         * @return The idStr.
         */
        @java.lang.Override
        public java.lang.String getIdStr() {
            java.lang.Object ref = idStr_;
            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();
                idStr_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 字幕id str
         * </pre>
         *
         * <code>string id_str = 2;</code>
         * @return The bytes for idStr.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getIdStrBytes() {
            java.lang.Object ref = idStr_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                idStr_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int LAN_FIELD_NUMBER = 3;
        private volatile java.lang.Object lan_;
        /**
         * <pre>
         * 字幕语言代码
         * </pre>
         *
         * <code>string lan = 3;</code>
         * @return The lan.
         */
        @java.lang.Override
        public java.lang.String getLan() {
            java.lang.Object ref = lan_;
            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();
                lan_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 字幕语言代码
         * </pre>
         *
         * <code>string lan = 3;</code>
         * @return The bytes for lan.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getLanBytes() {
            java.lang.Object ref = lan_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                lan_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int LAN_DOC_FIELD_NUMBER = 4;
        private volatile java.lang.Object lanDoc_;
        /**
         * <pre>
         * 字幕语言
         * </pre>
         *
         * <code>string lan_doc = 4;</code>
         * @return The lanDoc.
         */
        @java.lang.Override
        public java.lang.String getLanDoc() {
            java.lang.Object ref = lanDoc_;
            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();
                lanDoc_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 字幕语言
         * </pre>
         *
         * <code>string lan_doc = 4;</code>
         * @return The bytes for lanDoc.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getLanDocBytes() {
            java.lang.Object ref = lanDoc_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                lanDoc_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SUBTITLE_URL_FIELD_NUMBER = 5;
        private volatile java.lang.Object subtitleUrl_;
        /**
         * <pre>
         * 字幕文件url
         * </pre>
         *
         * <code>string subtitle_url = 5;</code>
         * @return The subtitleUrl.
         */
        @java.lang.Override
        public java.lang.String getSubtitleUrl() {
            java.lang.Object ref = subtitleUrl_;
            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();
                subtitleUrl_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 字幕文件url
         * </pre>
         *
         * <code>string subtitle_url = 5;</code>
         * @return The bytes for subtitleUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getSubtitleUrlBytes() {
            java.lang.Object ref = subtitleUrl_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                subtitleUrl_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int AUTHOR_FIELD_NUMBER = 6;
        private com.yutou.qqbot.bilibili.VideoDanMu.UserInfo author_;
        /**
         * <pre>
         * 字幕作者信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
         * @return Whether the author field is set.
         */
        @java.lang.Override
        public boolean hasAuthor() {
            return author_ != null;
        }
        /**
         * <pre>
         * 字幕作者信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
         * @return The author.
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.UserInfo getAuthor() {
            return author_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.getDefaultInstance() : author_;
        }
        /**
         * <pre>
         * 字幕作者信息
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.UserInfoOrBuilder getAuthorOrBuilder() {
            return getAuthor();
        }

        public static final int TYPE_FIELD_NUMBER = 7;
        private int type_;
        /**
         * <pre>
         * 字幕类型
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
         * @return The enum numeric value on the wire for type.
         */
        @java.lang.Override public int getTypeValue() {
            return type_;
        }
        /**
         * <pre>
         * 字幕类型
         * </pre>
         *
         * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
         * @return The type.
         */
        @java.lang.Override public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType getType() {
            @SuppressWarnings("deprecation")
            com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType result = com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType.valueOf(type_);
            return result == null ? com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType.UNRECOGNIZED : result;
        }

        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 (id_ != 0L) {
                output.writeInt64(1, id_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(idStr_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, idStr_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lan_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, lan_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lanDoc_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, lanDoc_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(subtitleUrl_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, subtitleUrl_);
            }
            if (author_ != null) {
                output.writeMessage(6, getAuthor());
            }
            if (type_ != com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType.CC.getNumber()) {
                output.writeEnum(7, type_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (id_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, id_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(idStr_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, idStr_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lan_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, lan_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lanDoc_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, lanDoc_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(subtitleUrl_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, subtitleUrl_);
            }
            if (author_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(6, getAuthor());
            }
            if (type_ != com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType.CC.getNumber()) {
                size += com.google.protobuf.CodedOutputStream
                        .computeEnumSize(7, type_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem other = (com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem) obj;

            if (getId()
                    != other.getId()) return false;
            if (!getIdStr()
                    .equals(other.getIdStr())) return false;
            if (!getLan()
                    .equals(other.getLan())) return false;
            if (!getLanDoc()
                    .equals(other.getLanDoc())) return false;
            if (!getSubtitleUrl()
                    .equals(other.getSubtitleUrl())) return false;
            if (hasAuthor() != other.hasAuthor()) return false;
            if (hasAuthor()) {
                if (!getAuthor()
                        .equals(other.getAuthor())) return false;
            }
            if (type_ != other.type_) 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) + ID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getId());
            hash = (37 * hash) + ID_STR_FIELD_NUMBER;
            hash = (53 * hash) + getIdStr().hashCode();
            hash = (37 * hash) + LAN_FIELD_NUMBER;
            hash = (53 * hash) + getLan().hashCode();
            hash = (37 * hash) + LAN_DOC_FIELD_NUMBER;
            hash = (53 * hash) + getLanDoc().hashCode();
            hash = (37 * hash) + SUBTITLE_URL_FIELD_NUMBER;
            hash = (53 * hash) + getSubtitleUrl().hashCode();
            if (hasAuthor()) {
                hash = (37 * hash) + AUTHOR_FIELD_NUMBER;
                hash = (53 * hash) + getAuthor().hashCode();
            }
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + type_;
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 单个字幕信息
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.SubtitleItem}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.SubtitleItem)
                com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_SubtitleItem_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_SubtitleItem_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.class, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.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();
                id_ = 0L;

                idStr_ = "";

                lan_ = "";

                lanDoc_ = "";

                subtitleUrl_ = "";

                if (authorBuilder_ == null) {
                    author_ = null;
                } else {
                    author_ = null;
                    authorBuilder_ = null;
                }
                type_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_SubtitleItem_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem build() {
                com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem result = new com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem(this);
                result.id_ = id_;
                result.idStr_ = idStr_;
                result.lan_ = lan_;
                result.lanDoc_ = lanDoc_;
                result.subtitleUrl_ = subtitleUrl_;
                if (authorBuilder_ == null) {
                    result.author_ = author_;
                } else {
                    result.author_ = authorBuilder_.build();
                }
                result.type_ = type_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.getDefaultInstance()) return this;
                if (other.getId() != 0L) {
                    setId(other.getId());
                }
                if (!other.getIdStr().isEmpty()) {
                    idStr_ = other.idStr_;
                    onChanged();
                }
                if (!other.getLan().isEmpty()) {
                    lan_ = other.lan_;
                    onChanged();
                }
                if (!other.getLanDoc().isEmpty()) {
                    lanDoc_ = other.lanDoc_;
                    onChanged();
                }
                if (!other.getSubtitleUrl().isEmpty()) {
                    subtitleUrl_ = other.subtitleUrl_;
                    onChanged();
                }
                if (other.hasAuthor()) {
                    mergeAuthor(other.getAuthor());
                }
                if (other.type_ != 0) {
                    setTypeValue(other.getTypeValue());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long id_ ;
            /**
             * <pre>
             * 字幕id
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @return The id.
             */
            @java.lang.Override
            public long getId() {
                return id_;
            }
            /**
             * <pre>
             * 字幕id
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @param value The id to set.
             * @return This builder for chaining.
             */
            public Builder setId(long value) {

                id_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕id
             * </pre>
             *
             * <code>int64 id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearId() {

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

            private java.lang.Object idStr_ = "";
            /**
             * <pre>
             * 字幕id str
             * </pre>
             *
             * <code>string id_str = 2;</code>
             * @return The idStr.
             */
            public java.lang.String getIdStr() {
                java.lang.Object ref = idStr_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    idStr_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 字幕id str
             * </pre>
             *
             * <code>string id_str = 2;</code>
             * @return The bytes for idStr.
             */
            public com.google.protobuf.ByteString
            getIdStrBytes() {
                java.lang.Object ref = idStr_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    idStr_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 字幕id str
             * </pre>
             *
             * <code>string id_str = 2;</code>
             * @param value The idStr to set.
             * @return This builder for chaining.
             */
            public Builder setIdStr(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                idStr_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕id str
             * </pre>
             *
             * <code>string id_str = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearIdStr() {

                idStr_ = getDefaultInstance().getIdStr();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕id str
             * </pre>
             *
             * <code>string id_str = 2;</code>
             * @param value The bytes for idStr to set.
             * @return This builder for chaining.
             */
            public Builder setIdStrBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object lan_ = "";
            /**
             * <pre>
             * 字幕语言代码
             * </pre>
             *
             * <code>string lan = 3;</code>
             * @return The lan.
             */
            public java.lang.String getLan() {
                java.lang.Object ref = lan_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    lan_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 字幕语言代码
             * </pre>
             *
             * <code>string lan = 3;</code>
             * @return The bytes for lan.
             */
            public com.google.protobuf.ByteString
            getLanBytes() {
                java.lang.Object ref = lan_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    lan_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 字幕语言代码
             * </pre>
             *
             * <code>string lan = 3;</code>
             * @param value The lan to set.
             * @return This builder for chaining.
             */
            public Builder setLan(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                lan_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕语言代码
             * </pre>
             *
             * <code>string lan = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearLan() {

                lan_ = getDefaultInstance().getLan();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕语言代码
             * </pre>
             *
             * <code>string lan = 3;</code>
             * @param value The bytes for lan to set.
             * @return This builder for chaining.
             */
            public Builder setLanBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object lanDoc_ = "";
            /**
             * <pre>
             * 字幕语言
             * </pre>
             *
             * <code>string lan_doc = 4;</code>
             * @return The lanDoc.
             */
            public java.lang.String getLanDoc() {
                java.lang.Object ref = lanDoc_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    lanDoc_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 字幕语言
             * </pre>
             *
             * <code>string lan_doc = 4;</code>
             * @return The bytes for lanDoc.
             */
            public com.google.protobuf.ByteString
            getLanDocBytes() {
                java.lang.Object ref = lanDoc_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    lanDoc_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 字幕语言
             * </pre>
             *
             * <code>string lan_doc = 4;</code>
             * @param value The lanDoc to set.
             * @return This builder for chaining.
             */
            public Builder setLanDoc(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                lanDoc_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕语言
             * </pre>
             *
             * <code>string lan_doc = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearLanDoc() {

                lanDoc_ = getDefaultInstance().getLanDoc();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕语言
             * </pre>
             *
             * <code>string lan_doc = 4;</code>
             * @param value The bytes for lanDoc to set.
             * @return This builder for chaining.
             */
            public Builder setLanDocBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object subtitleUrl_ = "";
            /**
             * <pre>
             * 字幕文件url
             * </pre>
             *
             * <code>string subtitle_url = 5;</code>
             * @return The subtitleUrl.
             */
            public java.lang.String getSubtitleUrl() {
                java.lang.Object ref = subtitleUrl_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    subtitleUrl_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 字幕文件url
             * </pre>
             *
             * <code>string subtitle_url = 5;</code>
             * @return The bytes for subtitleUrl.
             */
            public com.google.protobuf.ByteString
            getSubtitleUrlBytes() {
                java.lang.Object ref = subtitleUrl_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    subtitleUrl_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 字幕文件url
             * </pre>
             *
             * <code>string subtitle_url = 5;</code>
             * @param value The subtitleUrl to set.
             * @return This builder for chaining.
             */
            public Builder setSubtitleUrl(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                subtitleUrl_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕文件url
             * </pre>
             *
             * <code>string subtitle_url = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearSubtitleUrl() {

                subtitleUrl_ = getDefaultInstance().getSubtitleUrl();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕文件url
             * </pre>
             *
             * <code>string subtitle_url = 5;</code>
             * @param value The bytes for subtitleUrl to set.
             * @return This builder for chaining.
             */
            public Builder setSubtitleUrlBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private com.yutou.qqbot.bilibili.VideoDanMu.UserInfo author_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.UserInfo, com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder, com.yutou.qqbot.bilibili.VideoDanMu.UserInfoOrBuilder> authorBuilder_;
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             * @return Whether the author field is set.
             */
            public boolean hasAuthor() {
                return authorBuilder_ != null || author_ != null;
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             * @return The author.
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.UserInfo getAuthor() {
                if (authorBuilder_ == null) {
                    return author_ == null ? com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.getDefaultInstance() : author_;
                } else {
                    return authorBuilder_.getMessage();
                }
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             */
            public Builder setAuthor(com.yutou.qqbot.bilibili.VideoDanMu.UserInfo value) {
                if (authorBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    author_ = value;
                    onChanged();
                } else {
                    authorBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             */
            public Builder setAuthor(
                    com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder builderForValue) {
                if (authorBuilder_ == null) {
                    author_ = builderForValue.build();
                    onChanged();
                } else {
                    authorBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             */
            public Builder mergeAuthor(com.yutou.qqbot.bilibili.VideoDanMu.UserInfo value) {
                if (authorBuilder_ == null) {
                    if (author_ != null) {
                        author_ =
                                com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.newBuilder(author_).mergeFrom(value).buildPartial();
                    } else {
                        author_ = value;
                    }
                    onChanged();
                } else {
                    authorBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             */
            public Builder clearAuthor() {
                if (authorBuilder_ == null) {
                    author_ = null;
                    onChanged();
                } else {
                    author_ = null;
                    authorBuilder_ = null;
                }

                return this;
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder getAuthorBuilder() {

                onChanged();
                return getAuthorFieldBuilder().getBuilder();
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.UserInfoOrBuilder getAuthorOrBuilder() {
                if (authorBuilder_ != null) {
                    return authorBuilder_.getMessageOrBuilder();
                } else {
                    return author_ == null ?
                            com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.getDefaultInstance() : author_;
                }
            }
            /**
             * <pre>
             * 字幕作者信息
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.UserInfo author = 6;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.UserInfo, com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder, com.yutou.qqbot.bilibili.VideoDanMu.UserInfoOrBuilder>
            getAuthorFieldBuilder() {
                if (authorBuilder_ == null) {
                    authorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.UserInfo, com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder, com.yutou.qqbot.bilibili.VideoDanMu.UserInfoOrBuilder>(
                            getAuthor(),
                            getParentForChildren(),
                            isClean());
                    author_ = null;
                }
                return authorBuilder_;
            }

            private int type_ = 0;
            /**
             * <pre>
             * 字幕类型
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
             * @return The enum numeric value on the wire for type.
             */
            @java.lang.Override public int getTypeValue() {
                return type_;
            }
            /**
             * <pre>
             * 字幕类型
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
             * @param value The enum numeric value on the wire for type to set.
             * @return This builder for chaining.
             */
            public Builder setTypeValue(int value) {

                type_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕类型
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
             * @return The type.
             */
            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType getType() {
                @SuppressWarnings("deprecation")
                com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType result = com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType.valueOf(type_);
                return result == null ? com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType.UNRECOGNIZED : result;
            }
            /**
             * <pre>
             * 字幕类型
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
             * @param value The type to set.
             * @return This builder for chaining.
             */
            public Builder setType(com.yutou.qqbot.bilibili.VideoDanMu.SubtitleType value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                type_ = value.getNumber();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 字幕类型
             * </pre>
             *
             * <code>.com.yutou.qqbot.bilibili.SubtitleType type = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {

                type_ = 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:com.yutou.qqbot.bilibili.SubtitleItem)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.SubtitleItem)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface UserInfoOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.UserInfo)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 用户mid
         * </pre>
         *
         * <code>int64 mid = 1;</code>
         * @return The mid.
         */
        long getMid();

        /**
         * <pre>
         * 用户昵称
         * </pre>
         *
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();
        /**
         * <pre>
         * 用户昵称
         * </pre>
         *
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString
        getNameBytes();

        /**
         * <pre>
         * 用户性别
         * </pre>
         *
         * <code>string sex = 3;</code>
         * @return The sex.
         */
        java.lang.String getSex();
        /**
         * <pre>
         * 用户性别
         * </pre>
         *
         * <code>string sex = 3;</code>
         * @return The bytes for sex.
         */
        com.google.protobuf.ByteString
        getSexBytes();

        /**
         * <pre>
         * 用户头像url
         * </pre>
         *
         * <code>string face = 4;</code>
         * @return The face.
         */
        java.lang.String getFace();
        /**
         * <pre>
         * 用户头像url
         * </pre>
         *
         * <code>string face = 4;</code>
         * @return The bytes for face.
         */
        com.google.protobuf.ByteString
        getFaceBytes();

        /**
         * <pre>
         * 用户签名
         * </pre>
         *
         * <code>string sign = 5;</code>
         * @return The sign.
         */
        java.lang.String getSign();
        /**
         * <pre>
         * 用户签名
         * </pre>
         *
         * <code>string sign = 5;</code>
         * @return The bytes for sign.
         */
        com.google.protobuf.ByteString
        getSignBytes();

        /**
         * <pre>
         * 用户等级
         * </pre>
         *
         * <code>int32 rank = 6;</code>
         * @return The rank.
         */
        int getRank();
    }
    /**
     * <pre>
     * 字幕作者信息
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.UserInfo}
     */
    public static final class UserInfo extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.UserInfo)
            UserInfoOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use UserInfo.newBuilder() to construct.
        private UserInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private UserInfo() {
            name_ = "";
            sex_ = "";
            face_ = "";
            sign_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private UserInfo(
                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: {

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

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

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

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

                            sign_ = s;
                            break;
                        }
                        case 48: {

                            rank_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_UserInfo_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_UserInfo_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.class, com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder.class);
        }

        public static final int MID_FIELD_NUMBER = 1;
        private long mid_;
        /**
         * <pre>
         * 用户mid
         * </pre>
         *
         * <code>int64 mid = 1;</code>
         * @return The mid.
         */
        @java.lang.Override
        public long getMid() {
            return mid_;
        }

        public static final int NAME_FIELD_NUMBER = 2;
        private volatile java.lang.Object name_;
        /**
         * <pre>
         * 用户昵称
         * </pre>
         *
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            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();
                name_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 用户昵称
         * </pre>
         *
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SEX_FIELD_NUMBER = 3;
        private volatile java.lang.Object sex_;
        /**
         * <pre>
         * 用户性别
         * </pre>
         *
         * <code>string sex = 3;</code>
         * @return The sex.
         */
        @java.lang.Override
        public java.lang.String getSex() {
            java.lang.Object ref = sex_;
            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();
                sex_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 用户性别
         * </pre>
         *
         * <code>string sex = 3;</code>
         * @return The bytes for sex.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getSexBytes() {
            java.lang.Object ref = sex_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                sex_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int FACE_FIELD_NUMBER = 4;
        private volatile java.lang.Object face_;
        /**
         * <pre>
         * 用户头像url
         * </pre>
         *
         * <code>string face = 4;</code>
         * @return The face.
         */
        @java.lang.Override
        public java.lang.String getFace() {
            java.lang.Object ref = face_;
            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();
                face_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 用户头像url
         * </pre>
         *
         * <code>string face = 4;</code>
         * @return The bytes for face.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getFaceBytes() {
            java.lang.Object ref = face_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                face_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SIGN_FIELD_NUMBER = 5;
        private volatile java.lang.Object sign_;
        /**
         * <pre>
         * 用户签名
         * </pre>
         *
         * <code>string sign = 5;</code>
         * @return The sign.
         */
        @java.lang.Override
        public java.lang.String getSign() {
            java.lang.Object ref = sign_;
            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();
                sign_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 用户签名
         * </pre>
         *
         * <code>string sign = 5;</code>
         * @return The bytes for sign.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getSignBytes() {
            java.lang.Object ref = sign_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                sign_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int RANK_FIELD_NUMBER = 6;
        private int rank_;
        /**
         * <pre>
         * 用户等级
         * </pre>
         *
         * <code>int32 rank = 6;</code>
         * @return The rank.
         */
        @java.lang.Override
        public int getRank() {
            return rank_;
        }

        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 (mid_ != 0L) {
                output.writeInt64(1, mid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sex_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, sex_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(face_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, face_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sign_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, sign_);
            }
            if (rank_ != 0) {
                output.writeInt32(6, rank_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (mid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, mid_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sex_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, sex_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(face_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, face_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sign_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, sign_);
            }
            if (rank_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(6, rank_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.UserInfo)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.UserInfo other = (com.yutou.qqbot.bilibili.VideoDanMu.UserInfo) obj;

            if (getMid()
                    != other.getMid()) return false;
            if (!getName()
                    .equals(other.getName())) return false;
            if (!getSex()
                    .equals(other.getSex())) return false;
            if (!getFace()
                    .equals(other.getFace())) return false;
            if (!getSign()
                    .equals(other.getSign())) return false;
            if (getRank()
                    != other.getRank()) 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) + MID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getMid());
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + SEX_FIELD_NUMBER;
            hash = (53 * hash) + getSex().hashCode();
            hash = (37 * hash) + FACE_FIELD_NUMBER;
            hash = (53 * hash) + getFace().hashCode();
            hash = (37 * hash) + SIGN_FIELD_NUMBER;
            hash = (53 * hash) + getSign().hashCode();
            hash = (37 * hash) + RANK_FIELD_NUMBER;
            hash = (53 * hash) + getRank();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.UserInfo prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 字幕作者信息
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.UserInfo}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.UserInfo)
                com.yutou.qqbot.bilibili.VideoDanMu.UserInfoOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_UserInfo_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_UserInfo_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.class, com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.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();
                mid_ = 0L;

                name_ = "";

                sex_ = "";

                face_ = "";

                sign_ = "";

                rank_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_UserInfo_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.UserInfo getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.UserInfo build() {
                com.yutou.qqbot.bilibili.VideoDanMu.UserInfo result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.UserInfo buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.UserInfo result = new com.yutou.qqbot.bilibili.VideoDanMu.UserInfo(this);
                result.mid_ = mid_;
                result.name_ = name_;
                result.sex_ = sex_;
                result.face_ = face_;
                result.sign_ = sign_;
                result.rank_ = rank_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.UserInfo) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.UserInfo)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.UserInfo other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.UserInfo.getDefaultInstance()) return this;
                if (other.getMid() != 0L) {
                    setMid(other.getMid());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    onChanged();
                }
                if (!other.getSex().isEmpty()) {
                    sex_ = other.sex_;
                    onChanged();
                }
                if (!other.getFace().isEmpty()) {
                    face_ = other.face_;
                    onChanged();
                }
                if (!other.getSign().isEmpty()) {
                    sign_ = other.sign_;
                    onChanged();
                }
                if (other.getRank() != 0) {
                    setRank(other.getRank());
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.UserInfo parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.UserInfo) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long mid_ ;
            /**
             * <pre>
             * 用户mid
             * </pre>
             *
             * <code>int64 mid = 1;</code>
             * @return The mid.
             */
            @java.lang.Override
            public long getMid() {
                return mid_;
            }
            /**
             * <pre>
             * 用户mid
             * </pre>
             *
             * <code>int64 mid = 1;</code>
             * @param value The mid to set.
             * @return This builder for chaining.
             */
            public Builder setMid(long value) {

                mid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户mid
             * </pre>
             *
             * <code>int64 mid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearMid() {

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

            private java.lang.Object name_ = "";
            /**
             * <pre>
             * 用户昵称
             * </pre>
             *
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 用户昵称
             * </pre>
             *
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString
            getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 用户昵称
             * </pre>
             *
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                name_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户昵称
             * </pre>
             *
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {

                name_ = getDefaultInstance().getName();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户昵称
             * </pre>
             *
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object sex_ = "";
            /**
             * <pre>
             * 用户性别
             * </pre>
             *
             * <code>string sex = 3;</code>
             * @return The sex.
             */
            public java.lang.String getSex() {
                java.lang.Object ref = sex_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    sex_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 用户性别
             * </pre>
             *
             * <code>string sex = 3;</code>
             * @return The bytes for sex.
             */
            public com.google.protobuf.ByteString
            getSexBytes() {
                java.lang.Object ref = sex_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    sex_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 用户性别
             * </pre>
             *
             * <code>string sex = 3;</code>
             * @param value The sex to set.
             * @return This builder for chaining.
             */
            public Builder setSex(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                sex_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户性别
             * </pre>
             *
             * <code>string sex = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearSex() {

                sex_ = getDefaultInstance().getSex();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户性别
             * </pre>
             *
             * <code>string sex = 3;</code>
             * @param value The bytes for sex to set.
             * @return This builder for chaining.
             */
            public Builder setSexBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object face_ = "";
            /**
             * <pre>
             * 用户头像url
             * </pre>
             *
             * <code>string face = 4;</code>
             * @return The face.
             */
            public java.lang.String getFace() {
                java.lang.Object ref = face_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    face_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 用户头像url
             * </pre>
             *
             * <code>string face = 4;</code>
             * @return The bytes for face.
             */
            public com.google.protobuf.ByteString
            getFaceBytes() {
                java.lang.Object ref = face_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    face_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 用户头像url
             * </pre>
             *
             * <code>string face = 4;</code>
             * @param value The face to set.
             * @return This builder for chaining.
             */
            public Builder setFace(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                face_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户头像url
             * </pre>
             *
             * <code>string face = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearFace() {

                face_ = getDefaultInstance().getFace();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户头像url
             * </pre>
             *
             * <code>string face = 4;</code>
             * @param value The bytes for face to set.
             * @return This builder for chaining.
             */
            public Builder setFaceBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object sign_ = "";
            /**
             * <pre>
             * 用户签名
             * </pre>
             *
             * <code>string sign = 5;</code>
             * @return The sign.
             */
            public java.lang.String getSign() {
                java.lang.Object ref = sign_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    sign_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 用户签名
             * </pre>
             *
             * <code>string sign = 5;</code>
             * @return The bytes for sign.
             */
            public com.google.protobuf.ByteString
            getSignBytes() {
                java.lang.Object ref = sign_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    sign_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 用户签名
             * </pre>
             *
             * <code>string sign = 5;</code>
             * @param value The sign to set.
             * @return This builder for chaining.
             */
            public Builder setSign(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                sign_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户签名
             * </pre>
             *
             * <code>string sign = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearSign() {

                sign_ = getDefaultInstance().getSign();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户签名
             * </pre>
             *
             * <code>string sign = 5;</code>
             * @param value The bytes for sign to set.
             * @return This builder for chaining.
             */
            public Builder setSignBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int rank_ ;
            /**
             * <pre>
             * 用户等级
             * </pre>
             *
             * <code>int32 rank = 6;</code>
             * @return The rank.
             */
            @java.lang.Override
            public int getRank() {
                return rank_;
            }
            /**
             * <pre>
             * 用户等级
             * </pre>
             *
             * <code>int32 rank = 6;</code>
             * @param value The rank to set.
             * @return This builder for chaining.
             */
            public Builder setRank(int value) {

                rank_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 用户等级
             * </pre>
             *
             * <code>int32 rank = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearRank() {

                rank_ = 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:com.yutou.qqbot.bilibili.UserInfo)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.UserInfo)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.UserInfo DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.UserInfo();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.UserInfo getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.UserInfo getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface VideoMaskOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.VideoMask)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 视频cid
         * </pre>
         *
         * <code>int64 cid = 1;</code>
         * @return The cid.
         */
        long getCid();

        /**
         * <pre>
         * 平台
         * 0:web端 1:客户端
         * </pre>
         *
         * <code>int32 plat = 2;</code>
         * @return The plat.
         */
        int getPlat();

        /**
         * <pre>
         * 帧率
         * </pre>
         *
         * <code>int32 fps = 3;</code>
         * @return The fps.
         */
        int getFps();

        /**
         * <pre>
         * 间隔时间
         * </pre>
         *
         * <code>int64 time = 4;</code>
         * @return The time.
         */
        long getTime();

        /**
         * <pre>
         * 蒙版url
         * </pre>
         *
         * <code>string mask_url = 5;</code>
         * @return The maskUrl.
         */
        java.lang.String getMaskUrl();
        /**
         * <pre>
         * 蒙版url
         * </pre>
         *
         * <code>string mask_url = 5;</code>
         * @return The bytes for maskUrl.
         */
        com.google.protobuf.ByteString
        getMaskUrlBytes();
    }
    /**
     * <pre>
     * 智能防挡弹幕蒙版信息
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.VideoMask}
     */
    public static final class VideoMask extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.VideoMask)
            VideoMaskOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use VideoMask.newBuilder() to construct.
        private VideoMask(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private VideoMask() {
            maskUrl_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private VideoMask(
                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: {

                            cid_ = input.readInt64();
                            break;
                        }
                        case 16: {

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

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

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

                            maskUrl_ = s;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().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 com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoMask_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoMask_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.class, com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder.class);
        }

        public static final int CID_FIELD_NUMBER = 1;
        private long cid_;
        /**
         * <pre>
         * 视频cid
         * </pre>
         *
         * <code>int64 cid = 1;</code>
         * @return The cid.
         */
        @java.lang.Override
        public long getCid() {
            return cid_;
        }

        public static final int PLAT_FIELD_NUMBER = 2;
        private int plat_;
        /**
         * <pre>
         * 平台
         * 0:web端 1:客户端
         * </pre>
         *
         * <code>int32 plat = 2;</code>
         * @return The plat.
         */
        @java.lang.Override
        public int getPlat() {
            return plat_;
        }

        public static final int FPS_FIELD_NUMBER = 3;
        private int fps_;
        /**
         * <pre>
         * 帧率
         * </pre>
         *
         * <code>int32 fps = 3;</code>
         * @return The fps.
         */
        @java.lang.Override
        public int getFps() {
            return fps_;
        }

        public static final int TIME_FIELD_NUMBER = 4;
        private long time_;
        /**
         * <pre>
         * 间隔时间
         * </pre>
         *
         * <code>int64 time = 4;</code>
         * @return The time.
         */
        @java.lang.Override
        public long getTime() {
            return time_;
        }

        public static final int MASK_URL_FIELD_NUMBER = 5;
        private volatile java.lang.Object maskUrl_;
        /**
         * <pre>
         * 蒙版url
         * </pre>
         *
         * <code>string mask_url = 5;</code>
         * @return The maskUrl.
         */
        @java.lang.Override
        public java.lang.String getMaskUrl() {
            java.lang.Object ref = maskUrl_;
            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();
                maskUrl_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 蒙版url
         * </pre>
         *
         * <code>string mask_url = 5;</code>
         * @return The bytes for maskUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getMaskUrlBytes() {
            java.lang.Object ref = maskUrl_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                maskUrl_ = 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 (cid_ != 0L) {
                output.writeInt64(1, cid_);
            }
            if (plat_ != 0) {
                output.writeInt32(2, plat_);
            }
            if (fps_ != 0) {
                output.writeInt32(3, fps_);
            }
            if (time_ != 0L) {
                output.writeInt64(4, time_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maskUrl_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, maskUrl_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (cid_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(1, cid_);
            }
            if (plat_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(2, plat_);
            }
            if (fps_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, fps_);
            }
            if (time_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt64Size(4, time_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maskUrl_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, maskUrl_);
            }
            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 com.yutou.qqbot.bilibili.VideoDanMu.VideoMask)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.VideoMask other = (com.yutou.qqbot.bilibili.VideoDanMu.VideoMask) obj;

            if (getCid()
                    != other.getCid()) return false;
            if (getPlat()
                    != other.getPlat()) return false;
            if (getFps()
                    != other.getFps()) return false;
            if (getTime()
                    != other.getTime()) return false;
            if (!getMaskUrl()
                    .equals(other.getMaskUrl())) 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) + CID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getCid());
            hash = (37 * hash) + PLAT_FIELD_NUMBER;
            hash = (53 * hash) + getPlat();
            hash = (37 * hash) + FPS_FIELD_NUMBER;
            hash = (53 * hash) + getFps();
            hash = (37 * hash) + TIME_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getTime());
            hash = (37 * hash) + MASK_URL_FIELD_NUMBER;
            hash = (53 * hash) + getMaskUrl().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.VideoMask prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 智能防挡弹幕蒙版信息
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.VideoMask}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.VideoMask)
                com.yutou.qqbot.bilibili.VideoDanMu.VideoMaskOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoMask_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoMask_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.class, com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.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();
                cid_ = 0L;

                plat_ = 0;

                fps_ = 0;

                time_ = 0L;

                maskUrl_ = "";

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoMask_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoMask getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoMask build() {
                com.yutou.qqbot.bilibili.VideoDanMu.VideoMask result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoMask buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.VideoMask result = new com.yutou.qqbot.bilibili.VideoDanMu.VideoMask(this);
                result.cid_ = cid_;
                result.plat_ = plat_;
                result.fps_ = fps_;
                result.time_ = time_;
                result.maskUrl_ = maskUrl_;
                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 com.yutou.qqbot.bilibili.VideoDanMu.VideoMask) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.VideoMask)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.VideoMask other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.VideoMask.getDefaultInstance()) return this;
                if (other.getCid() != 0L) {
                    setCid(other.getCid());
                }
                if (other.getPlat() != 0) {
                    setPlat(other.getPlat());
                }
                if (other.getFps() != 0) {
                    setFps(other.getFps());
                }
                if (other.getTime() != 0L) {
                    setTime(other.getTime());
                }
                if (!other.getMaskUrl().isEmpty()) {
                    maskUrl_ = other.maskUrl_;
                    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 {
                com.yutou.qqbot.bilibili.VideoDanMu.VideoMask parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.VideoMask) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private long cid_ ;
            /**
             * <pre>
             * 视频cid
             * </pre>
             *
             * <code>int64 cid = 1;</code>
             * @return The cid.
             */
            @java.lang.Override
            public long getCid() {
                return cid_;
            }
            /**
             * <pre>
             * 视频cid
             * </pre>
             *
             * <code>int64 cid = 1;</code>
             * @param value The cid to set.
             * @return This builder for chaining.
             */
            public Builder setCid(long value) {

                cid_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频cid
             * </pre>
             *
             * <code>int64 cid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearCid() {

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

            private int plat_ ;
            /**
             * <pre>
             * 平台
             * 0:web端 1:客户端
             * </pre>
             *
             * <code>int32 plat = 2;</code>
             * @return The plat.
             */
            @java.lang.Override
            public int getPlat() {
                return plat_;
            }
            /**
             * <pre>
             * 平台
             * 0:web端 1:客户端
             * </pre>
             *
             * <code>int32 plat = 2;</code>
             * @param value The plat to set.
             * @return This builder for chaining.
             */
            public Builder setPlat(int value) {

                plat_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 平台
             * 0:web端 1:客户端
             * </pre>
             *
             * <code>int32 plat = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearPlat() {

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

            private int fps_ ;
            /**
             * <pre>
             * 帧率
             * </pre>
             *
             * <code>int32 fps = 3;</code>
             * @return The fps.
             */
            @java.lang.Override
            public int getFps() {
                return fps_;
            }
            /**
             * <pre>
             * 帧率
             * </pre>
             *
             * <code>int32 fps = 3;</code>
             * @param value The fps to set.
             * @return This builder for chaining.
             */
            public Builder setFps(int value) {

                fps_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 帧率
             * </pre>
             *
             * <code>int32 fps = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearFps() {

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

            private long time_ ;
            /**
             * <pre>
             * 间隔时间
             * </pre>
             *
             * <code>int64 time = 4;</code>
             * @return The time.
             */
            @java.lang.Override
            public long getTime() {
                return time_;
            }
            /**
             * <pre>
             * 间隔时间
             * </pre>
             *
             * <code>int64 time = 4;</code>
             * @param value The time to set.
             * @return This builder for chaining.
             */
            public Builder setTime(long value) {

                time_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 间隔时间
             * </pre>
             *
             * <code>int64 time = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearTime() {

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

            private java.lang.Object maskUrl_ = "";
            /**
             * <pre>
             * 蒙版url
             * </pre>
             *
             * <code>string mask_url = 5;</code>
             * @return The maskUrl.
             */
            public java.lang.String getMaskUrl() {
                java.lang.Object ref = maskUrl_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    maskUrl_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 蒙版url
             * </pre>
             *
             * <code>string mask_url = 5;</code>
             * @return The bytes for maskUrl.
             */
            public com.google.protobuf.ByteString
            getMaskUrlBytes() {
                java.lang.Object ref = maskUrl_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    maskUrl_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 蒙版url
             * </pre>
             *
             * <code>string mask_url = 5;</code>
             * @param value The maskUrl to set.
             * @return This builder for chaining.
             */
            public Builder setMaskUrl(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                maskUrl_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 蒙版url
             * </pre>
             *
             * <code>string mask_url = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearMaskUrl() {

                maskUrl_ = getDefaultInstance().getMaskUrl();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 蒙版url
             * </pre>
             *
             * <code>string mask_url = 5;</code>
             * @param value The bytes for maskUrl to set.
             * @return This builder for chaining.
             */
            public Builder setMaskUrlBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                maskUrl_ = 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:com.yutou.qqbot.bilibili.VideoMask)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.VideoMask)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.VideoMask DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.VideoMask();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoMask getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.VideoMask getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface VideoSubtitleOrBuilder extends
            // @@protoc_insertion_point(interface_extends:com.yutou.qqbot.bilibili.VideoSubtitle)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * 视频原语言代码
         * </pre>
         *
         * <code>string lan = 1;</code>
         * @return The lan.
         */
        java.lang.String getLan();
        /**
         * <pre>
         * 视频原语言代码
         * </pre>
         *
         * <code>string lan = 1;</code>
         * @return The bytes for lan.
         */
        com.google.protobuf.ByteString
        getLanBytes();

        /**
         * <pre>
         * 视频原语言
         * </pre>
         *
         * <code>string lanDoc = 2;</code>
         * @return The lanDoc.
         */
        java.lang.String getLanDoc();
        /**
         * <pre>
         * 视频原语言
         * </pre>
         *
         * <code>string lanDoc = 2;</code>
         * @return The bytes for lanDoc.
         */
        com.google.protobuf.ByteString
        getLanDocBytes();

        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem>
        getSubtitlesList();
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem getSubtitles(int index);
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        int getSubtitlesCount();
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder>
        getSubtitlesOrBuilderList();
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder getSubtitlesOrBuilder(
                int index);
    }
    /**
     * <pre>
     * 视频字幕信息
     * </pre>
     *
     * Protobuf type {@code com.yutou.qqbot.bilibili.VideoSubtitle}
     */
    public static final class VideoSubtitle extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:com.yutou.qqbot.bilibili.VideoSubtitle)
            VideoSubtitleOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use VideoSubtitle.newBuilder() to construct.
        private VideoSubtitle(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private VideoSubtitle() {
            lan_ = "";
            lanDoc_ = "";
            subtitles_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private VideoSubtitle(
                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: {
                            java.lang.String s = input.readStringRequireUtf8();

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

                            lanDoc_ = s;
                            break;
                        }
                        case 26: {
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                subtitles_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            subtitles_.add(
                                    input.readMessage(com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    subtitles_ = java.util.Collections.unmodifiableList(subtitles_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.class, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder.class);
        }

        public static final int LAN_FIELD_NUMBER = 1;
        private volatile java.lang.Object lan_;
        /**
         * <pre>
         * 视频原语言代码
         * </pre>
         *
         * <code>string lan = 1;</code>
         * @return The lan.
         */
        @java.lang.Override
        public java.lang.String getLan() {
            java.lang.Object ref = lan_;
            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();
                lan_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 视频原语言代码
         * </pre>
         *
         * <code>string lan = 1;</code>
         * @return The bytes for lan.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getLanBytes() {
            java.lang.Object ref = lan_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                lan_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int LANDOC_FIELD_NUMBER = 2;
        private volatile java.lang.Object lanDoc_;
        /**
         * <pre>
         * 视频原语言
         * </pre>
         *
         * <code>string lanDoc = 2;</code>
         * @return The lanDoc.
         */
        @java.lang.Override
        public java.lang.String getLanDoc() {
            java.lang.Object ref = lanDoc_;
            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();
                lanDoc_ = s;
                return s;
            }
        }
        /**
         * <pre>
         * 视频原语言
         * </pre>
         *
         * <code>string lanDoc = 2;</code>
         * @return The bytes for lanDoc.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getLanDocBytes() {
            java.lang.Object ref = lanDoc_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                lanDoc_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SUBTITLES_FIELD_NUMBER = 3;
        private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem> subtitles_;
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        @java.lang.Override
        public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem> getSubtitlesList() {
            return subtitles_;
        }
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder>
        getSubtitlesOrBuilderList() {
            return subtitles_;
        }
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        @java.lang.Override
        public int getSubtitlesCount() {
            return subtitles_.size();
        }
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem getSubtitles(int index) {
            return subtitles_.get(index);
        }
        /**
         * <pre>
         * 视频字幕列表
         * </pre>
         *
         * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
         */
        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder getSubtitlesOrBuilder(
                int index) {
            return subtitles_.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 {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lan_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lan_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lanDoc_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, lanDoc_);
            }
            for (int i = 0; i < subtitles_.size(); i++) {
                output.writeMessage(3, subtitles_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lan_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lan_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lanDoc_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, lanDoc_);
            }
            for (int i = 0; i < subtitles_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(3, subtitles_.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 com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle)) {
                return super.equals(obj);
            }
            com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle other = (com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle) obj;

            if (!getLan()
                    .equals(other.getLan())) return false;
            if (!getLanDoc()
                    .equals(other.getLanDoc())) return false;
            if (!getSubtitlesList()
                    .equals(other.getSubtitlesList())) 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) + LAN_FIELD_NUMBER;
            hash = (53 * hash) + getLan().hashCode();
            hash = (37 * hash) + LANDOC_FIELD_NUMBER;
            hash = (53 * hash) + getLanDoc().hashCode();
            if (getSubtitlesCount() > 0) {
                hash = (37 * hash) + SUBTITLES_FIELD_NUMBER;
                hash = (53 * hash) + getSubtitlesList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                    ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * <pre>
         * 视频字幕信息
         * </pre>
         *
         * Protobuf type {@code com.yutou.qqbot.bilibili.VideoSubtitle}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:com.yutou.qqbot.bilibili.VideoSubtitle)
                com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitleOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.class, com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.Builder.class);
            }

            // Construct using com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                lanDoc_ = "";

                if (subtitlesBuilder_ == null) {
                    subtitles_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                    subtitlesBuilder_.clear();
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_descriptor;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle getDefaultInstanceForType() {
                return com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.getDefaultInstance();
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle build() {
                com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle buildPartial() {
                com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle result = new com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle(this);
                int from_bitField0_ = bitField0_;
                result.lan_ = lan_;
                result.lanDoc_ = lanDoc_;
                if (subtitlesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        subtitles_ = java.util.Collections.unmodifiableList(subtitles_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.subtitles_ = subtitles_;
                } else {
                    result.subtitles_ = subtitlesBuilder_.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 com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle) {
                    return mergeFrom((com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle other) {
                if (other == com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle.getDefaultInstance()) return this;
                if (!other.getLan().isEmpty()) {
                    lan_ = other.lan_;
                    onChanged();
                }
                if (!other.getLanDoc().isEmpty()) {
                    lanDoc_ = other.lanDoc_;
                    onChanged();
                }
                if (subtitlesBuilder_ == null) {
                    if (!other.subtitles_.isEmpty()) {
                        if (subtitles_.isEmpty()) {
                            subtitles_ = other.subtitles_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureSubtitlesIsMutable();
                            subtitles_.addAll(other.subtitles_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.subtitles_.isEmpty()) {
                        if (subtitlesBuilder_.isEmpty()) {
                            subtitlesBuilder_.dispose();
                            subtitlesBuilder_ = null;
                            subtitles_ = other.subtitles_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            subtitlesBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getSubtitlesFieldBuilder() : null;
                        } else {
                            subtitlesBuilder_.addAllMessages(other.subtitles_);
                        }
                    }
                }
                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 {
                com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private java.lang.Object lan_ = "";
            /**
             * <pre>
             * 视频原语言代码
             * </pre>
             *
             * <code>string lan = 1;</code>
             * @return The lan.
             */
            public java.lang.String getLan() {
                java.lang.Object ref = lan_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    lan_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 视频原语言代码
             * </pre>
             *
             * <code>string lan = 1;</code>
             * @return The bytes for lan.
             */
            public com.google.protobuf.ByteString
            getLanBytes() {
                java.lang.Object ref = lan_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    lan_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 视频原语言代码
             * </pre>
             *
             * <code>string lan = 1;</code>
             * @param value The lan to set.
             * @return This builder for chaining.
             */
            public Builder setLan(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                lan_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频原语言代码
             * </pre>
             *
             * <code>string lan = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearLan() {

                lan_ = getDefaultInstance().getLan();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频原语言代码
             * </pre>
             *
             * <code>string lan = 1;</code>
             * @param value The bytes for lan to set.
             * @return This builder for chaining.
             */
            public Builder setLanBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object lanDoc_ = "";
            /**
             * <pre>
             * 视频原语言
             * </pre>
             *
             * <code>string lanDoc = 2;</code>
             * @return The lanDoc.
             */
            public java.lang.String getLanDoc() {
                java.lang.Object ref = lanDoc_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    lanDoc_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <pre>
             * 视频原语言
             * </pre>
             *
             * <code>string lanDoc = 2;</code>
             * @return The bytes for lanDoc.
             */
            public com.google.protobuf.ByteString
            getLanDocBytes() {
                java.lang.Object ref = lanDoc_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    lanDoc_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <pre>
             * 视频原语言
             * </pre>
             *
             * <code>string lanDoc = 2;</code>
             * @param value The lanDoc to set.
             * @return This builder for chaining.
             */
            public Builder setLanDoc(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                lanDoc_ = value;
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频原语言
             * </pre>
             *
             * <code>string lanDoc = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearLanDoc() {

                lanDoc_ = getDefaultInstance().getLanDoc();
                onChanged();
                return this;
            }
            /**
             * <pre>
             * 视频原语言
             * </pre>
             *
             * <code>string lanDoc = 2;</code>
             * @param value The bytes for lanDoc to set.
             * @return This builder for chaining.
             */
            public Builder setLanDocBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem> subtitles_ =
                    java.util.Collections.emptyList();
            private void ensureSubtitlesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    subtitles_ = new java.util.ArrayList<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem>(subtitles_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder> subtitlesBuilder_;

            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem> getSubtitlesList() {
                if (subtitlesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(subtitles_);
                } else {
                    return subtitlesBuilder_.getMessageList();
                }
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public int getSubtitlesCount() {
                if (subtitlesBuilder_ == null) {
                    return subtitles_.size();
                } else {
                    return subtitlesBuilder_.getCount();
                }
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem getSubtitles(int index) {
                if (subtitlesBuilder_ == null) {
                    return subtitles_.get(index);
                } else {
                    return subtitlesBuilder_.getMessage(index);
                }
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder setSubtitles(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem value) {
                if (subtitlesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSubtitlesIsMutable();
                    subtitles_.set(index, value);
                    onChanged();
                } else {
                    subtitlesBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder setSubtitles(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder builderForValue) {
                if (subtitlesBuilder_ == null) {
                    ensureSubtitlesIsMutable();
                    subtitles_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    subtitlesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder addSubtitles(com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem value) {
                if (subtitlesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSubtitlesIsMutable();
                    subtitles_.add(value);
                    onChanged();
                } else {
                    subtitlesBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder addSubtitles(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem value) {
                if (subtitlesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSubtitlesIsMutable();
                    subtitles_.add(index, value);
                    onChanged();
                } else {
                    subtitlesBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder addSubtitles(
                    com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder builderForValue) {
                if (subtitlesBuilder_ == null) {
                    ensureSubtitlesIsMutable();
                    subtitles_.add(builderForValue.build());
                    onChanged();
                } else {
                    subtitlesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder addSubtitles(
                    int index, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder builderForValue) {
                if (subtitlesBuilder_ == null) {
                    ensureSubtitlesIsMutable();
                    subtitles_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    subtitlesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder addAllSubtitles(
                    java.lang.Iterable<? extends com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem> values) {
                if (subtitlesBuilder_ == null) {
                    ensureSubtitlesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, subtitles_);
                    onChanged();
                } else {
                    subtitlesBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder clearSubtitles() {
                if (subtitlesBuilder_ == null) {
                    subtitles_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    subtitlesBuilder_.clear();
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public Builder removeSubtitles(int index) {
                if (subtitlesBuilder_ == null) {
                    ensureSubtitlesIsMutable();
                    subtitles_.remove(index);
                    onChanged();
                } else {
                    subtitlesBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder getSubtitlesBuilder(
                    int index) {
                return getSubtitlesFieldBuilder().getBuilder(index);
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder getSubtitlesOrBuilder(
                    int index) {
                if (subtitlesBuilder_ == null) {
                    return subtitles_.get(index);  } else {
                    return subtitlesBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public java.util.List<? extends com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder>
            getSubtitlesOrBuilderList() {
                if (subtitlesBuilder_ != null) {
                    return subtitlesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(subtitles_);
                }
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder addSubtitlesBuilder() {
                return getSubtitlesFieldBuilder().addBuilder(
                        com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.getDefaultInstance());
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder addSubtitlesBuilder(
                    int index) {
                return getSubtitlesFieldBuilder().addBuilder(
                        index, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.getDefaultInstance());
            }
            /**
             * <pre>
             * 视频字幕列表
             * </pre>
             *
             * <code>repeated .com.yutou.qqbot.bilibili.SubtitleItem subtitles = 3;</code>
             */
            public java.util.List<com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder>
            getSubtitlesBuilderList() {
                return getSubtitlesFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder>
            getSubtitlesFieldBuilder() {
                if (subtitlesBuilder_ == null) {
                    subtitlesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItem.Builder, com.yutou.qqbot.bilibili.VideoDanMu.SubtitleItemOrBuilder>(
                            subtitles_,
                            ((bitField0_ & 0x00000001) != 0),
                            getParentForChildren(),
                            isClean());
                    subtitles_ = null;
                }
                return subtitlesBuilder_;
            }
            @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:com.yutou.qqbot.bilibili.VideoSubtitle)
        }

        // @@protoc_insertion_point(class_scope:com.yutou.qqbot.bilibili.VideoSubtitle)
        private static final com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle();
        }

        public static com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.yutou.qqbot.bilibili.VideoDanMu.VideoSubtitle getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_CommandDm_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_CommandDm_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmakuElem_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmakuElem_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmSegConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmSegConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmViewReply_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmViewReply_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmViewReq_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmViewReq_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_ExpoReport_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_ExpoReport_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_Expression_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_Expression_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_Expressions_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_Expressions_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_Period_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_Period_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_Response_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_Response_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_SubtitleItem_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_SubtitleItem_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_UserInfo_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_UserInfo_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_VideoMask_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_VideoMask_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_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\010dm.proto\022\030com.yutou.qqbot.bilibili\"P\n\016" +
                        "BuzzwordConfig\022>\n\010keywords\030\001 \003(\0132,.com.y" +
                        "utou.qqbot.bilibili.BuzzwordShowConfig\"x" +
                        "\n\022BuzzwordShowConfig\022\014\n\004name\030\001 \001(\t\022\016\n\006sc" +
                        "hema\030\002 \001(\t\022\016\n\006source\030\003 \001(\005\022\n\n\002id\030\004 \001(\003\022\023" +
                        "\n\013buzzword_id\030\005 \001(\003\022\023\n\013schema_type\030\006 \001(\005" +
                        "\"\241\001\n\tCommandDm\022\n\n\002id\030\001 \001(\003\022\013\n\003oid\030\002 \001(\003\022" +
                        "\013\n\003mid\030\003 \001(\t\022\017\n\007command\030\004 \001(\t\022\017\n\007content" +
                        "\030\005 \001(\t\022\020\n\010progress\030\006 \001(\005\022\r\n\005ctime\030\007 \001(\t\022" +
                        "\r\n\005mtime\030\010 \001(\t\022\r\n\005extra\030\t \001(\t\022\r\n\005idStr\030\n" +
                        " \001(\t\"H\n\rDanmakuAIFlag\0227\n\010dm_flags\030\001 \003(\0132" +
                        "%.com.yutou.qqbot.bilibili.DanmakuFlag\"\326" +
                        "\001\n\013DanmakuElem\022\n\n\002id\030\001 \001(\003\022\020\n\010progress\030\002" +
                        " \001(\005\022\014\n\004mode\030\003 \001(\005\022\020\n\010fontsize\030\004 \001(\005\022\r\n\005" +
                        "color\030\005 \001(\r\022\017\n\007midHash\030\006 \001(\t\022\017\n\007content\030" +
                        "\007 \001(\t\022\r\n\005ctime\030\010 \001(\003\022\016\n\006weight\030\t \001(\005\022\016\n\006" +
                        "action\030\n \001(\t\022\014\n\004pool\030\013 \001(\005\022\r\n\005idStr\030\014 \001(" +
                        "\t\022\014\n\004attr\030\r \001(\005\")\n\013DanmakuFlag\022\014\n\004dmid\030\001" +
                        " \001(\003\022\014\n\004flag\030\002 \001(\r\"K\n\021DanmakuFlagConfig\022" +
                        "\020\n\010rec_flag\030\001 \001(\005\022\020\n\010rec_text\030\002 \001(\t\022\022\n\nr" +
                        "ec_switch\030\003 \001(\005\"\314\004\n\030DanmuDefaultPlayerCo" +
                        "nfig\022)\n!player_danmaku_use_default_confi" +
                        "g\030\001 \001(\010\022,\n$player_danmaku_ai_recommended" +
                        "_switch\030\004 \001(\010\022+\n#player_danmaku_ai_recom" +
                        "mended_level\030\005 \001(\005\022\037\n\027player_danmaku_blo" +
                        "cktop\030\006 \001(\010\022\"\n\032player_danmaku_blockscrol" +
                        "l\030\007 \001(\010\022\"\n\032player_danmaku_blockbottom\030\010 " +
                        "\001(\010\022$\n\034player_danmaku_blockcolorful\030\t \001(" +
                        "\010\022\"\n\032player_danmaku_blockrepeat\030\n \001(\010\022#\n" +
                        "\033player_danmaku_blockspecial\030\013 \001(\010\022\036\n\026pl" +
                        "ayer_danmaku_opacity\030\014 \001(\002\022$\n\034player_dan" +
                        "maku_scalingfactor\030\r \001(\002\022\035\n\025player_danma" +
                        "ku_domain\030\016 \001(\002\022\034\n\024player_danmaku_speed\030" +
                        "\017 \001(\005\022$\n\034inline_player_danmaku_switch\030\020 " +
                        "\001(\010\022)\n!player_danmaku_senior_mode_switch" +
                        "\030\021 \001(\005\"\376\005\n\021DanmuPlayerConfig\022\035\n\025player_d" +
                        "anmaku_switch\030\001 \001(\010\022\"\n\032player_danmaku_sw" +
                        "itch_save\030\002 \001(\010\022)\n!player_danmaku_use_de" +
                        "fault_config\030\003 \001(\010\022,\n$player_danmaku_ai_" +
                        "recommended_switch\030\004 \001(\010\022+\n#player_danma" +
                        "ku_ai_recommended_level\030\005 \001(\005\022\037\n\027player_" +
                        "danmaku_blocktop\030\006 \001(\010\022\"\n\032player_danmaku" +
                        "_blockscroll\030\007 \001(\010\022\"\n\032player_danmaku_blo" +
                        "ckbottom\030\010 \001(\010\022$\n\034player_danmaku_blockco" +
                        "lorful\030\t \001(\010\022\"\n\032player_danmaku_blockrepe" +
                        "at\030\n \001(\010\022#\n\033player_danmaku_blockspecial\030" +
                        "\013 \001(\010\022\036\n\026player_danmaku_opacity\030\014 \001(\002\022$\n" +
                        "\034player_danmaku_scalingfactor\030\r \001(\002\022\035\n\025p" +
                        "layer_danmaku_domain\030\016 \001(\002\022\034\n\024player_dan" +
                        "maku_speed\030\017 \001(\005\022&\n\036player_danmaku_enabl" +
                        "eblocklist\030\020 \001(\010\022$\n\034inline_player_danmak" +
                        "u_switch\030\021 \001(\010\022$\n\034inline_player_danmaku_" +
                        "config\030\022 \001(\005\022&\n\036player_danmaku_ios_switc" +
                        "h_save\030\023 \001(\005\022)\n!player_danmaku_senior_mo" +
                        "de_switch\030\024 \001(\005\"K\n\030DanmuPlayerDynamicCon" +
                        "fig\022\020\n\010progress\030\001 \001(\005\022\035\n\025player_danmaku_" +
                        "domain\030\016 \001(\002\"\231\002\n\025DanmuPlayerViewConfig\022Y" +
                        "\n\035danmuku_default_player_config\030\001 \001(\01322." +
                        "com.yutou.qqbot.bilibili.DanmuDefaultPla" +
                        "yerConfig\022J\n\025danmuku_player_config\030\002 \001(\013" +
                        "2+.com.yutou.qqbot.bilibili.DanmuPlayerC" +
                        "onfig\022Y\n\035danmuku_player_dynamic_config\030\003" +
                        " \003(\01322.com.yutou.qqbot.bilibili.DanmuPla" +
                        "yerDynamicConfig\"\253\003\n\024DanmuWebPlayerConfi" +
                        "g\022\021\n\tdm_switch\030\001 \001(\010\022\021\n\tai_switch\030\002 \001(\010\022" +
                        "\020\n\010ai_level\030\003 \001(\005\022\020\n\010blocktop\030\004 \001(\010\022\023\n\013b" +
                        "lockscroll\030\005 \001(\010\022\023\n\013blockbottom\030\006 \001(\010\022\022\n" +
                        "\nblockcolor\030\007 \001(\010\022\024\n\014blockspecial\030\010 \001(\010\022" +
                        "\024\n\014preventshade\030\t \001(\010\022\r\n\005dmask\030\n \001(\010\022\017\n\007" +
                        "opacity\030\013 \001(\002\022\016\n\006dmarea\030\014 \001(\005\022\021\n\tspeedpl" +
                        "us\030\r \001(\002\022\020\n\010fontsize\030\016 \001(\002\022\022\n\nscreensync" +
                        "\030\017 \001(\010\022\021\n\tspeedsync\030\020 \001(\010\022\022\n\nfontfamily\030" +
                        "\021 \001(\t\022\014\n\004bold\030\022 \001(\010\022\022\n\nfontborder\030\023 \001(\005\022" +
                        "\021\n\tdraw_type\030\024 \001(\t\022\032\n\022senior_mode_switch" +
                        "\030\025 \001(\005\"A\n\017DmExpoReportReq\022\022\n\nsession_id\030" +
                        "\001 \001(\t\022\013\n\003oid\030\002 \001(\003\022\r\n\005spmid\030\004 \001(\t\"\021\n\017DmE" +
                        "xpoReportRes\"\355\n\n\021DmPlayerConfigReq\022\n\n\002ts" +
                        "\030\001 \001(\003\022=\n\006switch\030\002 \001(\0132-.com.yutou.qqbot" +
                        ".bilibili.PlayerDanmakuSwitch\022F\n\013switch_" +
                        "save\030\003 \001(\01321.com.yutou.qqbot.bilibili.Pl" +
                        "ayerDanmakuSwitchSave\022S\n\022use_default_con" +
                        "fig\030\004 \001(\01327.com.yutou.qqbot.bilibili.Pla" +
                        "yerDanmakuUseDefaultConfig\022Y\n\025ai_recomme" +
                        "nded_switch\030\005 \001(\0132:.com.yutou.qqbot.bili" +
                        "bili.PlayerDanmakuAiRecommendedSwitch\022W\n" +
                        "\024ai_recommended_level\030\006 \001(\01329.com.yutou." +
                        "qqbot.bilibili.PlayerDanmakuAiRecommende" +
                        "dLevel\022A\n\010blocktop\030\007 \001(\0132/.com.yutou.qqb" +
                        "ot.bilibili.PlayerDanmakuBlocktop\022G\n\013blo" +
                        "ckscroll\030\010 \001(\01322.com.yutou.qqbot.bilibil" +
                        "i.PlayerDanmakuBlockscroll\022G\n\013blockbotto" +
                        "m\030\t \001(\01322.com.yutou.qqbot.bilibili.Playe" +
                        "rDanmakuBlockbottom\022K\n\rblockcolorful\030\n \001" +
                        "(\01324.com.yutou.qqbot.bilibili.PlayerDanm" +
                        "akuBlockcolorful\022G\n\013blockrepeat\030\013 \001(\01322." +
                        "com.yutou.qqbot.bilibili.PlayerDanmakuBl" +
                        "ockrepeat\022I\n\014blockspecial\030\014 \001(\01323.com.yu" +
                        "tou.qqbot.bilibili.PlayerDanmakuBlockspe" +
                        "cial\022?\n\007opacity\030\r \001(\0132..com.yutou.qqbot." +
                        "bilibili.PlayerDanmakuOpacity\022K\n\rscaling" +
                        "factor\030\016 \001(\01324.com.yutou.qqbot.bilibili." +
                        "PlayerDanmakuScalingfactor\022=\n\006domain\030\017 \001" +
                        "(\0132-.com.yutou.qqbot.bilibili.PlayerDanm" +
                        "akuDomain\022;\n\005speed\030\020 \001(\0132,.com.yutou.qqb" +
                        "ot.bilibili.PlayerDanmakuSpeed\022O\n\017enable" +
                        "blocklist\030\021 \001(\01326.com.yutou.qqbot.bilibi" +
                        "li.PlayerDanmakuEnableblocklist\022V\n\031inlin" +
                        "ePlayerDanmakuSwitch\030\022 \001(\01323.com.yutou.q" +
                        "qbot.bilibili.InlinePlayerDanmakuSwitch\022" +
                        "S\n\022senior_mode_switch\030\023 \001(\01327.com.yutou." +
                        "qqbot.bilibili.PlayerDanmakuSeniorModeSw" +
                        "itch\"/\n\013DmSegConfig\022\021\n\tpage_size\030\001 \001(\003\022\r" +
                        "\n\005total\030\002 \001(\003\"\221\001\n\020DmSegMobileReply\0224\n\005el" +
                        "ems\030\001 \003(\0132%.com.yutou.qqbot.bilibili.Dan" +
                        "makuElem\022\r\n\005state\030\002 \001(\005\0228\n\007ai_flag\030\003 \001(\013" +
                        "2\'.com.yutou.qqbot.bilibili.DanmakuAIFla" +
                        "g\"g\n\016DmSegMobileReq\022\013\n\003pid\030\001 \001(\003\022\013\n\003oid\030" +
                        "\002 \001(\003\022\014\n\004type\030\003 \001(\005\022\025\n\rsegment_index\030\004 \001" +
                        "(\003\022\026\n\016teenagers_mode\030\005 \001(\005\"U\n\rDmSegOttRe" +
                        "ply\022\016\n\006closed\030\001 \001(\010\0224\n\005elems\030\002 \003(\0132%.com" +
                        ".yutou.qqbot.bilibili.DanmakuElem\"L\n\013DmS" +
                        "egOttReq\022\013\n\003pid\030\001 \001(\003\022\013\n\003oid\030\002 \001(\003\022\014\n\004ty" +
                        "pe\030\003 \001(\005\022\025\n\rsegment_index\030\004 \001(\003\"U\n\rDmSeg" +
                        "SDKReply\022\016\n\006closed\030\001 \001(\010\0224\n\005elems\030\002 \003(\0132" +
                        "%.com.yutou.qqbot.bilibili.DanmakuElem\"L" +
                        "\n\013DmSegSDKReq\022\013\n\003pid\030\001 \001(\003\022\013\n\003oid\030\002 \001(\003\022" +
                        "\014\n\004type\030\003 \001(\005\022\025\n\rsegment_index\030\004 \001(\003\"\212\005\n" +
                        "\013DmViewReply\022\016\n\006closed\030\001 \001(\010\0221\n\004mask\030\002 \001" +
                        "(\0132#.com.yutou.qqbot.bilibili.VideoMask\022" +
                        "9\n\010subtitle\030\003 \001(\0132\'.com.yutou.qqbot.bili" +
                        "bili.VideoSubtitle\022\023\n\013special_dms\030\004 \003(\t\022" +
                        "<\n\007ai_flag\030\005 \001(\0132+.com.yutou.qqbot.bilib" +
                        "ili.DanmakuFlagConfig\022F\n\rplayer_config\030\006" +
                        " \001(\0132/.com.yutou.qqbot.bilibili.DanmuPla" +
                        "yerViewConfig\022\026\n\016send_box_style\030\007 \001(\005\022\r\n" +
                        "\005allow\030\010 \001(\010\022\021\n\tcheck_box\030\t \001(\t\022\032\n\022check" +
                        "_box_show_msg\030\n \001(\t\022\030\n\020text_placeholder\030" +
                        "\013 \001(\t\022\031\n\021input_placeholder\030\014 \001(\t\022\035\n\025repo" +
                        "rt_filter_content\030\r \003(\t\0229\n\013expo_report\030\016" +
                        " \001(\0132$.com.yutou.qqbot.bilibili.ExpoRepo" +
                        "rt\022A\n\017buzzword_config\030\017 \001(\0132(.com.yutou." +
                        "qqbot.bilibili.BuzzwordConfig\022:\n\013express" +
                        "ions\030\020 \003(\0132%.com.yutou.qqbot.bilibili.Ex" +
                        "pressions\"X\n\tDmViewReq\022\013\n\003pid\030\001 \001(\003\022\013\n\003o" +
                        "id\030\002 \001(\003\022\014\n\004type\030\003 \001(\005\022\r\n\005spmid\030\004 \001(\t\022\024\n" +
                        "\014is_hard_boot\030\005 \001(\005\"\304\003\n\016DmWebViewReply\022\r" +
                        "\n\005state\030\001 \001(\005\022\014\n\004text\030\002 \001(\t\022\021\n\ttext_side" +
                        "\030\003 \001(\t\0225\n\006dm_sge\030\004 \001(\0132%.com.yutou.qqbot" +
                        ".bilibili.DmSegConfig\0229\n\004flag\030\005 \001(\0132+.co" +
                        "m.yutou.qqbot.bilibili.DanmakuFlagConfig" +
                        "\022\023\n\013special_dms\030\006 \003(\t\022\021\n\tcheck_box\030\007 \001(\010" +
                        "\022\r\n\005count\030\010 \001(\003\0227\n\ncommandDms\030\t \003(\0132#.co" +
                        "m.yutou.qqbot.bilibili.CommandDm\022E\n\rplay" +
                        "er_config\030\n \001(\0132..com.yutou.qqbot.bilibi" +
                        "li.DanmuWebPlayerConfig\022\035\n\025report_filter" +
                        "_content\030\013 \003(\t\022:\n\013expressions\030\014 \003(\0132%.co" +
                        "m.yutou.qqbot.bilibili.Expressions\"*\n\nEx" +
                        "poReport\022\034\n\024should_report_at_end\030\001 \001(\010\"\\" +
                        "\n\nExpression\022\017\n\007keyword\030\001 \003(\t\022\013\n\003url\030\002 \001" +
                        "(\t\0220\n\006period\030\003 \003(\0132 .com.yutou.qqbot.bil" +
                        "ibili.Period\"A\n\013Expressions\0222\n\004data\030\001 \003(" +
                        "\0132$.com.yutou.qqbot.bilibili.Expression\"" +
                        "$\n\006Period\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\"*\n" +
                        "\031InlinePlayerDanmakuSwitch\022\r\n\005value\030\001 \001(" +
                        "\010\"0\n\037PlayerDanmakuAiRecommendedLevel\022\r\n\005" +
                        "value\030\001 \001(\010\"1\n PlayerDanmakuAiRecommende" +
                        "dSwitch\022\r\n\005value\030\001 \001(\010\")\n\030PlayerDanmakuB" +
                        "lockbottom\022\r\n\005value\030\001 \001(\010\"+\n\032PlayerDanma" +
                        "kuBlockcolorful\022\r\n\005value\030\001 \001(\010\")\n\030Player" +
                        "DanmakuBlockrepeat\022\r\n\005value\030\001 \001(\010\")\n\030Pla" +
                        "yerDanmakuBlockscroll\022\r\n\005value\030\001 \001(\010\"*\n\031" +
                        "PlayerDanmakuBlockspecial\022\r\n\005value\030\001 \001(\010" +
                        "\"&\n\025PlayerDanmakuBlocktop\022\r\n\005value\030\001 \001(\010" +
                        "\"$\n\023PlayerDanmakuDomain\022\r\n\005value\030\001 \001(\002\"-" +
                        "\n\034PlayerDanmakuEnableblocklist\022\r\n\005value\030" +
                        "\001 \001(\010\"%\n\024PlayerDanmakuOpacity\022\r\n\005value\030\001" +
                        " \001(\002\"+\n\032PlayerDanmakuScalingfactor\022\r\n\005va" +
                        "lue\030\001 \001(\002\".\n\035PlayerDanmakuSeniorModeSwit" +
                        "ch\022\r\n\005value\030\001 \001(\005\"#\n\022PlayerDanmakuSpeed\022" +
                        "\r\n\005value\030\001 \001(\005\"7\n\023PlayerDanmakuSwitch\022\r\n" +
                        "\005value\030\001 \001(\010\022\021\n\tcanIgnore\030\002 \001(\010\"(\n\027Playe" +
                        "rDanmakuSwitchSave\022\r\n\005value\030\001 \001(\010\".\n\035Pla" +
                        "yerDanmakuUseDefaultConfig\022\r\n\005value\030\001 \001(" +
                        "\010\")\n\010Response\022\014\n\004code\030\001 \001(\005\022\017\n\007message\030\002" +
                        " \001(\t\"\310\001\n\014SubtitleItem\022\n\n\002id\030\001 \001(\003\022\016\n\006id_" +
                        "str\030\002 \001(\t\022\013\n\003lan\030\003 \001(\t\022\017\n\007lan_doc\030\004 \001(\t\022" +
                        "\024\n\014subtitle_url\030\005 \001(\t\0222\n\006author\030\006 \001(\0132\"." +
                        "com.yutou.qqbot.bilibili.UserInfo\0224\n\004typ" +
                        "e\030\007 \001(\0162&.com.yutou.qqbot.bilibili.Subti" +
                        "tleType\"\\\n\010UserInfo\022\013\n\003mid\030\001 \001(\003\022\014\n\004name" +
                        "\030\002 \001(\t\022\013\n\003sex\030\003 \001(\t\022\014\n\004face\030\004 \001(\t\022\014\n\004sig" +
                        "n\030\005 \001(\t\022\014\n\004rank\030\006 \001(\005\"S\n\tVideoMask\022\013\n\003ci" +
                        "d\030\001 \001(\003\022\014\n\004plat\030\002 \001(\005\022\013\n\003fps\030\003 \001(\005\022\014\n\004ti" +
                        "me\030\004 \001(\003\022\020\n\010mask_url\030\005 \001(\t\"g\n\rVideoSubti" +
                        "tle\022\013\n\003lan\030\001 \001(\t\022\016\n\006lanDoc\030\002 \001(\t\0229\n\tsubt" +
                        "itles\030\003 \003(\0132&.com.yutou.qqbot.bilibili.S" +
                        "ubtitleItem*L\n\tDMAttrBit\022\024\n\020DMAttrBitPro" +
                        "tect\020\000\022\025\n\021DMAttrBitFromLive\020\001\022\022\n\016DMAttrH" +
                        "ighLike\020\002*\036\n\014SubtitleType\022\006\n\002CC\020\000\022\006\n\002AI\020" +
                        "\0012\300\004\n\002DM\022c\n\013DmSegMobile\022(.com.yutou.qqbo" +
                        "t.bilibili.DmSegMobileReq\032*.com.yutou.qq" +
                        "bot.bilibili.DmSegMobileReply\022T\n\006DmView\022" +
                        "#.com.yutou.qqbot.bilibili.DmViewReq\032%.c" +
                        "om.yutou.qqbot.bilibili.DmViewReply\022a\n\016D" +
                        "mPlayerConfig\022+.com.yutou.qqbot.bilibili" +
                        ".DmPlayerConfigReq\032\".com.yutou.qqbot.bil" +
                        "ibili.Response\022Z\n\010DmSegOtt\022%.com.yutou.q" +
                        "qbot.bilibili.DmSegOttReq\032\'.com.yutou.qq" +
                        "bot.bilibili.DmSegOttReply\022Z\n\010DmSegSDK\022%" +
                        ".com.yutou.qqbot.bilibili.DmSegSDKReq\032\'." +
                        "com.yutou.qqbot.bilibili.DmSegSDKReply\022d" +
                        "\n\014DmExpoReport\022).com.yutou.qqbot.bilibil" +
                        "i.DmExpoReportReq\032).com.yutou.qqbot.bili" +
                        "bili.DmExpoReportResB&\n\030com.yutou.qqbot." +
                        "bilibiliB\nVideoDanMub\006proto3"
        };
        descriptor = com.google.protobuf.Descriptors.FileDescriptor
                .internalBuildGeneratedFileFrom(descriptorData,
                        new com.google.protobuf.Descriptors.FileDescriptor[] {
                        });
        internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_descriptor =
                getDescriptor().getMessageTypes().get(0);
        internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_BuzzwordConfig_descriptor,
                new java.lang.String[] { "Keywords", });
        internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_descriptor =
                getDescriptor().getMessageTypes().get(1);
        internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_BuzzwordShowConfig_descriptor,
                new java.lang.String[] { "Name", "Schema", "Source", "Id", "BuzzwordId", "SchemaType", });
        internal_static_com_yutou_qqbot_bilibili_CommandDm_descriptor =
                getDescriptor().getMessageTypes().get(2);
        internal_static_com_yutou_qqbot_bilibili_CommandDm_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_CommandDm_descriptor,
                new java.lang.String[] { "Id", "Oid", "Mid", "Command", "Content", "Progress", "Ctime", "Mtime", "Extra", "IdStr", });
        internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_descriptor =
                getDescriptor().getMessageTypes().get(3);
        internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmakuAIFlag_descriptor,
                new java.lang.String[] { "DmFlags", });
        internal_static_com_yutou_qqbot_bilibili_DanmakuElem_descriptor =
                getDescriptor().getMessageTypes().get(4);
        internal_static_com_yutou_qqbot_bilibili_DanmakuElem_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmakuElem_descriptor,
                new java.lang.String[] { "Id", "Progress", "Mode", "Fontsize", "Color", "MidHash", "Content", "Ctime", "Weight", "Action", "Pool", "IdStr", "Attr", });
        internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_descriptor =
                getDescriptor().getMessageTypes().get(5);
        internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmakuFlag_descriptor,
                new java.lang.String[] { "Dmid", "Flag", });
        internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_descriptor =
                getDescriptor().getMessageTypes().get(6);
        internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmakuFlagConfig_descriptor,
                new java.lang.String[] { "RecFlag", "RecText", "RecSwitch", });
        internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_descriptor =
                getDescriptor().getMessageTypes().get(7);
        internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmuDefaultPlayerConfig_descriptor,
                new java.lang.String[] { "PlayerDanmakuUseDefaultConfig", "PlayerDanmakuAiRecommendedSwitch", "PlayerDanmakuAiRecommendedLevel", "PlayerDanmakuBlocktop", "PlayerDanmakuBlockscroll", "PlayerDanmakuBlockbottom", "PlayerDanmakuBlockcolorful", "PlayerDanmakuBlockrepeat", "PlayerDanmakuBlockspecial", "PlayerDanmakuOpacity", "PlayerDanmakuScalingfactor", "PlayerDanmakuDomain", "PlayerDanmakuSpeed", "InlinePlayerDanmakuSwitch", "PlayerDanmakuSeniorModeSwitch", });
        internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_descriptor =
                getDescriptor().getMessageTypes().get(8);
        internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmuPlayerConfig_descriptor,
                new java.lang.String[] { "PlayerDanmakuSwitch", "PlayerDanmakuSwitchSave", "PlayerDanmakuUseDefaultConfig", "PlayerDanmakuAiRecommendedSwitch", "PlayerDanmakuAiRecommendedLevel", "PlayerDanmakuBlocktop", "PlayerDanmakuBlockscroll", "PlayerDanmakuBlockbottom", "PlayerDanmakuBlockcolorful", "PlayerDanmakuBlockrepeat", "PlayerDanmakuBlockspecial", "PlayerDanmakuOpacity", "PlayerDanmakuScalingfactor", "PlayerDanmakuDomain", "PlayerDanmakuSpeed", "PlayerDanmakuEnableblocklist", "InlinePlayerDanmakuSwitch", "InlinePlayerDanmakuConfig", "PlayerDanmakuIosSwitchSave", "PlayerDanmakuSeniorModeSwitch", });
        internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_descriptor =
                getDescriptor().getMessageTypes().get(9);
        internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmuPlayerDynamicConfig_descriptor,
                new java.lang.String[] { "Progress", "PlayerDanmakuDomain", });
        internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_descriptor =
                getDescriptor().getMessageTypes().get(10);
        internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmuPlayerViewConfig_descriptor,
                new java.lang.String[] { "DanmukuDefaultPlayerConfig", "DanmukuPlayerConfig", "DanmukuPlayerDynamicConfig", });
        internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_descriptor =
                getDescriptor().getMessageTypes().get(11);
        internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DanmuWebPlayerConfig_descriptor,
                new java.lang.String[] { "DmSwitch", "AiSwitch", "AiLevel", "Blocktop", "Blockscroll", "Blockbottom", "Blockcolor", "Blockspecial", "Preventshade", "Dmask", "Opacity", "Dmarea", "Speedplus", "Fontsize", "Screensync", "Speedsync", "Fontfamily", "Bold", "Fontborder", "DrawType", "SeniorModeSwitch", });
        internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_descriptor =
                getDescriptor().getMessageTypes().get(12);
        internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmExpoReportReq_descriptor,
                new java.lang.String[] { "SessionId", "Oid", "Spmid", });
        internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_descriptor =
                getDescriptor().getMessageTypes().get(13);
        internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmExpoReportRes_descriptor,
                new java.lang.String[] { });
        internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_descriptor =
                getDescriptor().getMessageTypes().get(14);
        internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmPlayerConfigReq_descriptor,
                new java.lang.String[] { "Ts", "Switch", "SwitchSave", "UseDefaultConfig", "AiRecommendedSwitch", "AiRecommendedLevel", "Blocktop", "Blockscroll", "Blockbottom", "Blockcolorful", "Blockrepeat", "Blockspecial", "Opacity", "Scalingfactor", "Domain", "Speed", "Enableblocklist", "InlinePlayerDanmakuSwitch", "SeniorModeSwitch", });
        internal_static_com_yutou_qqbot_bilibili_DmSegConfig_descriptor =
                getDescriptor().getMessageTypes().get(15);
        internal_static_com_yutou_qqbot_bilibili_DmSegConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmSegConfig_descriptor,
                new java.lang.String[] { "PageSize", "Total", });
        internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_descriptor =
                getDescriptor().getMessageTypes().get(16);
        internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmSegMobileReply_descriptor,
                new java.lang.String[] { "Elems", "State", "AiFlag", });
        internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_descriptor =
                getDescriptor().getMessageTypes().get(17);
        internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmSegMobileReq_descriptor,
                new java.lang.String[] { "Pid", "Oid", "Type", "SegmentIndex", "TeenagersMode", });
        internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_descriptor =
                getDescriptor().getMessageTypes().get(18);
        internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmSegOttReply_descriptor,
                new java.lang.String[] { "Closed", "Elems", });
        internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_descriptor =
                getDescriptor().getMessageTypes().get(19);
        internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmSegOttReq_descriptor,
                new java.lang.String[] { "Pid", "Oid", "Type", "SegmentIndex", });
        internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_descriptor =
                getDescriptor().getMessageTypes().get(20);
        internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmSegSDKReply_descriptor,
                new java.lang.String[] { "Closed", "Elems", });
        internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_descriptor =
                getDescriptor().getMessageTypes().get(21);
        internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmSegSDKReq_descriptor,
                new java.lang.String[] { "Pid", "Oid", "Type", "SegmentIndex", });
        internal_static_com_yutou_qqbot_bilibili_DmViewReply_descriptor =
                getDescriptor().getMessageTypes().get(22);
        internal_static_com_yutou_qqbot_bilibili_DmViewReply_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmViewReply_descriptor,
                new java.lang.String[] { "Closed", "Mask", "Subtitle", "SpecialDms", "AiFlag", "PlayerConfig", "SendBoxStyle", "Allow", "CheckBox", "CheckBoxShowMsg", "TextPlaceholder", "InputPlaceholder", "ReportFilterContent", "ExpoReport", "BuzzwordConfig", "Expressions", });
        internal_static_com_yutou_qqbot_bilibili_DmViewReq_descriptor =
                getDescriptor().getMessageTypes().get(23);
        internal_static_com_yutou_qqbot_bilibili_DmViewReq_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmViewReq_descriptor,
                new java.lang.String[] { "Pid", "Oid", "Type", "Spmid", "IsHardBoot", });
        internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_descriptor =
                getDescriptor().getMessageTypes().get(24);
        internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_DmWebViewReply_descriptor,
                new java.lang.String[] { "State", "Text", "TextSide", "DmSge", "Flag", "SpecialDms", "CheckBox", "Count", "CommandDms", "PlayerConfig", "ReportFilterContent", "Expressions", });
        internal_static_com_yutou_qqbot_bilibili_ExpoReport_descriptor =
                getDescriptor().getMessageTypes().get(25);
        internal_static_com_yutou_qqbot_bilibili_ExpoReport_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_ExpoReport_descriptor,
                new java.lang.String[] { "ShouldReportAtEnd", });
        internal_static_com_yutou_qqbot_bilibili_Expression_descriptor =
                getDescriptor().getMessageTypes().get(26);
        internal_static_com_yutou_qqbot_bilibili_Expression_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_Expression_descriptor,
                new java.lang.String[] { "Keyword", "Url", "Period", });
        internal_static_com_yutou_qqbot_bilibili_Expressions_descriptor =
                getDescriptor().getMessageTypes().get(27);
        internal_static_com_yutou_qqbot_bilibili_Expressions_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_Expressions_descriptor,
                new java.lang.String[] { "Data", });
        internal_static_com_yutou_qqbot_bilibili_Period_descriptor =
                getDescriptor().getMessageTypes().get(28);
        internal_static_com_yutou_qqbot_bilibili_Period_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_Period_descriptor,
                new java.lang.String[] { "Start", "End", });
        internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_descriptor =
                getDescriptor().getMessageTypes().get(29);
        internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_InlinePlayerDanmakuSwitch_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_descriptor =
                getDescriptor().getMessageTypes().get(30);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedLevel_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_descriptor =
                getDescriptor().getMessageTypes().get(31);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuAiRecommendedSwitch_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_descriptor =
                getDescriptor().getMessageTypes().get(32);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockbottom_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_descriptor =
                getDescriptor().getMessageTypes().get(33);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockcolorful_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_descriptor =
                getDescriptor().getMessageTypes().get(34);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockrepeat_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_descriptor =
                getDescriptor().getMessageTypes().get(35);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockscroll_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_descriptor =
                getDescriptor().getMessageTypes().get(36);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlockspecial_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_descriptor =
                getDescriptor().getMessageTypes().get(37);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuBlocktop_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_descriptor =
                getDescriptor().getMessageTypes().get(38);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuDomain_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_descriptor =
                getDescriptor().getMessageTypes().get(39);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuEnableblocklist_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_descriptor =
                getDescriptor().getMessageTypes().get(40);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuOpacity_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_descriptor =
                getDescriptor().getMessageTypes().get(41);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuScalingfactor_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_descriptor =
                getDescriptor().getMessageTypes().get(42);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSeniorModeSwitch_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_descriptor =
                getDescriptor().getMessageTypes().get(43);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSpeed_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_descriptor =
                getDescriptor().getMessageTypes().get(44);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitch_descriptor,
                new java.lang.String[] { "Value", "CanIgnore", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_descriptor =
                getDescriptor().getMessageTypes().get(45);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuSwitchSave_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_descriptor =
                getDescriptor().getMessageTypes().get(46);
        internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_PlayerDanmakuUseDefaultConfig_descriptor,
                new java.lang.String[] { "Value", });
        internal_static_com_yutou_qqbot_bilibili_Response_descriptor =
                getDescriptor().getMessageTypes().get(47);
        internal_static_com_yutou_qqbot_bilibili_Response_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_Response_descriptor,
                new java.lang.String[] { "Code", "Message", });
        internal_static_com_yutou_qqbot_bilibili_SubtitleItem_descriptor =
                getDescriptor().getMessageTypes().get(48);
        internal_static_com_yutou_qqbot_bilibili_SubtitleItem_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_SubtitleItem_descriptor,
                new java.lang.String[] { "Id", "IdStr", "Lan", "LanDoc", "SubtitleUrl", "Author", "Type", });
        internal_static_com_yutou_qqbot_bilibili_UserInfo_descriptor =
                getDescriptor().getMessageTypes().get(49);
        internal_static_com_yutou_qqbot_bilibili_UserInfo_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_UserInfo_descriptor,
                new java.lang.String[] { "Mid", "Name", "Sex", "Face", "Sign", "Rank", });
        internal_static_com_yutou_qqbot_bilibili_VideoMask_descriptor =
                getDescriptor().getMessageTypes().get(50);
        internal_static_com_yutou_qqbot_bilibili_VideoMask_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_VideoMask_descriptor,
                new java.lang.String[] { "Cid", "Plat", "Fps", "Time", "MaskUrl", });
        internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_descriptor =
                getDescriptor().getMessageTypes().get(51);
        internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_com_yutou_qqbot_bilibili_VideoSubtitle_descriptor,
                new java.lang.String[] { "Lan", "LanDoc", "Subtitles", });
    }

    // @@protoc_insertion_point(outer_class_scope)
}
