// This file is generated by rust-protobuf 3.7.2. Do not edit
// .proto file is parsed by pure
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]

#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_results)]
#![allow(unused_mut)]

//! Generated file from `social_connect_v2.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_2;

// @@protoc_insertion_point(message:socialconnect.Session)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct Session {
    // message fields
    // @@protoc_insertion_point(field:socialconnect.Session.timestamp)
    pub timestamp: i64,
    // @@protoc_insertion_point(field:socialconnect.Session.session_id)
    pub session_id: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.Session.join_session_token)
    pub join_session_token: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.Session.join_session_url)
    pub join_session_url: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.Session.session_owner_id)
    pub session_owner_id: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.Session.session_members)
    pub session_members: ::std::vec::Vec<SessionMember>,
    // @@protoc_insertion_point(field:socialconnect.Session.join_session_uri)
    pub join_session_uri: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.Session.is_session_owner)
    pub is_session_owner: bool,
    // @@protoc_insertion_point(field:socialconnect.Session.is_listening)
    pub is_listening: bool,
    // @@protoc_insertion_point(field:socialconnect.Session.is_controlling)
    pub is_controlling: bool,
    // @@protoc_insertion_point(field:socialconnect.Session.is_discoverable)
    pub is_discoverable: bool,
    // @@protoc_insertion_point(field:socialconnect.Session.initial_session_type)
    pub initial_session_type: ::protobuf::EnumOrUnknown<SessionType>,
    // @@protoc_insertion_point(field:socialconnect.Session.host_active_device_id)
    pub host_active_device_id: ::std::option::Option<::std::string::String>,
    // special fields
    // @@protoc_insertion_point(special_field:socialconnect.Session.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a Session {
    fn default() -> &'a Session {
        <Session as ::protobuf::Message>::default_instance()
    }
}

impl Session {
    pub fn new() -> Session {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(13);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "timestamp",
            |m: &Session| { &m.timestamp },
            |m: &mut Session| { &mut m.timestamp },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "session_id",
            |m: &Session| { &m.session_id },
            |m: &mut Session| { &mut m.session_id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "join_session_token",
            |m: &Session| { &m.join_session_token },
            |m: &mut Session| { &mut m.join_session_token },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "join_session_url",
            |m: &Session| { &m.join_session_url },
            |m: &mut Session| { &mut m.join_session_url },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "session_owner_id",
            |m: &Session| { &m.session_owner_id },
            |m: &mut Session| { &mut m.session_owner_id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "session_members",
            |m: &Session| { &m.session_members },
            |m: &mut Session| { &mut m.session_members },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "join_session_uri",
            |m: &Session| { &m.join_session_uri },
            |m: &mut Session| { &mut m.join_session_uri },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "is_session_owner",
            |m: &Session| { &m.is_session_owner },
            |m: &mut Session| { &mut m.is_session_owner },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "is_listening",
            |m: &Session| { &m.is_listening },
            |m: &mut Session| { &mut m.is_listening },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "is_controlling",
            |m: &Session| { &m.is_controlling },
            |m: &mut Session| { &mut m.is_controlling },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "is_discoverable",
            |m: &Session| { &m.is_discoverable },
            |m: &mut Session| { &mut m.is_discoverable },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "initial_session_type",
            |m: &Session| { &m.initial_session_type },
            |m: &mut Session| { &mut m.initial_session_type },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "host_active_device_id",
            |m: &Session| { &m.host_active_device_id },
            |m: &mut Session| { &mut m.host_active_device_id },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Session>(
            "Session",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for Session {
    const NAME: &'static str = "Session";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                8 => {
                    self.timestamp = is.read_int64()?;
                },
                18 => {
                    self.session_id = is.read_string()?;
                },
                26 => {
                    self.join_session_token = is.read_string()?;
                },
                34 => {
                    self.join_session_url = is.read_string()?;
                },
                42 => {
                    self.session_owner_id = is.read_string()?;
                },
                50 => {
                    self.session_members.push(is.read_message()?);
                },
                58 => {
                    self.join_session_uri = is.read_string()?;
                },
                72 => {
                    self.is_session_owner = is.read_bool()?;
                },
                80 => {
                    self.is_listening = is.read_bool()?;
                },
                88 => {
                    self.is_controlling = is.read_bool()?;
                },
                96 => {
                    self.is_discoverable = is.read_bool()?;
                },
                104 => {
                    self.initial_session_type = is.read_enum_or_unknown()?;
                },
                114 => {
                    self.host_active_device_id = ::std::option::Option::Some(is.read_string()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if self.timestamp != 0 {
            my_size += ::protobuf::rt::int64_size(1, self.timestamp);
        }
        if !self.session_id.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.session_id);
        }
        if !self.join_session_token.is_empty() {
            my_size += ::protobuf::rt::string_size(3, &self.join_session_token);
        }
        if !self.join_session_url.is_empty() {
            my_size += ::protobuf::rt::string_size(4, &self.join_session_url);
        }
        if !self.session_owner_id.is_empty() {
            my_size += ::protobuf::rt::string_size(5, &self.session_owner_id);
        }
        for value in &self.session_members {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        if !self.join_session_uri.is_empty() {
            my_size += ::protobuf::rt::string_size(7, &self.join_session_uri);
        }
        if self.is_session_owner != false {
            my_size += 1 + 1;
        }
        if self.is_listening != false {
            my_size += 1 + 1;
        }
        if self.is_controlling != false {
            my_size += 1 + 1;
        }
        if self.is_discoverable != false {
            my_size += 1 + 1;
        }
        if self.initial_session_type != ::protobuf::EnumOrUnknown::new(SessionType::UNKNOWN_SESSION_TYPE) {
            my_size += ::protobuf::rt::int32_size(13, self.initial_session_type.value());
        }
        if let Some(v) = self.host_active_device_id.as_ref() {
            my_size += ::protobuf::rt::string_size(14, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if self.timestamp != 0 {
            os.write_int64(1, self.timestamp)?;
        }
        if !self.session_id.is_empty() {
            os.write_string(2, &self.session_id)?;
        }
        if !self.join_session_token.is_empty() {
            os.write_string(3, &self.join_session_token)?;
        }
        if !self.join_session_url.is_empty() {
            os.write_string(4, &self.join_session_url)?;
        }
        if !self.session_owner_id.is_empty() {
            os.write_string(5, &self.session_owner_id)?;
        }
        for v in &self.session_members {
            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
        };
        if !self.join_session_uri.is_empty() {
            os.write_string(7, &self.join_session_uri)?;
        }
        if self.is_session_owner != false {
            os.write_bool(9, self.is_session_owner)?;
        }
        if self.is_listening != false {
            os.write_bool(10, self.is_listening)?;
        }
        if self.is_controlling != false {
            os.write_bool(11, self.is_controlling)?;
        }
        if self.is_discoverable != false {
            os.write_bool(12, self.is_discoverable)?;
        }
        if self.initial_session_type != ::protobuf::EnumOrUnknown::new(SessionType::UNKNOWN_SESSION_TYPE) {
            os.write_enum(13, ::protobuf::EnumOrUnknown::value(&self.initial_session_type))?;
        }
        if let Some(v) = self.host_active_device_id.as_ref() {
            os.write_string(14, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> Session {
        Session::new()
    }

    fn clear(&mut self) {
        self.timestamp = 0;
        self.session_id.clear();
        self.join_session_token.clear();
        self.join_session_url.clear();
        self.session_owner_id.clear();
        self.session_members.clear();
        self.join_session_uri.clear();
        self.is_session_owner = false;
        self.is_listening = false;
        self.is_controlling = false;
        self.is_discoverable = false;
        self.initial_session_type = ::protobuf::EnumOrUnknown::new(SessionType::UNKNOWN_SESSION_TYPE);
        self.host_active_device_id = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static Session {
        static instance: Session = Session {
            timestamp: 0,
            session_id: ::std::string::String::new(),
            join_session_token: ::std::string::String::new(),
            join_session_url: ::std::string::String::new(),
            session_owner_id: ::std::string::String::new(),
            session_members: ::std::vec::Vec::new(),
            join_session_uri: ::std::string::String::new(),
            is_session_owner: false,
            is_listening: false,
            is_controlling: false,
            is_discoverable: false,
            initial_session_type: ::protobuf::EnumOrUnknown::from_i32(0),
            host_active_device_id: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for Session {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("Session").unwrap()).clone()
    }
}

impl ::std::fmt::Display for Session {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for Session {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:socialconnect.SessionMember)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct SessionMember {
    // message fields
    // @@protoc_insertion_point(field:socialconnect.SessionMember.timestamp)
    pub timestamp: i64,
    // @@protoc_insertion_point(field:socialconnect.SessionMember.id)
    pub id: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.SessionMember.username)
    pub username: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.SessionMember.display_name)
    pub display_name: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.SessionMember.image_url)
    pub image_url: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.SessionMember.large_image_url)
    pub large_image_url: ::std::string::String,
    // @@protoc_insertion_point(field:socialconnect.SessionMember.is_listening)
    pub is_listening: bool,
    // @@protoc_insertion_point(field:socialconnect.SessionMember.is_controlling)
    pub is_controlling: bool,
    // special fields
    // @@protoc_insertion_point(special_field:socialconnect.SessionMember.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a SessionMember {
    fn default() -> &'a SessionMember {
        <SessionMember as ::protobuf::Message>::default_instance()
    }
}

impl SessionMember {
    pub fn new() -> SessionMember {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(8);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "timestamp",
            |m: &SessionMember| { &m.timestamp },
            |m: &mut SessionMember| { &mut m.timestamp },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "id",
            |m: &SessionMember| { &m.id },
            |m: &mut SessionMember| { &mut m.id },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "username",
            |m: &SessionMember| { &m.username },
            |m: &mut SessionMember| { &mut m.username },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "display_name",
            |m: &SessionMember| { &m.display_name },
            |m: &mut SessionMember| { &mut m.display_name },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "image_url",
            |m: &SessionMember| { &m.image_url },
            |m: &mut SessionMember| { &mut m.image_url },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "large_image_url",
            |m: &SessionMember| { &m.large_image_url },
            |m: &mut SessionMember| { &mut m.large_image_url },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "is_listening",
            |m: &SessionMember| { &m.is_listening },
            |m: &mut SessionMember| { &mut m.is_listening },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "is_controlling",
            |m: &SessionMember| { &m.is_controlling },
            |m: &mut SessionMember| { &mut m.is_controlling },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SessionMember>(
            "SessionMember",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for SessionMember {
    const NAME: &'static str = "SessionMember";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                8 => {
                    self.timestamp = is.read_int64()?;
                },
                18 => {
                    self.id = is.read_string()?;
                },
                26 => {
                    self.username = is.read_string()?;
                },
                34 => {
                    self.display_name = is.read_string()?;
                },
                42 => {
                    self.image_url = is.read_string()?;
                },
                50 => {
                    self.large_image_url = is.read_string()?;
                },
                56 => {
                    self.is_listening = is.read_bool()?;
                },
                64 => {
                    self.is_controlling = is.read_bool()?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if self.timestamp != 0 {
            my_size += ::protobuf::rt::int64_size(1, self.timestamp);
        }
        if !self.id.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.id);
        }
        if !self.username.is_empty() {
            my_size += ::protobuf::rt::string_size(3, &self.username);
        }
        if !self.display_name.is_empty() {
            my_size += ::protobuf::rt::string_size(4, &self.display_name);
        }
        if !self.image_url.is_empty() {
            my_size += ::protobuf::rt::string_size(5, &self.image_url);
        }
        if !self.large_image_url.is_empty() {
            my_size += ::protobuf::rt::string_size(6, &self.large_image_url);
        }
        if self.is_listening != false {
            my_size += 1 + 1;
        }
        if self.is_controlling != false {
            my_size += 1 + 1;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if self.timestamp != 0 {
            os.write_int64(1, self.timestamp)?;
        }
        if !self.id.is_empty() {
            os.write_string(2, &self.id)?;
        }
        if !self.username.is_empty() {
            os.write_string(3, &self.username)?;
        }
        if !self.display_name.is_empty() {
            os.write_string(4, &self.display_name)?;
        }
        if !self.image_url.is_empty() {
            os.write_string(5, &self.image_url)?;
        }
        if !self.large_image_url.is_empty() {
            os.write_string(6, &self.large_image_url)?;
        }
        if self.is_listening != false {
            os.write_bool(7, self.is_listening)?;
        }
        if self.is_controlling != false {
            os.write_bool(8, self.is_controlling)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> SessionMember {
        SessionMember::new()
    }

    fn clear(&mut self) {
        self.timestamp = 0;
        self.id.clear();
        self.username.clear();
        self.display_name.clear();
        self.image_url.clear();
        self.large_image_url.clear();
        self.is_listening = false;
        self.is_controlling = false;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static SessionMember {
        static instance: SessionMember = SessionMember {
            timestamp: 0,
            id: ::std::string::String::new(),
            username: ::std::string::String::new(),
            display_name: ::std::string::String::new(),
            image_url: ::std::string::String::new(),
            large_image_url: ::std::string::String::new(),
            is_listening: false,
            is_controlling: false,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for SessionMember {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("SessionMember").unwrap()).clone()
    }
}

impl ::std::fmt::Display for SessionMember {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for SessionMember {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:socialconnect.SessionUpdate)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct SessionUpdate {
    // message fields
    // @@protoc_insertion_point(field:socialconnect.SessionUpdate.session)
    pub session: ::protobuf::MessageField<Session>,
    // @@protoc_insertion_point(field:socialconnect.SessionUpdate.reason)
    pub reason: ::protobuf::EnumOrUnknown<SessionUpdateReason>,
    // @@protoc_insertion_point(field:socialconnect.SessionUpdate.updated_session_members)
    pub updated_session_members: ::std::vec::Vec<SessionMember>,
    // special fields
    // @@protoc_insertion_point(special_field:socialconnect.SessionUpdate.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a SessionUpdate {
    fn default() -> &'a SessionUpdate {
        <SessionUpdate as ::protobuf::Message>::default_instance()
    }
}

impl SessionUpdate {
    pub fn new() -> SessionUpdate {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(3);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Session>(
            "session",
            |m: &SessionUpdate| { &m.session },
            |m: &mut SessionUpdate| { &mut m.session },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "reason",
            |m: &SessionUpdate| { &m.reason },
            |m: &mut SessionUpdate| { &mut m.reason },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
            "updated_session_members",
            |m: &SessionUpdate| { &m.updated_session_members },
            |m: &mut SessionUpdate| { &mut m.updated_session_members },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SessionUpdate>(
            "SessionUpdate",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for SessionUpdate {
    const NAME: &'static str = "SessionUpdate";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.session)?;
                },
                16 => {
                    self.reason = is.read_enum_or_unknown()?;
                },
                26 => {
                    self.updated_session_members.push(is.read_message()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.session.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        if self.reason != ::protobuf::EnumOrUnknown::new(SessionUpdateReason::UNKNOWN_UPDATE_TYPE) {
            my_size += ::protobuf::rt::int32_size(2, self.reason.value());
        }
        for value in &self.updated_session_members {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.session.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
        }
        if self.reason != ::protobuf::EnumOrUnknown::new(SessionUpdateReason::UNKNOWN_UPDATE_TYPE) {
            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&self.reason))?;
        }
        for v in &self.updated_session_members {
            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
        };
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> SessionUpdate {
        SessionUpdate::new()
    }

    fn clear(&mut self) {
        self.session.clear();
        self.reason = ::protobuf::EnumOrUnknown::new(SessionUpdateReason::UNKNOWN_UPDATE_TYPE);
        self.updated_session_members.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static SessionUpdate {
        static instance: SessionUpdate = SessionUpdate {
            session: ::protobuf::MessageField::none(),
            reason: ::protobuf::EnumOrUnknown::from_i32(0),
            updated_session_members: ::std::vec::Vec::new(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for SessionUpdate {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("SessionUpdate").unwrap()).clone()
    }
}

impl ::std::fmt::Display for SessionUpdate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for SessionUpdate {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

// @@protoc_insertion_point(message:socialconnect.DevicesExposure)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct DevicesExposure {
    // message fields
    // @@protoc_insertion_point(field:socialconnect.DevicesExposure.timestamp)
    pub timestamp: i64,
    // @@protoc_insertion_point(field:socialconnect.DevicesExposure.devices_exposure)
    pub devices_exposure: ::std::collections::HashMap<::std::string::String, ::protobuf::EnumOrUnknown<DeviceExposureStatus>>,
    // special fields
    // @@protoc_insertion_point(special_field:socialconnect.DevicesExposure.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a DevicesExposure {
    fn default() -> &'a DevicesExposure {
        <DevicesExposure as ::protobuf::Message>::default_instance()
    }
}

impl DevicesExposure {
    pub fn new() -> DevicesExposure {
        ::std::default::Default::default()
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(2);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
            "timestamp",
            |m: &DevicesExposure| { &m.timestamp },
            |m: &mut DevicesExposure| { &mut m.timestamp },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_map_simpler_accessor_new::<_, _>(
            "devices_exposure",
            |m: &DevicesExposure| { &m.devices_exposure },
            |m: &mut DevicesExposure| { &mut m.devices_exposure },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<DevicesExposure>(
            "DevicesExposure",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for DevicesExposure {
    const NAME: &'static str = "DevicesExposure";

    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                8 => {
                    self.timestamp = is.read_int64()?;
                },
                18 => {
                    let len = is.read_raw_varint32()?;
                    let old_limit = is.push_limit(len as u64)?;
                    let mut key = ::std::default::Default::default();
                    let mut value = ::std::default::Default::default();
                    while let Some(tag) = is.read_raw_tag_or_eof()? {
                        match tag {
                            10 => key = is.read_string()?,
                            16 => value = is.read_enum_or_unknown()?,
                            _ => ::protobuf::rt::skip_field_for_tag(tag, is)?,
                        };
                    }
                    is.pop_limit(old_limit);
                    self.devices_exposure.insert(key, value);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if self.timestamp != 0 {
            my_size += ::protobuf::rt::int64_size(1, self.timestamp);
        }
        for (k, v) in &self.devices_exposure {
            let mut entry_size = 0;
            entry_size += ::protobuf::rt::string_size(1, &k);
            entry_size += ::protobuf::rt::int32_size(2, v.value());
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(entry_size) + entry_size
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if self.timestamp != 0 {
            os.write_int64(1, self.timestamp)?;
        }
        for (k, v) in &self.devices_exposure {
            let mut entry_size = 0;
            entry_size += ::protobuf::rt::string_size(1, &k);
            entry_size += ::protobuf::rt::int32_size(2, v.value());
            os.write_raw_varint32(18)?; // Tag.
            os.write_raw_varint32(entry_size as u32)?;
            os.write_string(1, &k)?;
            os.write_enum(2, ::protobuf::EnumOrUnknown::value(v))?;
        };
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> DevicesExposure {
        DevicesExposure::new()
    }

    fn clear(&mut self) {
        self.timestamp = 0;
        self.devices_exposure.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static DevicesExposure {
        static instance: ::protobuf::rt::Lazy<DevicesExposure> = ::protobuf::rt::Lazy::new();
        instance.get(DevicesExposure::new)
    }
}

impl ::protobuf::MessageFull for DevicesExposure {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("DevicesExposure").unwrap()).clone()
    }
}

impl ::std::fmt::Display for DevicesExposure {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for DevicesExposure {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:socialconnect.SessionType)
pub enum SessionType {
    // @@protoc_insertion_point(enum_value:socialconnect.SessionType.UNKNOWN_SESSION_TYPE)
    UNKNOWN_SESSION_TYPE = 0,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionType.IN_PERSON)
    IN_PERSON = 3,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionType.REMOTE)
    REMOTE = 4,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionType.REMOTE_V2)
    REMOTE_V2 = 5,
}

impl ::protobuf::Enum for SessionType {
    const NAME: &'static str = "SessionType";

    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<SessionType> {
        match value {
            0 => ::std::option::Option::Some(SessionType::UNKNOWN_SESSION_TYPE),
            3 => ::std::option::Option::Some(SessionType::IN_PERSON),
            4 => ::std::option::Option::Some(SessionType::REMOTE),
            5 => ::std::option::Option::Some(SessionType::REMOTE_V2),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<SessionType> {
        match str {
            "UNKNOWN_SESSION_TYPE" => ::std::option::Option::Some(SessionType::UNKNOWN_SESSION_TYPE),
            "IN_PERSON" => ::std::option::Option::Some(SessionType::IN_PERSON),
            "REMOTE" => ::std::option::Option::Some(SessionType::REMOTE),
            "REMOTE_V2" => ::std::option::Option::Some(SessionType::REMOTE_V2),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [SessionType] = &[
        SessionType::UNKNOWN_SESSION_TYPE,
        SessionType::IN_PERSON,
        SessionType::REMOTE,
        SessionType::REMOTE_V2,
    ];
}

impl ::protobuf::EnumFull for SessionType {
    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().enum_by_package_relative_name("SessionType").unwrap()).clone()
    }

    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
        let index = match self {
            SessionType::UNKNOWN_SESSION_TYPE => 0,
            SessionType::IN_PERSON => 1,
            SessionType::REMOTE => 2,
            SessionType::REMOTE_V2 => 3,
        };
        Self::enum_descriptor().value_by_index(index)
    }
}

impl ::std::default::Default for SessionType {
    fn default() -> Self {
        SessionType::UNKNOWN_SESSION_TYPE
    }
}

impl SessionType {
    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<SessionType>("SessionType")
    }
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:socialconnect.SessionUpdateReason)
pub enum SessionUpdateReason {
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.UNKNOWN_UPDATE_TYPE)
    UNKNOWN_UPDATE_TYPE = 0,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.NEW_SESSION)
    NEW_SESSION = 1,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.USER_JOINED)
    USER_JOINED = 2,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.USER_LEFT)
    USER_LEFT = 3,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.SESSION_DELETED)
    SESSION_DELETED = 4,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.YOU_LEFT)
    YOU_LEFT = 5,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.YOU_WERE_KICKED)
    YOU_WERE_KICKED = 6,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.YOU_JOINED)
    YOU_JOINED = 7,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.PARTICIPANT_PROMOTED_TO_HOST)
    PARTICIPANT_PROMOTED_TO_HOST = 8,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.DISCOVERABILITY_CHANGED)
    DISCOVERABILITY_CHANGED = 9,
    // @@protoc_insertion_point(enum_value:socialconnect.SessionUpdateReason.USER_KICKED)
    USER_KICKED = 10,
}

impl ::protobuf::Enum for SessionUpdateReason {
    const NAME: &'static str = "SessionUpdateReason";

    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<SessionUpdateReason> {
        match value {
            0 => ::std::option::Option::Some(SessionUpdateReason::UNKNOWN_UPDATE_TYPE),
            1 => ::std::option::Option::Some(SessionUpdateReason::NEW_SESSION),
            2 => ::std::option::Option::Some(SessionUpdateReason::USER_JOINED),
            3 => ::std::option::Option::Some(SessionUpdateReason::USER_LEFT),
            4 => ::std::option::Option::Some(SessionUpdateReason::SESSION_DELETED),
            5 => ::std::option::Option::Some(SessionUpdateReason::YOU_LEFT),
            6 => ::std::option::Option::Some(SessionUpdateReason::YOU_WERE_KICKED),
            7 => ::std::option::Option::Some(SessionUpdateReason::YOU_JOINED),
            8 => ::std::option::Option::Some(SessionUpdateReason::PARTICIPANT_PROMOTED_TO_HOST),
            9 => ::std::option::Option::Some(SessionUpdateReason::DISCOVERABILITY_CHANGED),
            10 => ::std::option::Option::Some(SessionUpdateReason::USER_KICKED),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<SessionUpdateReason> {
        match str {
            "UNKNOWN_UPDATE_TYPE" => ::std::option::Option::Some(SessionUpdateReason::UNKNOWN_UPDATE_TYPE),
            "NEW_SESSION" => ::std::option::Option::Some(SessionUpdateReason::NEW_SESSION),
            "USER_JOINED" => ::std::option::Option::Some(SessionUpdateReason::USER_JOINED),
            "USER_LEFT" => ::std::option::Option::Some(SessionUpdateReason::USER_LEFT),
            "SESSION_DELETED" => ::std::option::Option::Some(SessionUpdateReason::SESSION_DELETED),
            "YOU_LEFT" => ::std::option::Option::Some(SessionUpdateReason::YOU_LEFT),
            "YOU_WERE_KICKED" => ::std::option::Option::Some(SessionUpdateReason::YOU_WERE_KICKED),
            "YOU_JOINED" => ::std::option::Option::Some(SessionUpdateReason::YOU_JOINED),
            "PARTICIPANT_PROMOTED_TO_HOST" => ::std::option::Option::Some(SessionUpdateReason::PARTICIPANT_PROMOTED_TO_HOST),
            "DISCOVERABILITY_CHANGED" => ::std::option::Option::Some(SessionUpdateReason::DISCOVERABILITY_CHANGED),
            "USER_KICKED" => ::std::option::Option::Some(SessionUpdateReason::USER_KICKED),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [SessionUpdateReason] = &[
        SessionUpdateReason::UNKNOWN_UPDATE_TYPE,
        SessionUpdateReason::NEW_SESSION,
        SessionUpdateReason::USER_JOINED,
        SessionUpdateReason::USER_LEFT,
        SessionUpdateReason::SESSION_DELETED,
        SessionUpdateReason::YOU_LEFT,
        SessionUpdateReason::YOU_WERE_KICKED,
        SessionUpdateReason::YOU_JOINED,
        SessionUpdateReason::PARTICIPANT_PROMOTED_TO_HOST,
        SessionUpdateReason::DISCOVERABILITY_CHANGED,
        SessionUpdateReason::USER_KICKED,
    ];
}

impl ::protobuf::EnumFull for SessionUpdateReason {
    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().enum_by_package_relative_name("SessionUpdateReason").unwrap()).clone()
    }

    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
        let index = *self as usize;
        Self::enum_descriptor().value_by_index(index)
    }
}

impl ::std::default::Default for SessionUpdateReason {
    fn default() -> Self {
        SessionUpdateReason::UNKNOWN_UPDATE_TYPE
    }
}

impl SessionUpdateReason {
    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<SessionUpdateReason>("SessionUpdateReason")
    }
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:socialconnect.DeviceExposureStatus)
pub enum DeviceExposureStatus {
    // @@protoc_insertion_point(enum_value:socialconnect.DeviceExposureStatus.NOT_EXPOSABLE)
    NOT_EXPOSABLE = 0,
    // @@protoc_insertion_point(enum_value:socialconnect.DeviceExposureStatus.NOT_EXPOSED)
    NOT_EXPOSED = 1,
    // @@protoc_insertion_point(enum_value:socialconnect.DeviceExposureStatus.EXPOSED)
    EXPOSED = 2,
}

impl ::protobuf::Enum for DeviceExposureStatus {
    const NAME: &'static str = "DeviceExposureStatus";

    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<DeviceExposureStatus> {
        match value {
            0 => ::std::option::Option::Some(DeviceExposureStatus::NOT_EXPOSABLE),
            1 => ::std::option::Option::Some(DeviceExposureStatus::NOT_EXPOSED),
            2 => ::std::option::Option::Some(DeviceExposureStatus::EXPOSED),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<DeviceExposureStatus> {
        match str {
            "NOT_EXPOSABLE" => ::std::option::Option::Some(DeviceExposureStatus::NOT_EXPOSABLE),
            "NOT_EXPOSED" => ::std::option::Option::Some(DeviceExposureStatus::NOT_EXPOSED),
            "EXPOSED" => ::std::option::Option::Some(DeviceExposureStatus::EXPOSED),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [DeviceExposureStatus] = &[
        DeviceExposureStatus::NOT_EXPOSABLE,
        DeviceExposureStatus::NOT_EXPOSED,
        DeviceExposureStatus::EXPOSED,
    ];
}

impl ::protobuf::EnumFull for DeviceExposureStatus {
    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().enum_by_package_relative_name("DeviceExposureStatus").unwrap()).clone()
    }

    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
        let index = *self as usize;
        Self::enum_descriptor().value_by_index(index)
    }
}

impl ::std::default::Default for DeviceExposureStatus {
    fn default() -> Self {
        DeviceExposureStatus::NOT_EXPOSABLE
    }
}

impl DeviceExposureStatus {
    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<DeviceExposureStatus>("DeviceExposureStatus")
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x17social_connect_v2.proto\x12\rsocialconnect\"\xfc\x04\n\x07Session\
    \x12\x1c\n\ttimestamp\x18\x01\x20\x01(\x03R\ttimestamp\x12\x1d\n\nsessio\
    n_id\x18\x02\x20\x01(\tR\tsessionId\x12,\n\x12join_session_token\x18\x03\
    \x20\x01(\tR\x10joinSessionToken\x12(\n\x10join_session_url\x18\x04\x20\
    \x01(\tR\x0ejoinSessionUrl\x12(\n\x10session_owner_id\x18\x05\x20\x01(\t\
    R\x0esessionOwnerId\x12E\n\x0fsession_members\x18\x06\x20\x03(\x0b2\x1c.\
    socialconnect.SessionMemberR\x0esessionMembers\x12(\n\x10join_session_ur\
    i\x18\x07\x20\x01(\tR\x0ejoinSessionUri\x12(\n\x10is_session_owner\x18\t\
    \x20\x01(\x08R\x0eisSessionOwner\x12!\n\x0cis_listening\x18\n\x20\x01(\
    \x08R\x0bisListening\x12%\n\x0eis_controlling\x18\x0b\x20\x01(\x08R\risC\
    ontrolling\x12'\n\x0fis_discoverable\x18\x0c\x20\x01(\x08R\x0eisDiscover\
    able\x12L\n\x14initial_session_type\x18\r\x20\x01(\x0e2\x1a.socialconnec\
    t.SessionTypeR\x12initialSessionType\x126\n\x15host_active_device_id\x18\
    \x0e\x20\x01(\tH\0R\x12hostActiveDeviceId\x88\x01\x01B\x18\n\x16_host_ac\
    tive_device_idJ\x04\x08\x08\x10\t\"\x8b\x02\n\rSessionMember\x12\x1c\n\t\
    timestamp\x18\x01\x20\x01(\x03R\ttimestamp\x12\x0e\n\x02id\x18\x02\x20\
    \x01(\tR\x02id\x12\x1a\n\x08username\x18\x03\x20\x01(\tR\x08username\x12\
    !\n\x0cdisplay_name\x18\x04\x20\x01(\tR\x0bdisplayName\x12\x1b\n\timage_\
    url\x18\x05\x20\x01(\tR\x08imageUrl\x12&\n\x0flarge_image_url\x18\x06\
    \x20\x01(\tR\rlargeImageUrl\x12!\n\x0cis_listening\x18\x07\x20\x01(\x08R\
    \x0bisListening\x12%\n\x0eis_controlling\x18\x08\x20\x01(\x08R\risContro\
    lling\"\xd3\x01\n\rSessionUpdate\x120\n\x07session\x18\x01\x20\x01(\x0b2\
    \x16.socialconnect.SessionR\x07session\x12:\n\x06reason\x18\x02\x20\x01(\
    \x0e2\".socialconnect.SessionUpdateReasonR\x06reason\x12T\n\x17updated_s\
    ession_members\x18\x03\x20\x03(\x0b2\x1c.socialconnect.SessionMemberR\
    \x15updatedSessionMembers\"\xf8\x01\n\x0fDevicesExposure\x12\x1c\n\ttime\
    stamp\x18\x01\x20\x01(\x03R\ttimestamp\x12^\n\x10devices_exposure\x18\
    \x02\x20\x03(\x0b23.socialconnect.DevicesExposure.DevicesExposureEntryR\
    \x0fdevicesExposure\x1ag\n\x14DevicesExposureEntry\x12\x10\n\x03key\x18\
    \x01\x20\x01(\tR\x03key\x129\n\x05value\x18\x02\x20\x01(\x0e2#.socialcon\
    nect.DeviceExposureStatusR\x05value:\x028\x01*Q\n\x0bSessionType\x12\x18\
    \n\x14UNKNOWN_SESSION_TYPE\x10\0\x12\r\n\tIN_PERSON\x10\x03\x12\n\n\x06R\
    EMOTE\x10\x04\x12\r\n\tREMOTE_V2\x10\x05*\xf7\x01\n\x13SessionUpdateReas\
    on\x12\x17\n\x13UNKNOWN_UPDATE_TYPE\x10\0\x12\x0f\n\x0bNEW_SESSION\x10\
    \x01\x12\x0f\n\x0bUSER_JOINED\x10\x02\x12\r\n\tUSER_LEFT\x10\x03\x12\x13\
    \n\x0fSESSION_DELETED\x10\x04\x12\x0c\n\x08YOU_LEFT\x10\x05\x12\x13\n\
    \x0fYOU_WERE_KICKED\x10\x06\x12\x0e\n\nYOU_JOINED\x10\x07\x12\x20\n\x1cP\
    ARTICIPANT_PROMOTED_TO_HOST\x10\x08\x12\x1b\n\x17DISCOVERABILITY_CHANGED\
    \x10\t\x12\x0f\n\x0bUSER_KICKED\x10\n*G\n\x14DeviceExposureStatus\x12\
    \x11\n\rNOT_EXPOSABLE\x10\0\x12\x0f\n\x0bNOT_EXPOSED\x10\x01\x12\x0b\n\
    \x07EXPOSED\x10\x02B\x02H\x02b\x06proto3\
";

/// `FileDescriptorProto` object which was a source for this generated file
fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
    file_descriptor_proto_lazy.get(|| {
        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
    })
}

/// `FileDescriptor` object which allows dynamic access to files
pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
    file_descriptor.get(|| {
        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
            let mut deps = ::std::vec::Vec::with_capacity(0);
            let mut messages = ::std::vec::Vec::with_capacity(4);
            messages.push(Session::generated_message_descriptor_data());
            messages.push(SessionMember::generated_message_descriptor_data());
            messages.push(SessionUpdate::generated_message_descriptor_data());
            messages.push(DevicesExposure::generated_message_descriptor_data());
            let mut enums = ::std::vec::Vec::with_capacity(3);
            enums.push(SessionType::generated_enum_descriptor_data());
            enums.push(SessionUpdateReason::generated_enum_descriptor_data());
            enums.push(DeviceExposureStatus::generated_enum_descriptor_data());
            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
                file_descriptor_proto(),
                deps,
                messages,
                enums,
            )
        });
        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
    })
}
