// This file is generated by rust-protobuf 3.5.1. 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 `steammessages_appoverview.proto`
// Generated for lite runtime

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

// @@protoc_insertion_point(message:CAppOverview_PerClientData)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct CAppOverview_PerClientData {
    // message fields
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.clientid)
    pub clientid: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.client_name)
    pub client_name: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.display_status)
    pub display_status: ::std::option::Option<::steam_vent_proto_common::protobuf::EnumOrUnknown<EDisplayStatus>>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.status_percentage)
    pub status_percentage: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.active_beta)
    pub active_beta: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.installed)
    pub installed: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.streaming_to_local_client)
    pub streaming_to_local_client: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.is_available_on_current_platform)
    pub is_available_on_current_platform: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.is_invalid_os_type)
    pub is_invalid_os_type: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.playtime_left)
    pub playtime_left: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview_PerClientData.update_available_but_disabled_by_app)
    pub update_available_but_disabled_by_app: ::std::option::Option<bool>,
    // special fields
    // @@protoc_insertion_point(special_field:CAppOverview_PerClientData.special_fields)
    pub special_fields: ::steam_vent_proto_common::protobuf::SpecialFields,
}

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

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

    // optional uint64 clientid = 1;

    pub fn clientid(&self) -> u64 {
        self.clientid.unwrap_or(0u64)
    }

    pub fn clear_clientid(&mut self) {
        self.clientid = ::std::option::Option::None;
    }

    pub fn has_clientid(&self) -> bool {
        self.clientid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_clientid(&mut self, v: u64) {
        self.clientid = ::std::option::Option::Some(v);
    }

    // optional string client_name = 2;

    pub fn client_name(&self) -> &str {
        match self.client_name.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_client_name(&mut self) {
        self.client_name = ::std::option::Option::None;
    }

    pub fn has_client_name(&self) -> bool {
        self.client_name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_client_name(&mut self, v: ::std::string::String) {
        self.client_name = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_client_name(&mut self) -> &mut ::std::string::String {
        if self.client_name.is_none() {
            self.client_name = ::std::option::Option::Some(::std::string::String::new());
        }
        self.client_name.as_mut().unwrap()
    }

    // Take field
    pub fn take_client_name(&mut self) -> ::std::string::String {
        self.client_name.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional .EDisplayStatus display_status = 3;

    pub fn display_status(&self) -> EDisplayStatus {
        match self.display_status {
            Some(e) => e.enum_value_or(EDisplayStatus::k_EDisplayStatusInvalid),
            None => EDisplayStatus::k_EDisplayStatusInvalid,
        }
    }

    pub fn clear_display_status(&mut self) {
        self.display_status = ::std::option::Option::None;
    }

    pub fn has_display_status(&self) -> bool {
        self.display_status.is_some()
    }

    // Param is passed by value, moved
    pub fn set_display_status(&mut self, v: EDisplayStatus) {
        self.display_status = ::std::option::Option::Some(::steam_vent_proto_common::protobuf::EnumOrUnknown::new(v));
    }

    // optional uint32 status_percentage = 4;

    pub fn status_percentage(&self) -> u32 {
        self.status_percentage.unwrap_or(0)
    }

    pub fn clear_status_percentage(&mut self) {
        self.status_percentage = ::std::option::Option::None;
    }

    pub fn has_status_percentage(&self) -> bool {
        self.status_percentage.is_some()
    }

    // Param is passed by value, moved
    pub fn set_status_percentage(&mut self, v: u32) {
        self.status_percentage = ::std::option::Option::Some(v);
    }

    // optional string active_beta = 5;

    pub fn active_beta(&self) -> &str {
        match self.active_beta.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_active_beta(&mut self) {
        self.active_beta = ::std::option::Option::None;
    }

    pub fn has_active_beta(&self) -> bool {
        self.active_beta.is_some()
    }

    // Param is passed by value, moved
    pub fn set_active_beta(&mut self, v: ::std::string::String) {
        self.active_beta = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_active_beta(&mut self) -> &mut ::std::string::String {
        if self.active_beta.is_none() {
            self.active_beta = ::std::option::Option::Some(::std::string::String::new());
        }
        self.active_beta.as_mut().unwrap()
    }

    // Take field
    pub fn take_active_beta(&mut self) -> ::std::string::String {
        self.active_beta.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional bool installed = 6;

    pub fn installed(&self) -> bool {
        self.installed.unwrap_or(false)
    }

    pub fn clear_installed(&mut self) {
        self.installed = ::std::option::Option::None;
    }

    pub fn has_installed(&self) -> bool {
        self.installed.is_some()
    }

    // Param is passed by value, moved
    pub fn set_installed(&mut self, v: bool) {
        self.installed = ::std::option::Option::Some(v);
    }

    // optional bool streaming_to_local_client = 9;

    pub fn streaming_to_local_client(&self) -> bool {
        self.streaming_to_local_client.unwrap_or(false)
    }

    pub fn clear_streaming_to_local_client(&mut self) {
        self.streaming_to_local_client = ::std::option::Option::None;
    }

    pub fn has_streaming_to_local_client(&self) -> bool {
        self.streaming_to_local_client.is_some()
    }

    // Param is passed by value, moved
    pub fn set_streaming_to_local_client(&mut self, v: bool) {
        self.streaming_to_local_client = ::std::option::Option::Some(v);
    }

    // optional bool is_available_on_current_platform = 10;

    pub fn is_available_on_current_platform(&self) -> bool {
        self.is_available_on_current_platform.unwrap_or(false)
    }

    pub fn clear_is_available_on_current_platform(&mut self) {
        self.is_available_on_current_platform = ::std::option::Option::None;
    }

    pub fn has_is_available_on_current_platform(&self) -> bool {
        self.is_available_on_current_platform.is_some()
    }

    // Param is passed by value, moved
    pub fn set_is_available_on_current_platform(&mut self, v: bool) {
        self.is_available_on_current_platform = ::std::option::Option::Some(v);
    }

    // optional bool is_invalid_os_type = 11;

    pub fn is_invalid_os_type(&self) -> bool {
        self.is_invalid_os_type.unwrap_or(false)
    }

    pub fn clear_is_invalid_os_type(&mut self) {
        self.is_invalid_os_type = ::std::option::Option::None;
    }

    pub fn has_is_invalid_os_type(&self) -> bool {
        self.is_invalid_os_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_is_invalid_os_type(&mut self, v: bool) {
        self.is_invalid_os_type = ::std::option::Option::Some(v);
    }

    // optional uint32 playtime_left = 12;

    pub fn playtime_left(&self) -> u32 {
        self.playtime_left.unwrap_or(0)
    }

    pub fn clear_playtime_left(&mut self) {
        self.playtime_left = ::std::option::Option::None;
    }

    pub fn has_playtime_left(&self) -> bool {
        self.playtime_left.is_some()
    }

    // Param is passed by value, moved
    pub fn set_playtime_left(&mut self, v: u32) {
        self.playtime_left = ::std::option::Option::Some(v);
    }

    // optional bool update_available_but_disabled_by_app = 14;

    pub fn update_available_but_disabled_by_app(&self) -> bool {
        self.update_available_but_disabled_by_app.unwrap_or(false)
    }

    pub fn clear_update_available_but_disabled_by_app(&mut self) {
        self.update_available_but_disabled_by_app = ::std::option::Option::None;
    }

    pub fn has_update_available_but_disabled_by_app(&self) -> bool {
        self.update_available_but_disabled_by_app.is_some()
    }

    // Param is passed by value, moved
    pub fn set_update_available_but_disabled_by_app(&mut self, v: bool) {
        self.update_available_but_disabled_by_app = ::std::option::Option::Some(v);
    }
}

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

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

    fn merge_from(&mut self, is: &mut ::steam_vent_proto_common::protobuf::CodedInputStream<'_>) -> ::steam_vent_proto_common::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                8 => {
                    self.clientid = ::std::option::Option::Some(is.read_uint64()?);
                },
                18 => {
                    self.client_name = ::std::option::Option::Some(is.read_string()?);
                },
                24 => {
                    self.display_status = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                32 => {
                    self.status_percentage = ::std::option::Option::Some(is.read_uint32()?);
                },
                42 => {
                    self.active_beta = ::std::option::Option::Some(is.read_string()?);
                },
                48 => {
                    self.installed = ::std::option::Option::Some(is.read_bool()?);
                },
                72 => {
                    self.streaming_to_local_client = ::std::option::Option::Some(is.read_bool()?);
                },
                80 => {
                    self.is_available_on_current_platform = ::std::option::Option::Some(is.read_bool()?);
                },
                88 => {
                    self.is_invalid_os_type = ::std::option::Option::Some(is.read_bool()?);
                },
                96 => {
                    self.playtime_left = ::std::option::Option::Some(is.read_uint32()?);
                },
                112 => {
                    self.update_available_but_disabled_by_app = ::std::option::Option::Some(is.read_bool()?);
                },
                tag => {
                    ::steam_vent_proto_common::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.clientid {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint64_size(1, v);
        }
        if let Some(v) = self.client_name.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.display_status {
            my_size += ::steam_vent_proto_common::protobuf::rt::int32_size(3, v.value());
        }
        if let Some(v) = self.status_percentage {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(4, v);
        }
        if let Some(v) = self.active_beta.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(5, &v);
        }
        if let Some(v) = self.installed {
            my_size += 1 + 1;
        }
        if let Some(v) = self.streaming_to_local_client {
            my_size += 1 + 1;
        }
        if let Some(v) = self.is_available_on_current_platform {
            my_size += 1 + 1;
        }
        if let Some(v) = self.is_invalid_os_type {
            my_size += 1 + 1;
        }
        if let Some(v) = self.playtime_left {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(12, v);
        }
        if let Some(v) = self.update_available_but_disabled_by_app {
            my_size += 1 + 1;
        }
        my_size += ::steam_vent_proto_common::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 ::steam_vent_proto_common::protobuf::CodedOutputStream<'_>) -> ::steam_vent_proto_common::protobuf::Result<()> {
        if let Some(v) = self.clientid {
            os.write_uint64(1, v)?;
        }
        if let Some(v) = self.client_name.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.display_status {
            os.write_enum(3, ::steam_vent_proto_common::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.status_percentage {
            os.write_uint32(4, v)?;
        }
        if let Some(v) = self.active_beta.as_ref() {
            os.write_string(5, v)?;
        }
        if let Some(v) = self.installed {
            os.write_bool(6, v)?;
        }
        if let Some(v) = self.streaming_to_local_client {
            os.write_bool(9, v)?;
        }
        if let Some(v) = self.is_available_on_current_platform {
            os.write_bool(10, v)?;
        }
        if let Some(v) = self.is_invalid_os_type {
            os.write_bool(11, v)?;
        }
        if let Some(v) = self.playtime_left {
            os.write_uint32(12, v)?;
        }
        if let Some(v) = self.update_available_but_disabled_by_app {
            os.write_bool(14, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

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

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

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

    fn clear(&mut self) {
        self.clientid = ::std::option::Option::None;
        self.client_name = ::std::option::Option::None;
        self.display_status = ::std::option::Option::None;
        self.status_percentage = ::std::option::Option::None;
        self.active_beta = ::std::option::Option::None;
        self.installed = ::std::option::Option::None;
        self.streaming_to_local_client = ::std::option::Option::None;
        self.is_available_on_current_platform = ::std::option::Option::None;
        self.is_invalid_os_type = ::std::option::Option::None;
        self.playtime_left = ::std::option::Option::None;
        self.update_available_but_disabled_by_app = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static CAppOverview_PerClientData {
        static instance: CAppOverview_PerClientData = CAppOverview_PerClientData {
            clientid: ::std::option::Option::None,
            client_name: ::std::option::Option::None,
            display_status: ::std::option::Option::None,
            status_percentage: ::std::option::Option::None,
            active_beta: ::std::option::Option::None,
            installed: ::std::option::Option::None,
            streaming_to_local_client: ::std::option::Option::None,
            is_available_on_current_platform: ::std::option::Option::None,
            is_invalid_os_type: ::std::option::Option::None,
            playtime_left: ::std::option::Option::None,
            update_available_but_disabled_by_app: ::std::option::Option::None,
            special_fields: ::steam_vent_proto_common::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

// @@protoc_insertion_point(message:CAppOverview)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct CAppOverview {
    // message fields
    // @@protoc_insertion_point(field:CAppOverview.appid)
    pub appid: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.display_name)
    pub display_name: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.visible_in_game_list)
    pub visible_in_game_list: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview.subscribed_to)
    pub subscribed_to: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview.sort_as)
    pub sort_as: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.app_type)
    pub app_type: ::std::option::Option<::steam_vent_proto_common::protobuf::EnumOrUnknown<super::enums::EProtoAppType>>,
    // @@protoc_insertion_point(field:CAppOverview.mru_index)
    pub mru_index: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.rt_recent_activity_time)
    pub rt_recent_activity_time: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.minutes_playtime_forever)
    pub minutes_playtime_forever: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.minutes_playtime_last_two_weeks)
    pub minutes_playtime_last_two_weeks: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.rt_last_time_played)
    pub rt_last_time_played: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.store_tag)
    pub store_tag: ::std::vec::Vec<u32>,
    // @@protoc_insertion_point(field:CAppOverview.store_category)
    pub store_category: ::std::vec::Vec<u32>,
    // @@protoc_insertion_point(field:CAppOverview.rt_original_release_date)
    pub rt_original_release_date: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.rt_steam_release_date)
    pub rt_steam_release_date: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.icon_hash)
    pub icon_hash: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.xbox_controller_support)
    pub xbox_controller_support: ::std::option::Option<::steam_vent_proto_common::protobuf::EnumOrUnknown<EAppControllerSupportLevel>>,
    // @@protoc_insertion_point(field:CAppOverview.vr_supported)
    pub vr_supported: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview.metacritic_score)
    pub metacritic_score: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.size_on_disk)
    pub size_on_disk: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:CAppOverview.third_party_mod)
    pub third_party_mod: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview.icon_data)
    pub icon_data: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.icon_data_format)
    pub icon_data_format: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.gameid)
    pub gameid: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.library_capsule_filename)
    pub library_capsule_filename: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.per_client_data)
    pub per_client_data: ::std::vec::Vec<CAppOverview_PerClientData>,
    // @@protoc_insertion_point(field:CAppOverview.most_available_clientid)
    pub most_available_clientid: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:CAppOverview.selected_clientid)
    pub selected_clientid: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:CAppOverview.rt_store_asset_mtime)
    pub rt_store_asset_mtime: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.rt_custom_image_mtime)
    pub rt_custom_image_mtime: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.optional_parent_app_id)
    pub optional_parent_app_id: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.owner_account_id)
    pub owner_account_id: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.review_score_with_bombs)
    pub review_score_with_bombs: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.review_percentage_with_bombs)
    pub review_percentage_with_bombs: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.review_score_without_bombs)
    pub review_score_without_bombs: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.review_percentage_without_bombs)
    pub review_percentage_without_bombs: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.library_id)
    pub library_id: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.vr_only)
    pub vr_only: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview.mastersub_appid)
    pub mastersub_appid: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.mastersub_includedwith_logo)
    pub mastersub_includedwith_logo: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.site_license_site_name)
    pub site_license_site_name: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.shortcut_override_appid)
    pub shortcut_override_appid: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.rt_last_time_locally_played)
    pub rt_last_time_locally_played: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.rt_purchased_time)
    pub rt_purchased_time: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.header_filename)
    pub header_filename: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.local_cache_version)
    pub local_cache_version: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.number_of_copies)
    pub number_of_copies: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.steam_hw_compat_category_packed)
    pub steam_hw_compat_category_packed: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:CAppOverview.album_cover_hash)
    pub album_cover_hash: ::std::option::Option<::std::string::String>,
    // @@protoc_insertion_point(field:CAppOverview.display_name_elanguage)
    pub display_name_elanguage: ::std::option::Option<i32>,
    // @@protoc_insertion_point(field:CAppOverview.has_custom_sort_as)
    pub has_custom_sort_as: ::std::option::Option<bool>,
    // special fields
    // @@protoc_insertion_point(special_field:CAppOverview.special_fields)
    pub special_fields: ::steam_vent_proto_common::protobuf::SpecialFields,
}

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

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

    // optional uint32 appid = 1;

    pub fn appid(&self) -> u32 {
        self.appid.unwrap_or(0)
    }

    pub fn clear_appid(&mut self) {
        self.appid = ::std::option::Option::None;
    }

    pub fn has_appid(&self) -> bool {
        self.appid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_appid(&mut self, v: u32) {
        self.appid = ::std::option::Option::Some(v);
    }

    // optional string display_name = 2;

    pub fn display_name(&self) -> &str {
        match self.display_name.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_display_name(&mut self) {
        self.display_name = ::std::option::Option::None;
    }

    pub fn has_display_name(&self) -> bool {
        self.display_name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_display_name(&mut self, v: ::std::string::String) {
        self.display_name = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_display_name(&mut self) -> &mut ::std::string::String {
        if self.display_name.is_none() {
            self.display_name = ::std::option::Option::Some(::std::string::String::new());
        }
        self.display_name.as_mut().unwrap()
    }

    // Take field
    pub fn take_display_name(&mut self) -> ::std::string::String {
        self.display_name.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional bool visible_in_game_list = 4;

    pub fn visible_in_game_list(&self) -> bool {
        self.visible_in_game_list.unwrap_or(false)
    }

    pub fn clear_visible_in_game_list(&mut self) {
        self.visible_in_game_list = ::std::option::Option::None;
    }

    pub fn has_visible_in_game_list(&self) -> bool {
        self.visible_in_game_list.is_some()
    }

    // Param is passed by value, moved
    pub fn set_visible_in_game_list(&mut self, v: bool) {
        self.visible_in_game_list = ::std::option::Option::Some(v);
    }

    // optional bool subscribed_to = 5;

    pub fn subscribed_to(&self) -> bool {
        self.subscribed_to.unwrap_or(false)
    }

    pub fn clear_subscribed_to(&mut self) {
        self.subscribed_to = ::std::option::Option::None;
    }

    pub fn has_subscribed_to(&self) -> bool {
        self.subscribed_to.is_some()
    }

    // Param is passed by value, moved
    pub fn set_subscribed_to(&mut self, v: bool) {
        self.subscribed_to = ::std::option::Option::Some(v);
    }

    // optional string sort_as = 6;

    pub fn sort_as(&self) -> &str {
        match self.sort_as.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_sort_as(&mut self) {
        self.sort_as = ::std::option::Option::None;
    }

    pub fn has_sort_as(&self) -> bool {
        self.sort_as.is_some()
    }

    // Param is passed by value, moved
    pub fn set_sort_as(&mut self, v: ::std::string::String) {
        self.sort_as = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_sort_as(&mut self) -> &mut ::std::string::String {
        if self.sort_as.is_none() {
            self.sort_as = ::std::option::Option::Some(::std::string::String::new());
        }
        self.sort_as.as_mut().unwrap()
    }

    // Take field
    pub fn take_sort_as(&mut self) -> ::std::string::String {
        self.sort_as.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional .EProtoAppType app_type = 7;

    pub fn app_type(&self) -> super::enums::EProtoAppType {
        match self.app_type {
            Some(e) => e.enum_value_or(super::enums::EProtoAppType::k_EAppTypeInvalid),
            None => super::enums::EProtoAppType::k_EAppTypeInvalid,
        }
    }

    pub fn clear_app_type(&mut self) {
        self.app_type = ::std::option::Option::None;
    }

    pub fn has_app_type(&self) -> bool {
        self.app_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_app_type(&mut self, v: super::enums::EProtoAppType) {
        self.app_type = ::std::option::Option::Some(::steam_vent_proto_common::protobuf::EnumOrUnknown::new(v));
    }

    // optional uint32 mru_index = 13;

    pub fn mru_index(&self) -> u32 {
        self.mru_index.unwrap_or(0)
    }

    pub fn clear_mru_index(&mut self) {
        self.mru_index = ::std::option::Option::None;
    }

    pub fn has_mru_index(&self) -> bool {
        self.mru_index.is_some()
    }

    // Param is passed by value, moved
    pub fn set_mru_index(&mut self, v: u32) {
        self.mru_index = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_recent_activity_time = 14;

    pub fn rt_recent_activity_time(&self) -> u32 {
        self.rt_recent_activity_time.unwrap_or(0u32)
    }

    pub fn clear_rt_recent_activity_time(&mut self) {
        self.rt_recent_activity_time = ::std::option::Option::None;
    }

    pub fn has_rt_recent_activity_time(&self) -> bool {
        self.rt_recent_activity_time.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_recent_activity_time(&mut self, v: u32) {
        self.rt_recent_activity_time = ::std::option::Option::Some(v);
    }

    // optional uint32 minutes_playtime_forever = 16;

    pub fn minutes_playtime_forever(&self) -> u32 {
        self.minutes_playtime_forever.unwrap_or(0u32)
    }

    pub fn clear_minutes_playtime_forever(&mut self) {
        self.minutes_playtime_forever = ::std::option::Option::None;
    }

    pub fn has_minutes_playtime_forever(&self) -> bool {
        self.minutes_playtime_forever.is_some()
    }

    // Param is passed by value, moved
    pub fn set_minutes_playtime_forever(&mut self, v: u32) {
        self.minutes_playtime_forever = ::std::option::Option::Some(v);
    }

    // optional uint32 minutes_playtime_last_two_weeks = 17;

    pub fn minutes_playtime_last_two_weeks(&self) -> u32 {
        self.minutes_playtime_last_two_weeks.unwrap_or(0u32)
    }

    pub fn clear_minutes_playtime_last_two_weeks(&mut self) {
        self.minutes_playtime_last_two_weeks = ::std::option::Option::None;
    }

    pub fn has_minutes_playtime_last_two_weeks(&self) -> bool {
        self.minutes_playtime_last_two_weeks.is_some()
    }

    // Param is passed by value, moved
    pub fn set_minutes_playtime_last_two_weeks(&mut self, v: u32) {
        self.minutes_playtime_last_two_weeks = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_last_time_played = 18;

    pub fn rt_last_time_played(&self) -> u32 {
        self.rt_last_time_played.unwrap_or(0u32)
    }

    pub fn clear_rt_last_time_played(&mut self) {
        self.rt_last_time_played = ::std::option::Option::None;
    }

    pub fn has_rt_last_time_played(&self) -> bool {
        self.rt_last_time_played.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_last_time_played(&mut self, v: u32) {
        self.rt_last_time_played = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_original_release_date = 25;

    pub fn rt_original_release_date(&self) -> u32 {
        self.rt_original_release_date.unwrap_or(0u32)
    }

    pub fn clear_rt_original_release_date(&mut self) {
        self.rt_original_release_date = ::std::option::Option::None;
    }

    pub fn has_rt_original_release_date(&self) -> bool {
        self.rt_original_release_date.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_original_release_date(&mut self, v: u32) {
        self.rt_original_release_date = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_steam_release_date = 26;

    pub fn rt_steam_release_date(&self) -> u32 {
        self.rt_steam_release_date.unwrap_or(0u32)
    }

    pub fn clear_rt_steam_release_date(&mut self) {
        self.rt_steam_release_date = ::std::option::Option::None;
    }

    pub fn has_rt_steam_release_date(&self) -> bool {
        self.rt_steam_release_date.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_steam_release_date(&mut self, v: u32) {
        self.rt_steam_release_date = ::std::option::Option::Some(v);
    }

    // optional string icon_hash = 27;

    pub fn icon_hash(&self) -> &str {
        match self.icon_hash.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_icon_hash(&mut self) {
        self.icon_hash = ::std::option::Option::None;
    }

    pub fn has_icon_hash(&self) -> bool {
        self.icon_hash.is_some()
    }

    // Param is passed by value, moved
    pub fn set_icon_hash(&mut self, v: ::std::string::String) {
        self.icon_hash = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_icon_hash(&mut self) -> &mut ::std::string::String {
        if self.icon_hash.is_none() {
            self.icon_hash = ::std::option::Option::Some(::std::string::String::new());
        }
        self.icon_hash.as_mut().unwrap()
    }

    // Take field
    pub fn take_icon_hash(&mut self) -> ::std::string::String {
        self.icon_hash.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional .EAppControllerSupportLevel xbox_controller_support = 31;

    pub fn xbox_controller_support(&self) -> EAppControllerSupportLevel {
        match self.xbox_controller_support {
            Some(e) => e.enum_value_or(EAppControllerSupportLevel::k_EAppControllerSupportLevelNone),
            None => EAppControllerSupportLevel::k_EAppControllerSupportLevelNone,
        }
    }

    pub fn clear_xbox_controller_support(&mut self) {
        self.xbox_controller_support = ::std::option::Option::None;
    }

    pub fn has_xbox_controller_support(&self) -> bool {
        self.xbox_controller_support.is_some()
    }

    // Param is passed by value, moved
    pub fn set_xbox_controller_support(&mut self, v: EAppControllerSupportLevel) {
        self.xbox_controller_support = ::std::option::Option::Some(::steam_vent_proto_common::protobuf::EnumOrUnknown::new(v));
    }

    // optional bool vr_supported = 32;

    pub fn vr_supported(&self) -> bool {
        self.vr_supported.unwrap_or(false)
    }

    pub fn clear_vr_supported(&mut self) {
        self.vr_supported = ::std::option::Option::None;
    }

    pub fn has_vr_supported(&self) -> bool {
        self.vr_supported.is_some()
    }

    // Param is passed by value, moved
    pub fn set_vr_supported(&mut self, v: bool) {
        self.vr_supported = ::std::option::Option::Some(v);
    }

    // optional uint32 metacritic_score = 36;

    pub fn metacritic_score(&self) -> u32 {
        self.metacritic_score.unwrap_or(0)
    }

    pub fn clear_metacritic_score(&mut self) {
        self.metacritic_score = ::std::option::Option::None;
    }

    pub fn has_metacritic_score(&self) -> bool {
        self.metacritic_score.is_some()
    }

    // Param is passed by value, moved
    pub fn set_metacritic_score(&mut self, v: u32) {
        self.metacritic_score = ::std::option::Option::Some(v);
    }

    // optional uint64 size_on_disk = 37;

    pub fn size_on_disk(&self) -> u64 {
        self.size_on_disk.unwrap_or(0)
    }

    pub fn clear_size_on_disk(&mut self) {
        self.size_on_disk = ::std::option::Option::None;
    }

    pub fn has_size_on_disk(&self) -> bool {
        self.size_on_disk.is_some()
    }

    // Param is passed by value, moved
    pub fn set_size_on_disk(&mut self, v: u64) {
        self.size_on_disk = ::std::option::Option::Some(v);
    }

    // optional bool third_party_mod = 38;

    pub fn third_party_mod(&self) -> bool {
        self.third_party_mod.unwrap_or(false)
    }

    pub fn clear_third_party_mod(&mut self) {
        self.third_party_mod = ::std::option::Option::None;
    }

    pub fn has_third_party_mod(&self) -> bool {
        self.third_party_mod.is_some()
    }

    // Param is passed by value, moved
    pub fn set_third_party_mod(&mut self, v: bool) {
        self.third_party_mod = ::std::option::Option::Some(v);
    }

    // optional string icon_data = 39;

    pub fn icon_data(&self) -> &str {
        match self.icon_data.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_icon_data(&mut self) {
        self.icon_data = ::std::option::Option::None;
    }

    pub fn has_icon_data(&self) -> bool {
        self.icon_data.is_some()
    }

    // Param is passed by value, moved
    pub fn set_icon_data(&mut self, v: ::std::string::String) {
        self.icon_data = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_icon_data(&mut self) -> &mut ::std::string::String {
        if self.icon_data.is_none() {
            self.icon_data = ::std::option::Option::Some(::std::string::String::new());
        }
        self.icon_data.as_mut().unwrap()
    }

    // Take field
    pub fn take_icon_data(&mut self) -> ::std::string::String {
        self.icon_data.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string icon_data_format = 40;

    pub fn icon_data_format(&self) -> &str {
        match self.icon_data_format.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_icon_data_format(&mut self) {
        self.icon_data_format = ::std::option::Option::None;
    }

    pub fn has_icon_data_format(&self) -> bool {
        self.icon_data_format.is_some()
    }

    // Param is passed by value, moved
    pub fn set_icon_data_format(&mut self, v: ::std::string::String) {
        self.icon_data_format = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_icon_data_format(&mut self) -> &mut ::std::string::String {
        if self.icon_data_format.is_none() {
            self.icon_data_format = ::std::option::Option::Some(::std::string::String::new());
        }
        self.icon_data_format.as_mut().unwrap()
    }

    // Take field
    pub fn take_icon_data_format(&mut self) -> ::std::string::String {
        self.icon_data_format.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string gameid = 41;

    pub fn gameid(&self) -> &str {
        match self.gameid.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_gameid(&mut self) {
        self.gameid = ::std::option::Option::None;
    }

    pub fn has_gameid(&self) -> bool {
        self.gameid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_gameid(&mut self, v: ::std::string::String) {
        self.gameid = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_gameid(&mut self) -> &mut ::std::string::String {
        if self.gameid.is_none() {
            self.gameid = ::std::option::Option::Some(::std::string::String::new());
        }
        self.gameid.as_mut().unwrap()
    }

    // Take field
    pub fn take_gameid(&mut self) -> ::std::string::String {
        self.gameid.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string library_capsule_filename = 42;

    pub fn library_capsule_filename(&self) -> &str {
        match self.library_capsule_filename.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_library_capsule_filename(&mut self) {
        self.library_capsule_filename = ::std::option::Option::None;
    }

    pub fn has_library_capsule_filename(&self) -> bool {
        self.library_capsule_filename.is_some()
    }

    // Param is passed by value, moved
    pub fn set_library_capsule_filename(&mut self, v: ::std::string::String) {
        self.library_capsule_filename = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_library_capsule_filename(&mut self) -> &mut ::std::string::String {
        if self.library_capsule_filename.is_none() {
            self.library_capsule_filename = ::std::option::Option::Some(::std::string::String::new());
        }
        self.library_capsule_filename.as_mut().unwrap()
    }

    // Take field
    pub fn take_library_capsule_filename(&mut self) -> ::std::string::String {
        self.library_capsule_filename.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional uint64 most_available_clientid = 44;

    pub fn most_available_clientid(&self) -> u64 {
        self.most_available_clientid.unwrap_or(0u64)
    }

    pub fn clear_most_available_clientid(&mut self) {
        self.most_available_clientid = ::std::option::Option::None;
    }

    pub fn has_most_available_clientid(&self) -> bool {
        self.most_available_clientid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_most_available_clientid(&mut self, v: u64) {
        self.most_available_clientid = ::std::option::Option::Some(v);
    }

    // optional uint64 selected_clientid = 45;

    pub fn selected_clientid(&self) -> u64 {
        self.selected_clientid.unwrap_or(0u64)
    }

    pub fn clear_selected_clientid(&mut self) {
        self.selected_clientid = ::std::option::Option::None;
    }

    pub fn has_selected_clientid(&self) -> bool {
        self.selected_clientid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_selected_clientid(&mut self, v: u64) {
        self.selected_clientid = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_store_asset_mtime = 46;

    pub fn rt_store_asset_mtime(&self) -> u32 {
        self.rt_store_asset_mtime.unwrap_or(0)
    }

    pub fn clear_rt_store_asset_mtime(&mut self) {
        self.rt_store_asset_mtime = ::std::option::Option::None;
    }

    pub fn has_rt_store_asset_mtime(&self) -> bool {
        self.rt_store_asset_mtime.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_store_asset_mtime(&mut self, v: u32) {
        self.rt_store_asset_mtime = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_custom_image_mtime = 47;

    pub fn rt_custom_image_mtime(&self) -> u32 {
        self.rt_custom_image_mtime.unwrap_or(0)
    }

    pub fn clear_rt_custom_image_mtime(&mut self) {
        self.rt_custom_image_mtime = ::std::option::Option::None;
    }

    pub fn has_rt_custom_image_mtime(&self) -> bool {
        self.rt_custom_image_mtime.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_custom_image_mtime(&mut self, v: u32) {
        self.rt_custom_image_mtime = ::std::option::Option::Some(v);
    }

    // optional uint32 optional_parent_app_id = 48;

    pub fn optional_parent_app_id(&self) -> u32 {
        self.optional_parent_app_id.unwrap_or(0)
    }

    pub fn clear_optional_parent_app_id(&mut self) {
        self.optional_parent_app_id = ::std::option::Option::None;
    }

    pub fn has_optional_parent_app_id(&self) -> bool {
        self.optional_parent_app_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_optional_parent_app_id(&mut self, v: u32) {
        self.optional_parent_app_id = ::std::option::Option::Some(v);
    }

    // optional uint32 owner_account_id = 49;

    pub fn owner_account_id(&self) -> u32 {
        self.owner_account_id.unwrap_or(0)
    }

    pub fn clear_owner_account_id(&mut self) {
        self.owner_account_id = ::std::option::Option::None;
    }

    pub fn has_owner_account_id(&self) -> bool {
        self.owner_account_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_owner_account_id(&mut self, v: u32) {
        self.owner_account_id = ::std::option::Option::Some(v);
    }

    // optional uint32 review_score_with_bombs = 53;

    pub fn review_score_with_bombs(&self) -> u32 {
        self.review_score_with_bombs.unwrap_or(0u32)
    }

    pub fn clear_review_score_with_bombs(&mut self) {
        self.review_score_with_bombs = ::std::option::Option::None;
    }

    pub fn has_review_score_with_bombs(&self) -> bool {
        self.review_score_with_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_score_with_bombs(&mut self, v: u32) {
        self.review_score_with_bombs = ::std::option::Option::Some(v);
    }

    // optional uint32 review_percentage_with_bombs = 54;

    pub fn review_percentage_with_bombs(&self) -> u32 {
        self.review_percentage_with_bombs.unwrap_or(0u32)
    }

    pub fn clear_review_percentage_with_bombs(&mut self) {
        self.review_percentage_with_bombs = ::std::option::Option::None;
    }

    pub fn has_review_percentage_with_bombs(&self) -> bool {
        self.review_percentage_with_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_percentage_with_bombs(&mut self, v: u32) {
        self.review_percentage_with_bombs = ::std::option::Option::Some(v);
    }

    // optional uint32 review_score_without_bombs = 55;

    pub fn review_score_without_bombs(&self) -> u32 {
        self.review_score_without_bombs.unwrap_or(0u32)
    }

    pub fn clear_review_score_without_bombs(&mut self) {
        self.review_score_without_bombs = ::std::option::Option::None;
    }

    pub fn has_review_score_without_bombs(&self) -> bool {
        self.review_score_without_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_score_without_bombs(&mut self, v: u32) {
        self.review_score_without_bombs = ::std::option::Option::Some(v);
    }

    // optional uint32 review_percentage_without_bombs = 56;

    pub fn review_percentage_without_bombs(&self) -> u32 {
        self.review_percentage_without_bombs.unwrap_or(0u32)
    }

    pub fn clear_review_percentage_without_bombs(&mut self) {
        self.review_percentage_without_bombs = ::std::option::Option::None;
    }

    pub fn has_review_percentage_without_bombs(&self) -> bool {
        self.review_percentage_without_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_percentage_without_bombs(&mut self, v: u32) {
        self.review_percentage_without_bombs = ::std::option::Option::Some(v);
    }

    // optional string library_id = 57;

    pub fn library_id(&self) -> &str {
        match self.library_id.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_library_id(&mut self) {
        self.library_id = ::std::option::Option::None;
    }

    pub fn has_library_id(&self) -> bool {
        self.library_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_library_id(&mut self, v: ::std::string::String) {
        self.library_id = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_library_id(&mut self) -> &mut ::std::string::String {
        if self.library_id.is_none() {
            self.library_id = ::std::option::Option::Some(::std::string::String::new());
        }
        self.library_id.as_mut().unwrap()
    }

    // Take field
    pub fn take_library_id(&mut self) -> ::std::string::String {
        self.library_id.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional bool vr_only = 58;

    pub fn vr_only(&self) -> bool {
        self.vr_only.unwrap_or(false)
    }

    pub fn clear_vr_only(&mut self) {
        self.vr_only = ::std::option::Option::None;
    }

    pub fn has_vr_only(&self) -> bool {
        self.vr_only.is_some()
    }

    // Param is passed by value, moved
    pub fn set_vr_only(&mut self, v: bool) {
        self.vr_only = ::std::option::Option::Some(v);
    }

    // optional uint32 mastersub_appid = 59;

    pub fn mastersub_appid(&self) -> u32 {
        self.mastersub_appid.unwrap_or(0)
    }

    pub fn clear_mastersub_appid(&mut self) {
        self.mastersub_appid = ::std::option::Option::None;
    }

    pub fn has_mastersub_appid(&self) -> bool {
        self.mastersub_appid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_mastersub_appid(&mut self, v: u32) {
        self.mastersub_appid = ::std::option::Option::Some(v);
    }

    // optional string mastersub_includedwith_logo = 60;

    pub fn mastersub_includedwith_logo(&self) -> &str {
        match self.mastersub_includedwith_logo.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_mastersub_includedwith_logo(&mut self) {
        self.mastersub_includedwith_logo = ::std::option::Option::None;
    }

    pub fn has_mastersub_includedwith_logo(&self) -> bool {
        self.mastersub_includedwith_logo.is_some()
    }

    // Param is passed by value, moved
    pub fn set_mastersub_includedwith_logo(&mut self, v: ::std::string::String) {
        self.mastersub_includedwith_logo = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_mastersub_includedwith_logo(&mut self) -> &mut ::std::string::String {
        if self.mastersub_includedwith_logo.is_none() {
            self.mastersub_includedwith_logo = ::std::option::Option::Some(::std::string::String::new());
        }
        self.mastersub_includedwith_logo.as_mut().unwrap()
    }

    // Take field
    pub fn take_mastersub_includedwith_logo(&mut self) -> ::std::string::String {
        self.mastersub_includedwith_logo.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string site_license_site_name = 62;

    pub fn site_license_site_name(&self) -> &str {
        match self.site_license_site_name.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_site_license_site_name(&mut self) {
        self.site_license_site_name = ::std::option::Option::None;
    }

    pub fn has_site_license_site_name(&self) -> bool {
        self.site_license_site_name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_site_license_site_name(&mut self, v: ::std::string::String) {
        self.site_license_site_name = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_site_license_site_name(&mut self) -> &mut ::std::string::String {
        if self.site_license_site_name.is_none() {
            self.site_license_site_name = ::std::option::Option::Some(::std::string::String::new());
        }
        self.site_license_site_name.as_mut().unwrap()
    }

    // Take field
    pub fn take_site_license_site_name(&mut self) -> ::std::string::String {
        self.site_license_site_name.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional uint32 shortcut_override_appid = 63;

    pub fn shortcut_override_appid(&self) -> u32 {
        self.shortcut_override_appid.unwrap_or(0)
    }

    pub fn clear_shortcut_override_appid(&mut self) {
        self.shortcut_override_appid = ::std::option::Option::None;
    }

    pub fn has_shortcut_override_appid(&self) -> bool {
        self.shortcut_override_appid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_shortcut_override_appid(&mut self, v: u32) {
        self.shortcut_override_appid = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_last_time_locally_played = 65;

    pub fn rt_last_time_locally_played(&self) -> u32 {
        self.rt_last_time_locally_played.unwrap_or(0)
    }

    pub fn clear_rt_last_time_locally_played(&mut self) {
        self.rt_last_time_locally_played = ::std::option::Option::None;
    }

    pub fn has_rt_last_time_locally_played(&self) -> bool {
        self.rt_last_time_locally_played.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_last_time_locally_played(&mut self, v: u32) {
        self.rt_last_time_locally_played = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_purchased_time = 66;

    pub fn rt_purchased_time(&self) -> u32 {
        self.rt_purchased_time.unwrap_or(0)
    }

    pub fn clear_rt_purchased_time(&mut self) {
        self.rt_purchased_time = ::std::option::Option::None;
    }

    pub fn has_rt_purchased_time(&self) -> bool {
        self.rt_purchased_time.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_purchased_time(&mut self, v: u32) {
        self.rt_purchased_time = ::std::option::Option::Some(v);
    }

    // optional string header_filename = 67;

    pub fn header_filename(&self) -> &str {
        match self.header_filename.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_header_filename(&mut self) {
        self.header_filename = ::std::option::Option::None;
    }

    pub fn has_header_filename(&self) -> bool {
        self.header_filename.is_some()
    }

    // Param is passed by value, moved
    pub fn set_header_filename(&mut self, v: ::std::string::String) {
        self.header_filename = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_header_filename(&mut self) -> &mut ::std::string::String {
        if self.header_filename.is_none() {
            self.header_filename = ::std::option::Option::Some(::std::string::String::new());
        }
        self.header_filename.as_mut().unwrap()
    }

    // Take field
    pub fn take_header_filename(&mut self) -> ::std::string::String {
        self.header_filename.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional uint32 local_cache_version = 68;

    pub fn local_cache_version(&self) -> u32 {
        self.local_cache_version.unwrap_or(0)
    }

    pub fn clear_local_cache_version(&mut self) {
        self.local_cache_version = ::std::option::Option::None;
    }

    pub fn has_local_cache_version(&self) -> bool {
        self.local_cache_version.is_some()
    }

    // Param is passed by value, moved
    pub fn set_local_cache_version(&mut self, v: u32) {
        self.local_cache_version = ::std::option::Option::Some(v);
    }

    // optional uint32 number_of_copies = 72;

    pub fn number_of_copies(&self) -> u32 {
        self.number_of_copies.unwrap_or(1u32)
    }

    pub fn clear_number_of_copies(&mut self) {
        self.number_of_copies = ::std::option::Option::None;
    }

    pub fn has_number_of_copies(&self) -> bool {
        self.number_of_copies.is_some()
    }

    // Param is passed by value, moved
    pub fn set_number_of_copies(&mut self, v: u32) {
        self.number_of_copies = ::std::option::Option::Some(v);
    }

    // optional uint32 steam_hw_compat_category_packed = 73;

    pub fn steam_hw_compat_category_packed(&self) -> u32 {
        self.steam_hw_compat_category_packed.unwrap_or(0u32)
    }

    pub fn clear_steam_hw_compat_category_packed(&mut self) {
        self.steam_hw_compat_category_packed = ::std::option::Option::None;
    }

    pub fn has_steam_hw_compat_category_packed(&self) -> bool {
        self.steam_hw_compat_category_packed.is_some()
    }

    // Param is passed by value, moved
    pub fn set_steam_hw_compat_category_packed(&mut self, v: u32) {
        self.steam_hw_compat_category_packed = ::std::option::Option::Some(v);
    }

    // optional string album_cover_hash = 74;

    pub fn album_cover_hash(&self) -> &str {
        match self.album_cover_hash.as_ref() {
            Some(v) => v,
            None => "",
        }
    }

    pub fn clear_album_cover_hash(&mut self) {
        self.album_cover_hash = ::std::option::Option::None;
    }

    pub fn has_album_cover_hash(&self) -> bool {
        self.album_cover_hash.is_some()
    }

    // Param is passed by value, moved
    pub fn set_album_cover_hash(&mut self, v: ::std::string::String) {
        self.album_cover_hash = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_album_cover_hash(&mut self) -> &mut ::std::string::String {
        if self.album_cover_hash.is_none() {
            self.album_cover_hash = ::std::option::Option::Some(::std::string::String::new());
        }
        self.album_cover_hash.as_mut().unwrap()
    }

    // Take field
    pub fn take_album_cover_hash(&mut self) -> ::std::string::String {
        self.album_cover_hash.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional int32 display_name_elanguage = 75;

    pub fn display_name_elanguage(&self) -> i32 {
        self.display_name_elanguage.unwrap_or(-1i32)
    }

    pub fn clear_display_name_elanguage(&mut self) {
        self.display_name_elanguage = ::std::option::Option::None;
    }

    pub fn has_display_name_elanguage(&self) -> bool {
        self.display_name_elanguage.is_some()
    }

    // Param is passed by value, moved
    pub fn set_display_name_elanguage(&mut self, v: i32) {
        self.display_name_elanguage = ::std::option::Option::Some(v);
    }

    // optional bool has_custom_sort_as = 76;

    pub fn has_custom_sort_as(&self) -> bool {
        self.has_custom_sort_as.unwrap_or(false)
    }

    pub fn clear_has_custom_sort_as(&mut self) {
        self.has_custom_sort_as = ::std::option::Option::None;
    }

    pub fn has_has_custom_sort_as(&self) -> bool {
        self.has_custom_sort_as.is_some()
    }

    // Param is passed by value, moved
    pub fn set_has_custom_sort_as(&mut self, v: bool) {
        self.has_custom_sort_as = ::std::option::Option::Some(v);
    }
}

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

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

    fn merge_from(&mut self, is: &mut ::steam_vent_proto_common::protobuf::CodedInputStream<'_>) -> ::steam_vent_proto_common::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                8 => {
                    self.appid = ::std::option::Option::Some(is.read_uint32()?);
                },
                18 => {
                    self.display_name = ::std::option::Option::Some(is.read_string()?);
                },
                32 => {
                    self.visible_in_game_list = ::std::option::Option::Some(is.read_bool()?);
                },
                40 => {
                    self.subscribed_to = ::std::option::Option::Some(is.read_bool()?);
                },
                50 => {
                    self.sort_as = ::std::option::Option::Some(is.read_string()?);
                },
                56 => {
                    self.app_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                104 => {
                    self.mru_index = ::std::option::Option::Some(is.read_uint32()?);
                },
                112 => {
                    self.rt_recent_activity_time = ::std::option::Option::Some(is.read_uint32()?);
                },
                128 => {
                    self.minutes_playtime_forever = ::std::option::Option::Some(is.read_uint32()?);
                },
                136 => {
                    self.minutes_playtime_last_two_weeks = ::std::option::Option::Some(is.read_uint32()?);
                },
                144 => {
                    self.rt_last_time_played = ::std::option::Option::Some(is.read_uint32()?);
                },
                154 => {
                    is.read_repeated_packed_uint32_into(&mut self.store_tag)?;
                },
                152 => {
                    self.store_tag.push(is.read_uint32()?);
                },
                186 => {
                    is.read_repeated_packed_uint32_into(&mut self.store_category)?;
                },
                184 => {
                    self.store_category.push(is.read_uint32()?);
                },
                200 => {
                    self.rt_original_release_date = ::std::option::Option::Some(is.read_uint32()?);
                },
                208 => {
                    self.rt_steam_release_date = ::std::option::Option::Some(is.read_uint32()?);
                },
                218 => {
                    self.icon_hash = ::std::option::Option::Some(is.read_string()?);
                },
                248 => {
                    self.xbox_controller_support = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                256 => {
                    self.vr_supported = ::std::option::Option::Some(is.read_bool()?);
                },
                288 => {
                    self.metacritic_score = ::std::option::Option::Some(is.read_uint32()?);
                },
                296 => {
                    self.size_on_disk = ::std::option::Option::Some(is.read_uint64()?);
                },
                304 => {
                    self.third_party_mod = ::std::option::Option::Some(is.read_bool()?);
                },
                314 => {
                    self.icon_data = ::std::option::Option::Some(is.read_string()?);
                },
                322 => {
                    self.icon_data_format = ::std::option::Option::Some(is.read_string()?);
                },
                330 => {
                    self.gameid = ::std::option::Option::Some(is.read_string()?);
                },
                338 => {
                    self.library_capsule_filename = ::std::option::Option::Some(is.read_string()?);
                },
                346 => {
                    self.per_client_data.push(is.read_message()?);
                },
                352 => {
                    self.most_available_clientid = ::std::option::Option::Some(is.read_uint64()?);
                },
                360 => {
                    self.selected_clientid = ::std::option::Option::Some(is.read_uint64()?);
                },
                368 => {
                    self.rt_store_asset_mtime = ::std::option::Option::Some(is.read_uint32()?);
                },
                376 => {
                    self.rt_custom_image_mtime = ::std::option::Option::Some(is.read_uint32()?);
                },
                384 => {
                    self.optional_parent_app_id = ::std::option::Option::Some(is.read_uint32()?);
                },
                392 => {
                    self.owner_account_id = ::std::option::Option::Some(is.read_uint32()?);
                },
                424 => {
                    self.review_score_with_bombs = ::std::option::Option::Some(is.read_uint32()?);
                },
                432 => {
                    self.review_percentage_with_bombs = ::std::option::Option::Some(is.read_uint32()?);
                },
                440 => {
                    self.review_score_without_bombs = ::std::option::Option::Some(is.read_uint32()?);
                },
                448 => {
                    self.review_percentage_without_bombs = ::std::option::Option::Some(is.read_uint32()?);
                },
                458 => {
                    self.library_id = ::std::option::Option::Some(is.read_string()?);
                },
                464 => {
                    self.vr_only = ::std::option::Option::Some(is.read_bool()?);
                },
                472 => {
                    self.mastersub_appid = ::std::option::Option::Some(is.read_uint32()?);
                },
                482 => {
                    self.mastersub_includedwith_logo = ::std::option::Option::Some(is.read_string()?);
                },
                498 => {
                    self.site_license_site_name = ::std::option::Option::Some(is.read_string()?);
                },
                504 => {
                    self.shortcut_override_appid = ::std::option::Option::Some(is.read_uint32()?);
                },
                520 => {
                    self.rt_last_time_locally_played = ::std::option::Option::Some(is.read_uint32()?);
                },
                528 => {
                    self.rt_purchased_time = ::std::option::Option::Some(is.read_uint32()?);
                },
                538 => {
                    self.header_filename = ::std::option::Option::Some(is.read_string()?);
                },
                544 => {
                    self.local_cache_version = ::std::option::Option::Some(is.read_uint32()?);
                },
                576 => {
                    self.number_of_copies = ::std::option::Option::Some(is.read_uint32()?);
                },
                584 => {
                    self.steam_hw_compat_category_packed = ::std::option::Option::Some(is.read_uint32()?);
                },
                594 => {
                    self.album_cover_hash = ::std::option::Option::Some(is.read_string()?);
                },
                600 => {
                    self.display_name_elanguage = ::std::option::Option::Some(is.read_int32()?);
                },
                608 => {
                    self.has_custom_sort_as = ::std::option::Option::Some(is.read_bool()?);
                },
                tag => {
                    ::steam_vent_proto_common::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.appid {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(1, v);
        }
        if let Some(v) = self.display_name.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.visible_in_game_list {
            my_size += 1 + 1;
        }
        if let Some(v) = self.subscribed_to {
            my_size += 1 + 1;
        }
        if let Some(v) = self.sort_as.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(6, &v);
        }
        if let Some(v) = self.app_type {
            my_size += ::steam_vent_proto_common::protobuf::rt::int32_size(7, v.value());
        }
        if let Some(v) = self.mru_index {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(13, v);
        }
        if let Some(v) = self.rt_recent_activity_time {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(14, v);
        }
        if let Some(v) = self.minutes_playtime_forever {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(16, v);
        }
        if let Some(v) = self.minutes_playtime_last_two_weeks {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(17, v);
        }
        if let Some(v) = self.rt_last_time_played {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(18, v);
        }
        for value in &self.store_tag {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(19, *value);
        };
        for value in &self.store_category {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(23, *value);
        };
        if let Some(v) = self.rt_original_release_date {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(25, v);
        }
        if let Some(v) = self.rt_steam_release_date {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(26, v);
        }
        if let Some(v) = self.icon_hash.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(27, &v);
        }
        if let Some(v) = self.xbox_controller_support {
            my_size += ::steam_vent_proto_common::protobuf::rt::int32_size(31, v.value());
        }
        if let Some(v) = self.vr_supported {
            my_size += 2 + 1;
        }
        if let Some(v) = self.metacritic_score {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(36, v);
        }
        if let Some(v) = self.size_on_disk {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint64_size(37, v);
        }
        if let Some(v) = self.third_party_mod {
            my_size += 2 + 1;
        }
        if let Some(v) = self.icon_data.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(39, &v);
        }
        if let Some(v) = self.icon_data_format.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(40, &v);
        }
        if let Some(v) = self.gameid.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(41, &v);
        }
        if let Some(v) = self.library_capsule_filename.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(42, &v);
        }
        for value in &self.per_client_data {
            let len = value.compute_size();
            my_size += 2 + ::steam_vent_proto_common::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        if let Some(v) = self.most_available_clientid {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint64_size(44, v);
        }
        if let Some(v) = self.selected_clientid {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint64_size(45, v);
        }
        if let Some(v) = self.rt_store_asset_mtime {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(46, v);
        }
        if let Some(v) = self.rt_custom_image_mtime {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(47, v);
        }
        if let Some(v) = self.optional_parent_app_id {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(48, v);
        }
        if let Some(v) = self.owner_account_id {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(49, v);
        }
        if let Some(v) = self.review_score_with_bombs {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(53, v);
        }
        if let Some(v) = self.review_percentage_with_bombs {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(54, v);
        }
        if let Some(v) = self.review_score_without_bombs {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(55, v);
        }
        if let Some(v) = self.review_percentage_without_bombs {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(56, v);
        }
        if let Some(v) = self.library_id.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(57, &v);
        }
        if let Some(v) = self.vr_only {
            my_size += 2 + 1;
        }
        if let Some(v) = self.mastersub_appid {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(59, v);
        }
        if let Some(v) = self.mastersub_includedwith_logo.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(60, &v);
        }
        if let Some(v) = self.site_license_site_name.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(62, &v);
        }
        if let Some(v) = self.shortcut_override_appid {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(63, v);
        }
        if let Some(v) = self.rt_last_time_locally_played {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(65, v);
        }
        if let Some(v) = self.rt_purchased_time {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(66, v);
        }
        if let Some(v) = self.header_filename.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(67, &v);
        }
        if let Some(v) = self.local_cache_version {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(68, v);
        }
        if let Some(v) = self.number_of_copies {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(72, v);
        }
        if let Some(v) = self.steam_hw_compat_category_packed {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(73, v);
        }
        if let Some(v) = self.album_cover_hash.as_ref() {
            my_size += ::steam_vent_proto_common::protobuf::rt::string_size(74, &v);
        }
        if let Some(v) = self.display_name_elanguage {
            my_size += ::steam_vent_proto_common::protobuf::rt::int32_size(75, v);
        }
        if let Some(v) = self.has_custom_sort_as {
            my_size += 2 + 1;
        }
        my_size += ::steam_vent_proto_common::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 ::steam_vent_proto_common::protobuf::CodedOutputStream<'_>) -> ::steam_vent_proto_common::protobuf::Result<()> {
        if let Some(v) = self.appid {
            os.write_uint32(1, v)?;
        }
        if let Some(v) = self.display_name.as_ref() {
            os.write_string(2, v)?;
        }
        if let Some(v) = self.visible_in_game_list {
            os.write_bool(4, v)?;
        }
        if let Some(v) = self.subscribed_to {
            os.write_bool(5, v)?;
        }
        if let Some(v) = self.sort_as.as_ref() {
            os.write_string(6, v)?;
        }
        if let Some(v) = self.app_type {
            os.write_enum(7, ::steam_vent_proto_common::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.mru_index {
            os.write_uint32(13, v)?;
        }
        if let Some(v) = self.rt_recent_activity_time {
            os.write_uint32(14, v)?;
        }
        if let Some(v) = self.minutes_playtime_forever {
            os.write_uint32(16, v)?;
        }
        if let Some(v) = self.minutes_playtime_last_two_weeks {
            os.write_uint32(17, v)?;
        }
        if let Some(v) = self.rt_last_time_played {
            os.write_uint32(18, v)?;
        }
        for v in &self.store_tag {
            os.write_uint32(19, *v)?;
        };
        for v in &self.store_category {
            os.write_uint32(23, *v)?;
        };
        if let Some(v) = self.rt_original_release_date {
            os.write_uint32(25, v)?;
        }
        if let Some(v) = self.rt_steam_release_date {
            os.write_uint32(26, v)?;
        }
        if let Some(v) = self.icon_hash.as_ref() {
            os.write_string(27, v)?;
        }
        if let Some(v) = self.xbox_controller_support {
            os.write_enum(31, ::steam_vent_proto_common::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.vr_supported {
            os.write_bool(32, v)?;
        }
        if let Some(v) = self.metacritic_score {
            os.write_uint32(36, v)?;
        }
        if let Some(v) = self.size_on_disk {
            os.write_uint64(37, v)?;
        }
        if let Some(v) = self.third_party_mod {
            os.write_bool(38, v)?;
        }
        if let Some(v) = self.icon_data.as_ref() {
            os.write_string(39, v)?;
        }
        if let Some(v) = self.icon_data_format.as_ref() {
            os.write_string(40, v)?;
        }
        if let Some(v) = self.gameid.as_ref() {
            os.write_string(41, v)?;
        }
        if let Some(v) = self.library_capsule_filename.as_ref() {
            os.write_string(42, v)?;
        }
        for v in &self.per_client_data {
            ::steam_vent_proto_common::protobuf::rt::write_message_field_with_cached_size(43, v, os)?;
        };
        if let Some(v) = self.most_available_clientid {
            os.write_uint64(44, v)?;
        }
        if let Some(v) = self.selected_clientid {
            os.write_uint64(45, v)?;
        }
        if let Some(v) = self.rt_store_asset_mtime {
            os.write_uint32(46, v)?;
        }
        if let Some(v) = self.rt_custom_image_mtime {
            os.write_uint32(47, v)?;
        }
        if let Some(v) = self.optional_parent_app_id {
            os.write_uint32(48, v)?;
        }
        if let Some(v) = self.owner_account_id {
            os.write_uint32(49, v)?;
        }
        if let Some(v) = self.review_score_with_bombs {
            os.write_uint32(53, v)?;
        }
        if let Some(v) = self.review_percentage_with_bombs {
            os.write_uint32(54, v)?;
        }
        if let Some(v) = self.review_score_without_bombs {
            os.write_uint32(55, v)?;
        }
        if let Some(v) = self.review_percentage_without_bombs {
            os.write_uint32(56, v)?;
        }
        if let Some(v) = self.library_id.as_ref() {
            os.write_string(57, v)?;
        }
        if let Some(v) = self.vr_only {
            os.write_bool(58, v)?;
        }
        if let Some(v) = self.mastersub_appid {
            os.write_uint32(59, v)?;
        }
        if let Some(v) = self.mastersub_includedwith_logo.as_ref() {
            os.write_string(60, v)?;
        }
        if let Some(v) = self.site_license_site_name.as_ref() {
            os.write_string(62, v)?;
        }
        if let Some(v) = self.shortcut_override_appid {
            os.write_uint32(63, v)?;
        }
        if let Some(v) = self.rt_last_time_locally_played {
            os.write_uint32(65, v)?;
        }
        if let Some(v) = self.rt_purchased_time {
            os.write_uint32(66, v)?;
        }
        if let Some(v) = self.header_filename.as_ref() {
            os.write_string(67, v)?;
        }
        if let Some(v) = self.local_cache_version {
            os.write_uint32(68, v)?;
        }
        if let Some(v) = self.number_of_copies {
            os.write_uint32(72, v)?;
        }
        if let Some(v) = self.steam_hw_compat_category_packed {
            os.write_uint32(73, v)?;
        }
        if let Some(v) = self.album_cover_hash.as_ref() {
            os.write_string(74, v)?;
        }
        if let Some(v) = self.display_name_elanguage {
            os.write_int32(75, v)?;
        }
        if let Some(v) = self.has_custom_sort_as {
            os.write_bool(76, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

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

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

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

    fn clear(&mut self) {
        self.appid = ::std::option::Option::None;
        self.display_name = ::std::option::Option::None;
        self.visible_in_game_list = ::std::option::Option::None;
        self.subscribed_to = ::std::option::Option::None;
        self.sort_as = ::std::option::Option::None;
        self.app_type = ::std::option::Option::None;
        self.mru_index = ::std::option::Option::None;
        self.rt_recent_activity_time = ::std::option::Option::None;
        self.minutes_playtime_forever = ::std::option::Option::None;
        self.minutes_playtime_last_two_weeks = ::std::option::Option::None;
        self.rt_last_time_played = ::std::option::Option::None;
        self.store_tag.clear();
        self.store_category.clear();
        self.rt_original_release_date = ::std::option::Option::None;
        self.rt_steam_release_date = ::std::option::Option::None;
        self.icon_hash = ::std::option::Option::None;
        self.xbox_controller_support = ::std::option::Option::None;
        self.vr_supported = ::std::option::Option::None;
        self.metacritic_score = ::std::option::Option::None;
        self.size_on_disk = ::std::option::Option::None;
        self.third_party_mod = ::std::option::Option::None;
        self.icon_data = ::std::option::Option::None;
        self.icon_data_format = ::std::option::Option::None;
        self.gameid = ::std::option::Option::None;
        self.library_capsule_filename = ::std::option::Option::None;
        self.per_client_data.clear();
        self.most_available_clientid = ::std::option::Option::None;
        self.selected_clientid = ::std::option::Option::None;
        self.rt_store_asset_mtime = ::std::option::Option::None;
        self.rt_custom_image_mtime = ::std::option::Option::None;
        self.optional_parent_app_id = ::std::option::Option::None;
        self.owner_account_id = ::std::option::Option::None;
        self.review_score_with_bombs = ::std::option::Option::None;
        self.review_percentage_with_bombs = ::std::option::Option::None;
        self.review_score_without_bombs = ::std::option::Option::None;
        self.review_percentage_without_bombs = ::std::option::Option::None;
        self.library_id = ::std::option::Option::None;
        self.vr_only = ::std::option::Option::None;
        self.mastersub_appid = ::std::option::Option::None;
        self.mastersub_includedwith_logo = ::std::option::Option::None;
        self.site_license_site_name = ::std::option::Option::None;
        self.shortcut_override_appid = ::std::option::Option::None;
        self.rt_last_time_locally_played = ::std::option::Option::None;
        self.rt_purchased_time = ::std::option::Option::None;
        self.header_filename = ::std::option::Option::None;
        self.local_cache_version = ::std::option::Option::None;
        self.number_of_copies = ::std::option::Option::None;
        self.steam_hw_compat_category_packed = ::std::option::Option::None;
        self.album_cover_hash = ::std::option::Option::None;
        self.display_name_elanguage = ::std::option::Option::None;
        self.has_custom_sort_as = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static CAppOverview {
        static instance: CAppOverview = CAppOverview {
            appid: ::std::option::Option::None,
            display_name: ::std::option::Option::None,
            visible_in_game_list: ::std::option::Option::None,
            subscribed_to: ::std::option::Option::None,
            sort_as: ::std::option::Option::None,
            app_type: ::std::option::Option::None,
            mru_index: ::std::option::Option::None,
            rt_recent_activity_time: ::std::option::Option::None,
            minutes_playtime_forever: ::std::option::Option::None,
            minutes_playtime_last_two_weeks: ::std::option::Option::None,
            rt_last_time_played: ::std::option::Option::None,
            store_tag: ::std::vec::Vec::new(),
            store_category: ::std::vec::Vec::new(),
            rt_original_release_date: ::std::option::Option::None,
            rt_steam_release_date: ::std::option::Option::None,
            icon_hash: ::std::option::Option::None,
            xbox_controller_support: ::std::option::Option::None,
            vr_supported: ::std::option::Option::None,
            metacritic_score: ::std::option::Option::None,
            size_on_disk: ::std::option::Option::None,
            third_party_mod: ::std::option::Option::None,
            icon_data: ::std::option::Option::None,
            icon_data_format: ::std::option::Option::None,
            gameid: ::std::option::Option::None,
            library_capsule_filename: ::std::option::Option::None,
            per_client_data: ::std::vec::Vec::new(),
            most_available_clientid: ::std::option::Option::None,
            selected_clientid: ::std::option::Option::None,
            rt_store_asset_mtime: ::std::option::Option::None,
            rt_custom_image_mtime: ::std::option::Option::None,
            optional_parent_app_id: ::std::option::Option::None,
            owner_account_id: ::std::option::Option::None,
            review_score_with_bombs: ::std::option::Option::None,
            review_percentage_with_bombs: ::std::option::Option::None,
            review_score_without_bombs: ::std::option::Option::None,
            review_percentage_without_bombs: ::std::option::Option::None,
            library_id: ::std::option::Option::None,
            vr_only: ::std::option::Option::None,
            mastersub_appid: ::std::option::Option::None,
            mastersub_includedwith_logo: ::std::option::Option::None,
            site_license_site_name: ::std::option::Option::None,
            shortcut_override_appid: ::std::option::Option::None,
            rt_last_time_locally_played: ::std::option::Option::None,
            rt_purchased_time: ::std::option::Option::None,
            header_filename: ::std::option::Option::None,
            local_cache_version: ::std::option::Option::None,
            number_of_copies: ::std::option::Option::None,
            steam_hw_compat_category_packed: ::std::option::Option::None,
            album_cover_hash: ::std::option::Option::None,
            display_name_elanguage: ::std::option::Option::None,
            has_custom_sort_as: ::std::option::Option::None,
            special_fields: ::steam_vent_proto_common::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

// @@protoc_insertion_point(message:CAppOverview_Change)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct CAppOverview_Change {
    // message fields
    // @@protoc_insertion_point(field:CAppOverview_Change.app_overview)
    pub app_overview: ::std::vec::Vec<CAppOverview>,
    // @@protoc_insertion_point(field:CAppOverview_Change.removed_appid)
    pub removed_appid: ::std::vec::Vec<u32>,
    // @@protoc_insertion_point(field:CAppOverview_Change.full_update)
    pub full_update: ::std::option::Option<bool>,
    // @@protoc_insertion_point(field:CAppOverview_Change.update_complete)
    pub update_complete: ::std::option::Option<bool>,
    // special fields
    // @@protoc_insertion_point(special_field:CAppOverview_Change.special_fields)
    pub special_fields: ::steam_vent_proto_common::protobuf::SpecialFields,
}

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

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

    // optional bool full_update = 3;

    pub fn full_update(&self) -> bool {
        self.full_update.unwrap_or(false)
    }

    pub fn clear_full_update(&mut self) {
        self.full_update = ::std::option::Option::None;
    }

    pub fn has_full_update(&self) -> bool {
        self.full_update.is_some()
    }

    // Param is passed by value, moved
    pub fn set_full_update(&mut self, v: bool) {
        self.full_update = ::std::option::Option::Some(v);
    }

    // optional bool update_complete = 4;

    pub fn update_complete(&self) -> bool {
        self.update_complete.unwrap_or(false)
    }

    pub fn clear_update_complete(&mut self) {
        self.update_complete = ::std::option::Option::None;
    }

    pub fn has_update_complete(&self) -> bool {
        self.update_complete.is_some()
    }

    // Param is passed by value, moved
    pub fn set_update_complete(&mut self, v: bool) {
        self.update_complete = ::std::option::Option::Some(v);
    }
}

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

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

    fn merge_from(&mut self, is: &mut ::steam_vent_proto_common::protobuf::CodedInputStream<'_>) -> ::steam_vent_proto_common::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.app_overview.push(is.read_message()?);
                },
                18 => {
                    is.read_repeated_packed_uint32_into(&mut self.removed_appid)?;
                },
                16 => {
                    self.removed_appid.push(is.read_uint32()?);
                },
                24 => {
                    self.full_update = ::std::option::Option::Some(is.read_bool()?);
                },
                32 => {
                    self.update_complete = ::std::option::Option::Some(is.read_bool()?);
                },
                tag => {
                    ::steam_vent_proto_common::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;
        for value in &self.app_overview {
            let len = value.compute_size();
            my_size += 1 + ::steam_vent_proto_common::protobuf::rt::compute_raw_varint64_size(len) + len;
        };
        for value in &self.removed_appid {
            my_size += ::steam_vent_proto_common::protobuf::rt::uint32_size(2, *value);
        };
        if let Some(v) = self.full_update {
            my_size += 1 + 1;
        }
        if let Some(v) = self.update_complete {
            my_size += 1 + 1;
        }
        my_size += ::steam_vent_proto_common::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 ::steam_vent_proto_common::protobuf::CodedOutputStream<'_>) -> ::steam_vent_proto_common::protobuf::Result<()> {
        for v in &self.app_overview {
            ::steam_vent_proto_common::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
        };
        for v in &self.removed_appid {
            os.write_uint32(2, *v)?;
        };
        if let Some(v) = self.full_update {
            os.write_bool(3, v)?;
        }
        if let Some(v) = self.update_complete {
            os.write_bool(4, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

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

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

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

    fn clear(&mut self) {
        self.app_overview.clear();
        self.removed_appid.clear();
        self.full_update = ::std::option::Option::None;
        self.update_complete = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static CAppOverview_Change {
        static instance: CAppOverview_Change = CAppOverview_Change {
            app_overview: ::std::vec::Vec::new(),
            removed_appid: ::std::vec::Vec::new(),
            full_update: ::std::option::Option::None,
            update_complete: ::std::option::Option::None,
            special_fields: ::steam_vent_proto_common::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:EDisplayStatus)
pub enum EDisplayStatus {
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusInvalid)
    k_EDisplayStatusInvalid = 0,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusLaunching)
    k_EDisplayStatusLaunching = 1,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUninstalling)
    k_EDisplayStatusUninstalling = 2,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusInstalling)
    k_EDisplayStatusInstalling = 3,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusRunning)
    k_EDisplayStatusRunning = 4,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusValidating)
    k_EDisplayStatusValidating = 5,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUpdating)
    k_EDisplayStatusUpdating = 6,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusDownloading)
    k_EDisplayStatusDownloading = 7,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusSynchronizing)
    k_EDisplayStatusSynchronizing = 8,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusReadyToInstall)
    k_EDisplayStatusReadyToInstall = 9,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusReadyToPreload)
    k_EDisplayStatusReadyToPreload = 10,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusReadyToLaunch)
    k_EDisplayStatusReadyToLaunch = 11,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusRegionRestricted)
    k_EDisplayStatusRegionRestricted = 12,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusPresaleOnly)
    k_EDisplayStatusPresaleOnly = 13,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusInvalidPlatform)
    k_EDisplayStatusInvalidPlatform = 14,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusPreloadComplete)
    k_EDisplayStatusPreloadComplete = 16,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusBorrowerLocked)
    k_EDisplayStatusBorrowerLocked = 17,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUpdatePaused)
    k_EDisplayStatusUpdatePaused = 18,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUpdateQueued)
    k_EDisplayStatusUpdateQueued = 19,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUpdateRequired)
    k_EDisplayStatusUpdateRequired = 20,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUpdateDisabled)
    k_EDisplayStatusUpdateDisabled = 21,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusDownloadPaused)
    k_EDisplayStatusDownloadPaused = 22,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusDownloadQueued)
    k_EDisplayStatusDownloadQueued = 23,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusDownloadRequired)
    k_EDisplayStatusDownloadRequired = 24,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusDownloadDisabled)
    k_EDisplayStatusDownloadDisabled = 25,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusLicensePending)
    k_EDisplayStatusLicensePending = 26,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusLicenseExpired)
    k_EDisplayStatusLicenseExpired = 27,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusAvailForFree)
    k_EDisplayStatusAvailForFree = 28,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusAvailToBorrow)
    k_EDisplayStatusAvailToBorrow = 29,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusAvailGuestPass)
    k_EDisplayStatusAvailGuestPass = 30,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusPurchase)
    k_EDisplayStatusPurchase = 31,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUnavailable)
    k_EDisplayStatusUnavailable = 32,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusNotLaunchable)
    k_EDisplayStatusNotLaunchable = 33,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusCloudError)
    k_EDisplayStatusCloudError = 34,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusCloudOutOfDate)
    k_EDisplayStatusCloudOutOfDate = 35,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusTerminating)
    k_EDisplayStatusTerminating = 36,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusOwnerLocked)
    k_EDisplayStatusOwnerLocked = 37,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusDownloadFailed)
    k_EDisplayStatusDownloadFailed = 38,
    // @@protoc_insertion_point(enum_value:EDisplayStatus.k_EDisplayStatusUpdateFailed)
    k_EDisplayStatusUpdateFailed = 39,
}

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

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

    fn from_i32(value: i32) -> ::std::option::Option<EDisplayStatus> {
        match value {
            0 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInvalid),
            1 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLaunching),
            2 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUninstalling),
            3 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInstalling),
            4 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusRunning),
            5 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusValidating),
            6 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdating),
            7 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloading),
            8 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusSynchronizing),
            9 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToInstall),
            10 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToPreload),
            11 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToLaunch),
            12 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusRegionRestricted),
            13 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPresaleOnly),
            14 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInvalidPlatform),
            16 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPreloadComplete),
            17 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusBorrowerLocked),
            18 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdatePaused),
            19 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateQueued),
            20 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateRequired),
            21 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateDisabled),
            22 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadPaused),
            23 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadQueued),
            24 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadRequired),
            25 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadDisabled),
            26 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLicensePending),
            27 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLicenseExpired),
            28 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailForFree),
            29 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailToBorrow),
            30 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailGuestPass),
            31 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPurchase),
            32 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUnavailable),
            33 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusNotLaunchable),
            34 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusCloudError),
            35 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusCloudOutOfDate),
            36 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusTerminating),
            37 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusOwnerLocked),
            38 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadFailed),
            39 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateFailed),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<EDisplayStatus> {
        match str {
            "k_EDisplayStatusInvalid" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInvalid),
            "k_EDisplayStatusLaunching" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLaunching),
            "k_EDisplayStatusUninstalling" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUninstalling),
            "k_EDisplayStatusInstalling" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInstalling),
            "k_EDisplayStatusRunning" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusRunning),
            "k_EDisplayStatusValidating" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusValidating),
            "k_EDisplayStatusUpdating" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdating),
            "k_EDisplayStatusDownloading" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloading),
            "k_EDisplayStatusSynchronizing" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusSynchronizing),
            "k_EDisplayStatusReadyToInstall" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToInstall),
            "k_EDisplayStatusReadyToPreload" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToPreload),
            "k_EDisplayStatusReadyToLaunch" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToLaunch),
            "k_EDisplayStatusRegionRestricted" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusRegionRestricted),
            "k_EDisplayStatusPresaleOnly" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPresaleOnly),
            "k_EDisplayStatusInvalidPlatform" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInvalidPlatform),
            "k_EDisplayStatusPreloadComplete" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPreloadComplete),
            "k_EDisplayStatusBorrowerLocked" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusBorrowerLocked),
            "k_EDisplayStatusUpdatePaused" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdatePaused),
            "k_EDisplayStatusUpdateQueued" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateQueued),
            "k_EDisplayStatusUpdateRequired" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateRequired),
            "k_EDisplayStatusUpdateDisabled" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateDisabled),
            "k_EDisplayStatusDownloadPaused" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadPaused),
            "k_EDisplayStatusDownloadQueued" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadQueued),
            "k_EDisplayStatusDownloadRequired" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadRequired),
            "k_EDisplayStatusDownloadDisabled" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadDisabled),
            "k_EDisplayStatusLicensePending" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLicensePending),
            "k_EDisplayStatusLicenseExpired" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLicenseExpired),
            "k_EDisplayStatusAvailForFree" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailForFree),
            "k_EDisplayStatusAvailToBorrow" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailToBorrow),
            "k_EDisplayStatusAvailGuestPass" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailGuestPass),
            "k_EDisplayStatusPurchase" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPurchase),
            "k_EDisplayStatusUnavailable" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUnavailable),
            "k_EDisplayStatusNotLaunchable" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusNotLaunchable),
            "k_EDisplayStatusCloudError" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusCloudError),
            "k_EDisplayStatusCloudOutOfDate" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusCloudOutOfDate),
            "k_EDisplayStatusTerminating" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusTerminating),
            "k_EDisplayStatusOwnerLocked" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusOwnerLocked),
            "k_EDisplayStatusDownloadFailed" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadFailed),
            "k_EDisplayStatusUpdateFailed" => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateFailed),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [EDisplayStatus] = &[
        EDisplayStatus::k_EDisplayStatusInvalid,
        EDisplayStatus::k_EDisplayStatusLaunching,
        EDisplayStatus::k_EDisplayStatusUninstalling,
        EDisplayStatus::k_EDisplayStatusInstalling,
        EDisplayStatus::k_EDisplayStatusRunning,
        EDisplayStatus::k_EDisplayStatusValidating,
        EDisplayStatus::k_EDisplayStatusUpdating,
        EDisplayStatus::k_EDisplayStatusDownloading,
        EDisplayStatus::k_EDisplayStatusSynchronizing,
        EDisplayStatus::k_EDisplayStatusReadyToInstall,
        EDisplayStatus::k_EDisplayStatusReadyToPreload,
        EDisplayStatus::k_EDisplayStatusReadyToLaunch,
        EDisplayStatus::k_EDisplayStatusRegionRestricted,
        EDisplayStatus::k_EDisplayStatusPresaleOnly,
        EDisplayStatus::k_EDisplayStatusInvalidPlatform,
        EDisplayStatus::k_EDisplayStatusPreloadComplete,
        EDisplayStatus::k_EDisplayStatusBorrowerLocked,
        EDisplayStatus::k_EDisplayStatusUpdatePaused,
        EDisplayStatus::k_EDisplayStatusUpdateQueued,
        EDisplayStatus::k_EDisplayStatusUpdateRequired,
        EDisplayStatus::k_EDisplayStatusUpdateDisabled,
        EDisplayStatus::k_EDisplayStatusDownloadPaused,
        EDisplayStatus::k_EDisplayStatusDownloadQueued,
        EDisplayStatus::k_EDisplayStatusDownloadRequired,
        EDisplayStatus::k_EDisplayStatusDownloadDisabled,
        EDisplayStatus::k_EDisplayStatusLicensePending,
        EDisplayStatus::k_EDisplayStatusLicenseExpired,
        EDisplayStatus::k_EDisplayStatusAvailForFree,
        EDisplayStatus::k_EDisplayStatusAvailToBorrow,
        EDisplayStatus::k_EDisplayStatusAvailGuestPass,
        EDisplayStatus::k_EDisplayStatusPurchase,
        EDisplayStatus::k_EDisplayStatusUnavailable,
        EDisplayStatus::k_EDisplayStatusNotLaunchable,
        EDisplayStatus::k_EDisplayStatusCloudError,
        EDisplayStatus::k_EDisplayStatusCloudOutOfDate,
        EDisplayStatus::k_EDisplayStatusTerminating,
        EDisplayStatus::k_EDisplayStatusOwnerLocked,
        EDisplayStatus::k_EDisplayStatusDownloadFailed,
        EDisplayStatus::k_EDisplayStatusUpdateFailed,
    ];
}

impl ::std::default::Default for EDisplayStatus {
    fn default() -> Self {
        EDisplayStatus::k_EDisplayStatusInvalid
    }
}


#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:EAppCloudStatus)
pub enum EAppCloudStatus {
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusInvalid)
    k_EAppCloudStatusInvalid = 0,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusDisabled)
    k_EAppCloudStatusDisabled = 1,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusUnknown)
    k_EAppCloudStatusUnknown = 2,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusSynchronized)
    k_EAppCloudStatusSynchronized = 3,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusChecking)
    k_EAppCloudStatusChecking = 4,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusOutOfSync)
    k_EAppCloudStatusOutOfSync = 5,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusUploading)
    k_EAppCloudStatusUploading = 6,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusDownloading)
    k_EAppCloudStatusDownloading = 7,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusSyncFailed)
    k_EAppCloudStatusSyncFailed = 8,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusConflict)
    k_EAppCloudStatusConflict = 9,
    // @@protoc_insertion_point(enum_value:EAppCloudStatus.k_EAppCloudStatusPendingElsewhere)
    k_EAppCloudStatusPendingElsewhere = 10,
}

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

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

    fn from_i32(value: i32) -> ::std::option::Option<EAppCloudStatus> {
        match value {
            0 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusInvalid),
            1 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusDisabled),
            2 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusUnknown),
            3 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusSynchronized),
            4 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusChecking),
            5 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusOutOfSync),
            6 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusUploading),
            7 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusDownloading),
            8 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusSyncFailed),
            9 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusConflict),
            10 => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusPendingElsewhere),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<EAppCloudStatus> {
        match str {
            "k_EAppCloudStatusInvalid" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusInvalid),
            "k_EAppCloudStatusDisabled" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusDisabled),
            "k_EAppCloudStatusUnknown" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusUnknown),
            "k_EAppCloudStatusSynchronized" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusSynchronized),
            "k_EAppCloudStatusChecking" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusChecking),
            "k_EAppCloudStatusOutOfSync" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusOutOfSync),
            "k_EAppCloudStatusUploading" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusUploading),
            "k_EAppCloudStatusDownloading" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusDownloading),
            "k_EAppCloudStatusSyncFailed" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusSyncFailed),
            "k_EAppCloudStatusConflict" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusConflict),
            "k_EAppCloudStatusPendingElsewhere" => ::std::option::Option::Some(EAppCloudStatus::k_EAppCloudStatusPendingElsewhere),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [EAppCloudStatus] = &[
        EAppCloudStatus::k_EAppCloudStatusInvalid,
        EAppCloudStatus::k_EAppCloudStatusDisabled,
        EAppCloudStatus::k_EAppCloudStatusUnknown,
        EAppCloudStatus::k_EAppCloudStatusSynchronized,
        EAppCloudStatus::k_EAppCloudStatusChecking,
        EAppCloudStatus::k_EAppCloudStatusOutOfSync,
        EAppCloudStatus::k_EAppCloudStatusUploading,
        EAppCloudStatus::k_EAppCloudStatusDownloading,
        EAppCloudStatus::k_EAppCloudStatusSyncFailed,
        EAppCloudStatus::k_EAppCloudStatusConflict,
        EAppCloudStatus::k_EAppCloudStatusPendingElsewhere,
    ];
}

impl ::std::default::Default for EAppCloudStatus {
    fn default() -> Self {
        EAppCloudStatus::k_EAppCloudStatusInvalid
    }
}


#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:EAppControllerSupportLevel)
pub enum EAppControllerSupportLevel {
    // @@protoc_insertion_point(enum_value:EAppControllerSupportLevel.k_EAppControllerSupportLevelNone)
    k_EAppControllerSupportLevelNone = 0,
    // @@protoc_insertion_point(enum_value:EAppControllerSupportLevel.k_EAppControllerSupportLevelPartial)
    k_EAppControllerSupportLevelPartial = 1,
    // @@protoc_insertion_point(enum_value:EAppControllerSupportLevel.k_EAppControllerSupportLevelFull)
    k_EAppControllerSupportLevelFull = 2,
}

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

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

    fn from_i32(value: i32) -> ::std::option::Option<EAppControllerSupportLevel> {
        match value {
            0 => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelNone),
            1 => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelPartial),
            2 => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelFull),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<EAppControllerSupportLevel> {
        match str {
            "k_EAppControllerSupportLevelNone" => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelNone),
            "k_EAppControllerSupportLevelPartial" => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelPartial),
            "k_EAppControllerSupportLevelFull" => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelFull),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [EAppControllerSupportLevel] = &[
        EAppControllerSupportLevel::k_EAppControllerSupportLevelNone,
        EAppControllerSupportLevel::k_EAppControllerSupportLevelPartial,
        EAppControllerSupportLevel::k_EAppControllerSupportLevelFull,
    ];
}

impl ::std::default::Default for EAppControllerSupportLevel {
    fn default() -> Self {
        EAppControllerSupportLevel::k_EAppControllerSupportLevelNone
    }
}


#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:EAppGamepadGyroTrackpadSupportLevel)
pub enum EAppGamepadGyroTrackpadSupportLevel {
    // @@protoc_insertion_point(enum_value:EAppGamepadGyroTrackpadSupportLevel.k_EAppGamepadGyroTrackpadSupportLevelUnknown)
    k_EAppGamepadGyroTrackpadSupportLevelUnknown = -1,
    // @@protoc_insertion_point(enum_value:EAppGamepadGyroTrackpadSupportLevel.k_EAppGamepadGyroTrackpadSupportLevelNoGamepad)
    k_EAppGamepadGyroTrackpadSupportLevelNoGamepad = 0,
    // @@protoc_insertion_point(enum_value:EAppGamepadGyroTrackpadSupportLevel.k_EAppGamepadGyroTrackpadSupportLevelGamepad)
    k_EAppGamepadGyroTrackpadSupportLevelGamepad = 1,
    // @@protoc_insertion_point(enum_value:EAppGamepadGyroTrackpadSupportLevel.k_EAppGamepadGyroTrackpadSupportLevelSimultaneous)
    k_EAppGamepadGyroTrackpadSupportLevelSimultaneous = 2,
}

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

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

    fn from_i32(value: i32) -> ::std::option::Option<EAppGamepadGyroTrackpadSupportLevel> {
        match value {
            -1 => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelUnknown),
            0 => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelNoGamepad),
            1 => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelGamepad),
            2 => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelSimultaneous),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<EAppGamepadGyroTrackpadSupportLevel> {
        match str {
            "k_EAppGamepadGyroTrackpadSupportLevelUnknown" => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelUnknown),
            "k_EAppGamepadGyroTrackpadSupportLevelNoGamepad" => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelNoGamepad),
            "k_EAppGamepadGyroTrackpadSupportLevelGamepad" => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelGamepad),
            "k_EAppGamepadGyroTrackpadSupportLevelSimultaneous" => ::std::option::Option::Some(EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelSimultaneous),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [EAppGamepadGyroTrackpadSupportLevel] = &[
        EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelUnknown,
        EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelNoGamepad,
        EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelGamepad,
        EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelSimultaneous,
    ];
}

// Note, `Default` is implemented although default value is not 0
impl ::std::default::Default for EAppGamepadGyroTrackpadSupportLevel {
    fn default() -> Self {
        EAppGamepadGyroTrackpadSupportLevel::k_EAppGamepadGyroTrackpadSupportLevelUnknown
    }
}


#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:EAppHDRSupport)
pub enum EAppHDRSupport {
    // @@protoc_insertion_point(enum_value:EAppHDRSupport.k_EHDRSupport_Unknown)
    k_EHDRSupport_Unknown = 0,
    // @@protoc_insertion_point(enum_value:EAppHDRSupport.k_EHDRSupport_SDR)
    k_EHDRSupport_SDR = 1,
    // @@protoc_insertion_point(enum_value:EAppHDRSupport.k_EHDRSupport_HDR)
    k_EHDRSupport_HDR = 2,
    // @@protoc_insertion_point(enum_value:EAppHDRSupport.k_EHDRSupport_HDR_Broken)
    k_EHDRSupport_HDR_Broken = 3,
    // @@protoc_insertion_point(enum_value:EAppHDRSupport.k_EHDRSupport_HDR_RequiresUserAction)
    k_EHDRSupport_HDR_RequiresUserAction = 4,
}

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

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

    fn from_i32(value: i32) -> ::std::option::Option<EAppHDRSupport> {
        match value {
            0 => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_Unknown),
            1 => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_SDR),
            2 => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_HDR),
            3 => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_HDR_Broken),
            4 => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_HDR_RequiresUserAction),
            _ => ::std::option::Option::None
        }
    }

    fn from_str(str: &str) -> ::std::option::Option<EAppHDRSupport> {
        match str {
            "k_EHDRSupport_Unknown" => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_Unknown),
            "k_EHDRSupport_SDR" => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_SDR),
            "k_EHDRSupport_HDR" => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_HDR),
            "k_EHDRSupport_HDR_Broken" => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_HDR_Broken),
            "k_EHDRSupport_HDR_RequiresUserAction" => ::std::option::Option::Some(EAppHDRSupport::k_EHDRSupport_HDR_RequiresUserAction),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [EAppHDRSupport] = &[
        EAppHDRSupport::k_EHDRSupport_Unknown,
        EAppHDRSupport::k_EHDRSupport_SDR,
        EAppHDRSupport::k_EHDRSupport_HDR,
        EAppHDRSupport::k_EHDRSupport_HDR_Broken,
        EAppHDRSupport::k_EHDRSupport_HDR_RequiresUserAction,
    ];
}

impl ::std::default::Default for EAppHDRSupport {
    fn default() -> Self {
        EAppHDRSupport::k_EHDRSupport_Unknown
    }
}



const _VENT_PROTO_VERSION_CHECK: () = ::steam_vent_proto_common::VERSION_0_5_0;

#[allow(unused_imports)]
use crate::enums::*;
impl ::steam_vent_proto_common::RpcMessage for CAppOverview_PerClientData {
    fn parse(reader: &mut dyn std::io::Read) -> ::steam_vent_proto_common::protobuf::Result<Self> {
        <Self as ::steam_vent_proto_common::protobuf::Message>::parse_from_reader(reader)
    }
    fn write(&self, writer: &mut dyn std::io::Write) -> ::steam_vent_proto_common::protobuf::Result<()> {
        use ::steam_vent_proto_common::protobuf::Message;
        self.write_to_writer(writer)
    }
    fn encode_size(&self) -> usize {
        use ::steam_vent_proto_common::protobuf::Message;
        self.compute_size() as usize
    }
}
impl ::steam_vent_proto_common::RpcMessage for CAppOverview {
    fn parse(reader: &mut dyn std::io::Read) -> ::steam_vent_proto_common::protobuf::Result<Self> {
        <Self as ::steam_vent_proto_common::protobuf::Message>::parse_from_reader(reader)
    }
    fn write(&self, writer: &mut dyn std::io::Write) -> ::steam_vent_proto_common::protobuf::Result<()> {
        use ::steam_vent_proto_common::protobuf::Message;
        self.write_to_writer(writer)
    }
    fn encode_size(&self) -> usize {
        use ::steam_vent_proto_common::protobuf::Message;
        self.compute_size() as usize
    }
}
impl ::steam_vent_proto_common::RpcMessage for CAppOverview_Change {
    fn parse(reader: &mut dyn std::io::Read) -> ::steam_vent_proto_common::protobuf::Result<Self> {
        <Self as ::steam_vent_proto_common::protobuf::Message>::parse_from_reader(reader)
    }
    fn write(&self, writer: &mut dyn std::io::Write) -> ::steam_vent_proto_common::protobuf::Result<()> {
        use ::steam_vent_proto_common::protobuf::Message;
        self.write_to_writer(writer)
    }
    fn encode_size(&self) -> usize {
        use ::steam_vent_proto_common::protobuf::Message;
        self.compute_size() as usize
    }
}
