google-cloud-rust-raw 0.14.0

A set of client libraries to interact with various Google Cloud Platform services
Documentation
// This file is generated by rust-protobuf 2.28.0. Do not edit
// @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(box_pointers)]
#![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_imports)]
#![allow(unused_results)]
//! Generated file from `google/api/service.proto`

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

#[derive(PartialEq,Clone,Default)]
pub struct Service {
    // message fields
    pub config_version: ::protobuf::SingularPtrField<::protobuf::well_known_types::UInt32Value>,
    pub name: ::std::string::String,
    pub id: ::std::string::String,
    pub title: ::std::string::String,
    pub producer_project_id: ::std::string::String,
    pub apis: ::protobuf::RepeatedField<::protobuf::well_known_types::Api>,
    pub types: ::protobuf::RepeatedField<::protobuf::well_known_types::Type>,
    pub enums: ::protobuf::RepeatedField<::protobuf::well_known_types::Enum>,
    pub documentation: ::protobuf::SingularPtrField<super::documentation::Documentation>,
    pub backend: ::protobuf::SingularPtrField<super::backend::Backend>,
    pub http: ::protobuf::SingularPtrField<super::http::Http>,
    pub quota: ::protobuf::SingularPtrField<super::quota::Quota>,
    pub authentication: ::protobuf::SingularPtrField<super::auth::Authentication>,
    pub context: ::protobuf::SingularPtrField<super::context::Context>,
    pub usage: ::protobuf::SingularPtrField<super::usage::Usage>,
    pub endpoints: ::protobuf::RepeatedField<super::endpoint::Endpoint>,
    pub control: ::protobuf::SingularPtrField<super::control::Control>,
    pub logs: ::protobuf::RepeatedField<super::log::LogDescriptor>,
    pub metrics: ::protobuf::RepeatedField<super::metric::MetricDescriptor>,
    pub monitored_resources: ::protobuf::RepeatedField<super::monitored_resource::MonitoredResourceDescriptor>,
    pub billing: ::protobuf::SingularPtrField<super::billing::Billing>,
    pub logging: ::protobuf::SingularPtrField<super::logging::Logging>,
    pub monitoring: ::protobuf::SingularPtrField<super::monitoring::Monitoring>,
    pub system_parameters: ::protobuf::SingularPtrField<super::system_parameter::SystemParameters>,
    pub source_info: ::protobuf::SingularPtrField<super::source_info::SourceInfo>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

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

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

    // .google.protobuf.UInt32Value config_version = 20;


    pub fn get_config_version(&self) -> &::protobuf::well_known_types::UInt32Value {
        self.config_version.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::UInt32Value as ::protobuf::Message>::default_instance())
    }
    pub fn clear_config_version(&mut self) {
        self.config_version.clear();
    }

    pub fn has_config_version(&self) -> bool {
        self.config_version.is_some()
    }

    // Param is passed by value, moved
    pub fn set_config_version(&mut self, v: ::protobuf::well_known_types::UInt32Value) {
        self.config_version = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_config_version(&mut self) -> &mut ::protobuf::well_known_types::UInt32Value {
        if self.config_version.is_none() {
            self.config_version.set_default();
        }
        self.config_version.as_mut().unwrap()
    }

    // Take field
    pub fn take_config_version(&mut self) -> ::protobuf::well_known_types::UInt32Value {
        self.config_version.take().unwrap_or_else(|| ::protobuf::well_known_types::UInt32Value::new())
    }

    // string name = 1;


    pub fn get_name(&self) -> &str {
        &self.name
    }
    pub fn clear_name(&mut self) {
        self.name.clear();
    }

    // Param is passed by value, moved
    pub fn set_name(&mut self, v: ::std::string::String) {
        self.name = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_name(&mut self) -> &mut ::std::string::String {
        &mut self.name
    }

    // Take field
    pub fn take_name(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.name, ::std::string::String::new())
    }

    // string id = 33;


    pub fn get_id(&self) -> &str {
        &self.id
    }
    pub fn clear_id(&mut self) {
        self.id.clear();
    }

    // Param is passed by value, moved
    pub fn set_id(&mut self, v: ::std::string::String) {
        self.id = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_id(&mut self) -> &mut ::std::string::String {
        &mut self.id
    }

    // Take field
    pub fn take_id(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.id, ::std::string::String::new())
    }

    // string title = 2;


    pub fn get_title(&self) -> &str {
        &self.title
    }
    pub fn clear_title(&mut self) {
        self.title.clear();
    }

    // Param is passed by value, moved
    pub fn set_title(&mut self, v: ::std::string::String) {
        self.title = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_title(&mut self) -> &mut ::std::string::String {
        &mut self.title
    }

    // Take field
    pub fn take_title(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.title, ::std::string::String::new())
    }

    // string producer_project_id = 22;


    pub fn get_producer_project_id(&self) -> &str {
        &self.producer_project_id
    }
    pub fn clear_producer_project_id(&mut self) {
        self.producer_project_id.clear();
    }

    // Param is passed by value, moved
    pub fn set_producer_project_id(&mut self, v: ::std::string::String) {
        self.producer_project_id = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_producer_project_id(&mut self) -> &mut ::std::string::String {
        &mut self.producer_project_id
    }

    // Take field
    pub fn take_producer_project_id(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.producer_project_id, ::std::string::String::new())
    }

    // repeated .google.protobuf.Api apis = 3;


    pub fn get_apis(&self) -> &[::protobuf::well_known_types::Api] {
        &self.apis
    }
    pub fn clear_apis(&mut self) {
        self.apis.clear();
    }

    // Param is passed by value, moved
    pub fn set_apis(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::Api>) {
        self.apis = v;
    }

    // Mutable pointer to the field.
    pub fn mut_apis(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::Api> {
        &mut self.apis
    }

    // Take field
    pub fn take_apis(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::Api> {
        ::std::mem::replace(&mut self.apis, ::protobuf::RepeatedField::new())
    }

    // repeated .google.protobuf.Type types = 4;


    pub fn get_types(&self) -> &[::protobuf::well_known_types::Type] {
        &self.types
    }
    pub fn clear_types(&mut self) {
        self.types.clear();
    }

    // Param is passed by value, moved
    pub fn set_types(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::Type>) {
        self.types = v;
    }

    // Mutable pointer to the field.
    pub fn mut_types(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::Type> {
        &mut self.types
    }

    // Take field
    pub fn take_types(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::Type> {
        ::std::mem::replace(&mut self.types, ::protobuf::RepeatedField::new())
    }

    // repeated .google.protobuf.Enum enums = 5;


    pub fn get_enums(&self) -> &[::protobuf::well_known_types::Enum] {
        &self.enums
    }
    pub fn clear_enums(&mut self) {
        self.enums.clear();
    }

    // Param is passed by value, moved
    pub fn set_enums(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::Enum>) {
        self.enums = v;
    }

    // Mutable pointer to the field.
    pub fn mut_enums(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::Enum> {
        &mut self.enums
    }

    // Take field
    pub fn take_enums(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::Enum> {
        ::std::mem::replace(&mut self.enums, ::protobuf::RepeatedField::new())
    }

    // .google.api.Documentation documentation = 6;


    pub fn get_documentation(&self) -> &super::documentation::Documentation {
        self.documentation.as_ref().unwrap_or_else(|| <super::documentation::Documentation as ::protobuf::Message>::default_instance())
    }
    pub fn clear_documentation(&mut self) {
        self.documentation.clear();
    }

    pub fn has_documentation(&self) -> bool {
        self.documentation.is_some()
    }

    // Param is passed by value, moved
    pub fn set_documentation(&mut self, v: super::documentation::Documentation) {
        self.documentation = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_documentation(&mut self) -> &mut super::documentation::Documentation {
        if self.documentation.is_none() {
            self.documentation.set_default();
        }
        self.documentation.as_mut().unwrap()
    }

    // Take field
    pub fn take_documentation(&mut self) -> super::documentation::Documentation {
        self.documentation.take().unwrap_or_else(|| super::documentation::Documentation::new())
    }

    // .google.api.Backend backend = 8;


    pub fn get_backend(&self) -> &super::backend::Backend {
        self.backend.as_ref().unwrap_or_else(|| <super::backend::Backend as ::protobuf::Message>::default_instance())
    }
    pub fn clear_backend(&mut self) {
        self.backend.clear();
    }

    pub fn has_backend(&self) -> bool {
        self.backend.is_some()
    }

    // Param is passed by value, moved
    pub fn set_backend(&mut self, v: super::backend::Backend) {
        self.backend = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_backend(&mut self) -> &mut super::backend::Backend {
        if self.backend.is_none() {
            self.backend.set_default();
        }
        self.backend.as_mut().unwrap()
    }

    // Take field
    pub fn take_backend(&mut self) -> super::backend::Backend {
        self.backend.take().unwrap_or_else(|| super::backend::Backend::new())
    }

    // .google.api.Http http = 9;


    pub fn get_http(&self) -> &super::http::Http {
        self.http.as_ref().unwrap_or_else(|| <super::http::Http as ::protobuf::Message>::default_instance())
    }
    pub fn clear_http(&mut self) {
        self.http.clear();
    }

    pub fn has_http(&self) -> bool {
        self.http.is_some()
    }

    // Param is passed by value, moved
    pub fn set_http(&mut self, v: super::http::Http) {
        self.http = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_http(&mut self) -> &mut super::http::Http {
        if self.http.is_none() {
            self.http.set_default();
        }
        self.http.as_mut().unwrap()
    }

    // Take field
    pub fn take_http(&mut self) -> super::http::Http {
        self.http.take().unwrap_or_else(|| super::http::Http::new())
    }

    // .google.api.Quota quota = 10;


    pub fn get_quota(&self) -> &super::quota::Quota {
        self.quota.as_ref().unwrap_or_else(|| <super::quota::Quota as ::protobuf::Message>::default_instance())
    }
    pub fn clear_quota(&mut self) {
        self.quota.clear();
    }

    pub fn has_quota(&self) -> bool {
        self.quota.is_some()
    }

    // Param is passed by value, moved
    pub fn set_quota(&mut self, v: super::quota::Quota) {
        self.quota = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_quota(&mut self) -> &mut super::quota::Quota {
        if self.quota.is_none() {
            self.quota.set_default();
        }
        self.quota.as_mut().unwrap()
    }

    // Take field
    pub fn take_quota(&mut self) -> super::quota::Quota {
        self.quota.take().unwrap_or_else(|| super::quota::Quota::new())
    }

    // .google.api.Authentication authentication = 11;


    pub fn get_authentication(&self) -> &super::auth::Authentication {
        self.authentication.as_ref().unwrap_or_else(|| <super::auth::Authentication as ::protobuf::Message>::default_instance())
    }
    pub fn clear_authentication(&mut self) {
        self.authentication.clear();
    }

    pub fn has_authentication(&self) -> bool {
        self.authentication.is_some()
    }

    // Param is passed by value, moved
    pub fn set_authentication(&mut self, v: super::auth::Authentication) {
        self.authentication = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_authentication(&mut self) -> &mut super::auth::Authentication {
        if self.authentication.is_none() {
            self.authentication.set_default();
        }
        self.authentication.as_mut().unwrap()
    }

    // Take field
    pub fn take_authentication(&mut self) -> super::auth::Authentication {
        self.authentication.take().unwrap_or_else(|| super::auth::Authentication::new())
    }

    // .google.api.Context context = 12;


    pub fn get_context(&self) -> &super::context::Context {
        self.context.as_ref().unwrap_or_else(|| <super::context::Context as ::protobuf::Message>::default_instance())
    }
    pub fn clear_context(&mut self) {
        self.context.clear();
    }

    pub fn has_context(&self) -> bool {
        self.context.is_some()
    }

    // Param is passed by value, moved
    pub fn set_context(&mut self, v: super::context::Context) {
        self.context = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_context(&mut self) -> &mut super::context::Context {
        if self.context.is_none() {
            self.context.set_default();
        }
        self.context.as_mut().unwrap()
    }

    // Take field
    pub fn take_context(&mut self) -> super::context::Context {
        self.context.take().unwrap_or_else(|| super::context::Context::new())
    }

    // .google.api.Usage usage = 15;


    pub fn get_usage(&self) -> &super::usage::Usage {
        self.usage.as_ref().unwrap_or_else(|| <super::usage::Usage as ::protobuf::Message>::default_instance())
    }
    pub fn clear_usage(&mut self) {
        self.usage.clear();
    }

    pub fn has_usage(&self) -> bool {
        self.usage.is_some()
    }

    // Param is passed by value, moved
    pub fn set_usage(&mut self, v: super::usage::Usage) {
        self.usage = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_usage(&mut self) -> &mut super::usage::Usage {
        if self.usage.is_none() {
            self.usage.set_default();
        }
        self.usage.as_mut().unwrap()
    }

    // Take field
    pub fn take_usage(&mut self) -> super::usage::Usage {
        self.usage.take().unwrap_or_else(|| super::usage::Usage::new())
    }

    // repeated .google.api.Endpoint endpoints = 18;


    pub fn get_endpoints(&self) -> &[super::endpoint::Endpoint] {
        &self.endpoints
    }
    pub fn clear_endpoints(&mut self) {
        self.endpoints.clear();
    }

    // Param is passed by value, moved
    pub fn set_endpoints(&mut self, v: ::protobuf::RepeatedField<super::endpoint::Endpoint>) {
        self.endpoints = v;
    }

    // Mutable pointer to the field.
    pub fn mut_endpoints(&mut self) -> &mut ::protobuf::RepeatedField<super::endpoint::Endpoint> {
        &mut self.endpoints
    }

    // Take field
    pub fn take_endpoints(&mut self) -> ::protobuf::RepeatedField<super::endpoint::Endpoint> {
        ::std::mem::replace(&mut self.endpoints, ::protobuf::RepeatedField::new())
    }

    // .google.api.Control control = 21;


    pub fn get_control(&self) -> &super::control::Control {
        self.control.as_ref().unwrap_or_else(|| <super::control::Control as ::protobuf::Message>::default_instance())
    }
    pub fn clear_control(&mut self) {
        self.control.clear();
    }

    pub fn has_control(&self) -> bool {
        self.control.is_some()
    }

    // Param is passed by value, moved
    pub fn set_control(&mut self, v: super::control::Control) {
        self.control = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_control(&mut self) -> &mut super::control::Control {
        if self.control.is_none() {
            self.control.set_default();
        }
        self.control.as_mut().unwrap()
    }

    // Take field
    pub fn take_control(&mut self) -> super::control::Control {
        self.control.take().unwrap_or_else(|| super::control::Control::new())
    }

    // repeated .google.api.LogDescriptor logs = 23;


    pub fn get_logs(&self) -> &[super::log::LogDescriptor] {
        &self.logs
    }
    pub fn clear_logs(&mut self) {
        self.logs.clear();
    }

    // Param is passed by value, moved
    pub fn set_logs(&mut self, v: ::protobuf::RepeatedField<super::log::LogDescriptor>) {
        self.logs = v;
    }

    // Mutable pointer to the field.
    pub fn mut_logs(&mut self) -> &mut ::protobuf::RepeatedField<super::log::LogDescriptor> {
        &mut self.logs
    }

    // Take field
    pub fn take_logs(&mut self) -> ::protobuf::RepeatedField<super::log::LogDescriptor> {
        ::std::mem::replace(&mut self.logs, ::protobuf::RepeatedField::new())
    }

    // repeated .google.api.MetricDescriptor metrics = 24;


    pub fn get_metrics(&self) -> &[super::metric::MetricDescriptor] {
        &self.metrics
    }
    pub fn clear_metrics(&mut self) {
        self.metrics.clear();
    }

    // Param is passed by value, moved
    pub fn set_metrics(&mut self, v: ::protobuf::RepeatedField<super::metric::MetricDescriptor>) {
        self.metrics = v;
    }

    // Mutable pointer to the field.
    pub fn mut_metrics(&mut self) -> &mut ::protobuf::RepeatedField<super::metric::MetricDescriptor> {
        &mut self.metrics
    }

    // Take field
    pub fn take_metrics(&mut self) -> ::protobuf::RepeatedField<super::metric::MetricDescriptor> {
        ::std::mem::replace(&mut self.metrics, ::protobuf::RepeatedField::new())
    }

    // repeated .google.api.MonitoredResourceDescriptor monitored_resources = 25;


    pub fn get_monitored_resources(&self) -> &[super::monitored_resource::MonitoredResourceDescriptor] {
        &self.monitored_resources
    }
    pub fn clear_monitored_resources(&mut self) {
        self.monitored_resources.clear();
    }

    // Param is passed by value, moved
    pub fn set_monitored_resources(&mut self, v: ::protobuf::RepeatedField<super::monitored_resource::MonitoredResourceDescriptor>) {
        self.monitored_resources = v;
    }

    // Mutable pointer to the field.
    pub fn mut_monitored_resources(&mut self) -> &mut ::protobuf::RepeatedField<super::monitored_resource::MonitoredResourceDescriptor> {
        &mut self.monitored_resources
    }

    // Take field
    pub fn take_monitored_resources(&mut self) -> ::protobuf::RepeatedField<super::monitored_resource::MonitoredResourceDescriptor> {
        ::std::mem::replace(&mut self.monitored_resources, ::protobuf::RepeatedField::new())
    }

    // .google.api.Billing billing = 26;


    pub fn get_billing(&self) -> &super::billing::Billing {
        self.billing.as_ref().unwrap_or_else(|| <super::billing::Billing as ::protobuf::Message>::default_instance())
    }
    pub fn clear_billing(&mut self) {
        self.billing.clear();
    }

    pub fn has_billing(&self) -> bool {
        self.billing.is_some()
    }

    // Param is passed by value, moved
    pub fn set_billing(&mut self, v: super::billing::Billing) {
        self.billing = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_billing(&mut self) -> &mut super::billing::Billing {
        if self.billing.is_none() {
            self.billing.set_default();
        }
        self.billing.as_mut().unwrap()
    }

    // Take field
    pub fn take_billing(&mut self) -> super::billing::Billing {
        self.billing.take().unwrap_or_else(|| super::billing::Billing::new())
    }

    // .google.api.Logging logging = 27;


    pub fn get_logging(&self) -> &super::logging::Logging {
        self.logging.as_ref().unwrap_or_else(|| <super::logging::Logging as ::protobuf::Message>::default_instance())
    }
    pub fn clear_logging(&mut self) {
        self.logging.clear();
    }

    pub fn has_logging(&self) -> bool {
        self.logging.is_some()
    }

    // Param is passed by value, moved
    pub fn set_logging(&mut self, v: super::logging::Logging) {
        self.logging = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_logging(&mut self) -> &mut super::logging::Logging {
        if self.logging.is_none() {
            self.logging.set_default();
        }
        self.logging.as_mut().unwrap()
    }

    // Take field
    pub fn take_logging(&mut self) -> super::logging::Logging {
        self.logging.take().unwrap_or_else(|| super::logging::Logging::new())
    }

    // .google.api.Monitoring monitoring = 28;


    pub fn get_monitoring(&self) -> &super::monitoring::Monitoring {
        self.monitoring.as_ref().unwrap_or_else(|| <super::monitoring::Monitoring as ::protobuf::Message>::default_instance())
    }
    pub fn clear_monitoring(&mut self) {
        self.monitoring.clear();
    }

    pub fn has_monitoring(&self) -> bool {
        self.monitoring.is_some()
    }

    // Param is passed by value, moved
    pub fn set_monitoring(&mut self, v: super::monitoring::Monitoring) {
        self.monitoring = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_monitoring(&mut self) -> &mut super::monitoring::Monitoring {
        if self.monitoring.is_none() {
            self.monitoring.set_default();
        }
        self.monitoring.as_mut().unwrap()
    }

    // Take field
    pub fn take_monitoring(&mut self) -> super::monitoring::Monitoring {
        self.monitoring.take().unwrap_or_else(|| super::monitoring::Monitoring::new())
    }

    // .google.api.SystemParameters system_parameters = 29;


    pub fn get_system_parameters(&self) -> &super::system_parameter::SystemParameters {
        self.system_parameters.as_ref().unwrap_or_else(|| <super::system_parameter::SystemParameters as ::protobuf::Message>::default_instance())
    }
    pub fn clear_system_parameters(&mut self) {
        self.system_parameters.clear();
    }

    pub fn has_system_parameters(&self) -> bool {
        self.system_parameters.is_some()
    }

    // Param is passed by value, moved
    pub fn set_system_parameters(&mut self, v: super::system_parameter::SystemParameters) {
        self.system_parameters = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_system_parameters(&mut self) -> &mut super::system_parameter::SystemParameters {
        if self.system_parameters.is_none() {
            self.system_parameters.set_default();
        }
        self.system_parameters.as_mut().unwrap()
    }

    // Take field
    pub fn take_system_parameters(&mut self) -> super::system_parameter::SystemParameters {
        self.system_parameters.take().unwrap_or_else(|| super::system_parameter::SystemParameters::new())
    }

    // .google.api.SourceInfo source_info = 37;


    pub fn get_source_info(&self) -> &super::source_info::SourceInfo {
        self.source_info.as_ref().unwrap_or_else(|| <super::source_info::SourceInfo as ::protobuf::Message>::default_instance())
    }
    pub fn clear_source_info(&mut self) {
        self.source_info.clear();
    }

    pub fn has_source_info(&self) -> bool {
        self.source_info.is_some()
    }

    // Param is passed by value, moved
    pub fn set_source_info(&mut self, v: super::source_info::SourceInfo) {
        self.source_info = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_source_info(&mut self) -> &mut super::source_info::SourceInfo {
        if self.source_info.is_none() {
            self.source_info.set_default();
        }
        self.source_info.as_mut().unwrap()
    }

    // Take field
    pub fn take_source_info(&mut self) -> super::source_info::SourceInfo {
        self.source_info.take().unwrap_or_else(|| super::source_info::SourceInfo::new())
    }
}

impl ::protobuf::Message for Service {
    fn is_initialized(&self) -> bool {
        for v in &self.config_version {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.apis {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.types {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.enums {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.documentation {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.backend {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.http {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.quota {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.authentication {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.context {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.usage {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.endpoints {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.control {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.logs {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.metrics {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.monitored_resources {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.billing {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.logging {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.monitoring {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.system_parameters {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.source_info {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                20 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.config_version)?;
                },
                1 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
                },
                33 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.id)?;
                },
                2 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.title)?;
                },
                22 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.producer_project_id)?;
                },
                3 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.apis)?;
                },
                4 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.types)?;
                },
                5 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.enums)?;
                },
                6 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.documentation)?;
                },
                8 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.backend)?;
                },
                9 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.http)?;
                },
                10 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.quota)?;
                },
                11 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.authentication)?;
                },
                12 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.context)?;
                },
                15 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.usage)?;
                },
                18 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.endpoints)?;
                },
                21 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.control)?;
                },
                23 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.logs)?;
                },
                24 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.metrics)?;
                },
                25 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.monitored_resources)?;
                },
                26 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.billing)?;
                },
                27 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.logging)?;
                },
                28 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.monitoring)?;
                },
                29 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.system_parameters)?;
                },
                37 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.source_info)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(ref v) = self.config_version.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if !self.name.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.name);
        }
        if !self.id.is_empty() {
            my_size += ::protobuf::rt::string_size(33, &self.id);
        }
        if !self.title.is_empty() {
            my_size += ::protobuf::rt::string_size(2, &self.title);
        }
        if !self.producer_project_id.is_empty() {
            my_size += ::protobuf::rt::string_size(22, &self.producer_project_id);
        }
        for value in &self.apis {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        for value in &self.types {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        for value in &self.enums {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        if let Some(ref v) = self.documentation.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.backend.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.http.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.quota.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.authentication.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.context.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.usage.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        for value in &self.endpoints {
            let len = value.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        if let Some(ref v) = self.control.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        for value in &self.logs {
            let len = value.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        for value in &self.metrics {
            let len = value.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        for value in &self.monitored_resources {
            let len = value.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        if let Some(ref v) = self.billing.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.logging.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.monitoring.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.system_parameters.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.source_info.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(ref v) = self.config_version.as_ref() {
            os.write_tag(20, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if !self.name.is_empty() {
            os.write_string(1, &self.name)?;
        }
        if !self.id.is_empty() {
            os.write_string(33, &self.id)?;
        }
        if !self.title.is_empty() {
            os.write_string(2, &self.title)?;
        }
        if !self.producer_project_id.is_empty() {
            os.write_string(22, &self.producer_project_id)?;
        }
        for v in &self.apis {
            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        for v in &self.types {
            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        for v in &self.enums {
            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        if let Some(ref v) = self.documentation.as_ref() {
            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.backend.as_ref() {
            os.write_tag(8, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.http.as_ref() {
            os.write_tag(9, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.quota.as_ref() {
            os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.authentication.as_ref() {
            os.write_tag(11, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.context.as_ref() {
            os.write_tag(12, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.usage.as_ref() {
            os.write_tag(15, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        for v in &self.endpoints {
            os.write_tag(18, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        if let Some(ref v) = self.control.as_ref() {
            os.write_tag(21, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        for v in &self.logs {
            os.write_tag(23, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        for v in &self.metrics {
            os.write_tag(24, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        for v in &self.monitored_resources {
            os.write_tag(25, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        if let Some(ref v) = self.billing.as_ref() {
            os.write_tag(26, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.logging.as_ref() {
            os.write_tag(27, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.monitoring.as_ref() {
            os.write_tag(28, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.system_parameters.as_ref() {
            os.write_tag(29, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.source_info.as_ref() {
            os.write_tag(37, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

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

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::UInt32Value>>(
                "config_version",
                |m: &Service| { &m.config_version },
                |m: &mut Service| { &mut m.config_version },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "name",
                |m: &Service| { &m.name },
                |m: &mut Service| { &mut m.name },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "id",
                |m: &Service| { &m.id },
                |m: &mut Service| { &mut m.id },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "title",
                |m: &Service| { &m.title },
                |m: &mut Service| { &mut m.title },
            ));
            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "producer_project_id",
                |m: &Service| { &m.producer_project_id },
                |m: &mut Service| { &mut m.producer_project_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Api>>(
                "apis",
                |m: &Service| { &m.apis },
                |m: &mut Service| { &mut m.apis },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Type>>(
                "types",
                |m: &Service| { &m.types },
                |m: &mut Service| { &mut m.types },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Enum>>(
                "enums",
                |m: &Service| { &m.enums },
                |m: &mut Service| { &mut m.enums },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::documentation::Documentation>>(
                "documentation",
                |m: &Service| { &m.documentation },
                |m: &mut Service| { &mut m.documentation },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::backend::Backend>>(
                "backend",
                |m: &Service| { &m.backend },
                |m: &mut Service| { &mut m.backend },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::http::Http>>(
                "http",
                |m: &Service| { &m.http },
                |m: &mut Service| { &mut m.http },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::quota::Quota>>(
                "quota",
                |m: &Service| { &m.quota },
                |m: &mut Service| { &mut m.quota },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::auth::Authentication>>(
                "authentication",
                |m: &Service| { &m.authentication },
                |m: &mut Service| { &mut m.authentication },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::context::Context>>(
                "context",
                |m: &Service| { &m.context },
                |m: &mut Service| { &mut m.context },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::usage::Usage>>(
                "usage",
                |m: &Service| { &m.usage },
                |m: &mut Service| { &mut m.usage },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::endpoint::Endpoint>>(
                "endpoints",
                |m: &Service| { &m.endpoints },
                |m: &mut Service| { &mut m.endpoints },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::control::Control>>(
                "control",
                |m: &Service| { &m.control },
                |m: &mut Service| { &mut m.control },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::log::LogDescriptor>>(
                "logs",
                |m: &Service| { &m.logs },
                |m: &mut Service| { &mut m.logs },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::metric::MetricDescriptor>>(
                "metrics",
                |m: &Service| { &m.metrics },
                |m: &mut Service| { &mut m.metrics },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::monitored_resource::MonitoredResourceDescriptor>>(
                "monitored_resources",
                |m: &Service| { &m.monitored_resources },
                |m: &mut Service| { &mut m.monitored_resources },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::billing::Billing>>(
                "billing",
                |m: &Service| { &m.billing },
                |m: &mut Service| { &mut m.billing },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::logging::Logging>>(
                "logging",
                |m: &Service| { &m.logging },
                |m: &mut Service| { &mut m.logging },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::monitoring::Monitoring>>(
                "monitoring",
                |m: &Service| { &m.monitoring },
                |m: &mut Service| { &mut m.monitoring },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::system_parameter::SystemParameters>>(
                "system_parameters",
                |m: &Service| { &m.system_parameters },
                |m: &mut Service| { &mut m.system_parameters },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::source_info::SourceInfo>>(
                "source_info",
                |m: &Service| { &m.source_info },
                |m: &mut Service| { &mut m.source_info },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Service>(
                "Service",
                fields,
                file_descriptor_proto()
            )
        })
    }

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

impl ::protobuf::Clear for Service {
    fn clear(&mut self) {
        self.config_version.clear();
        self.name.clear();
        self.id.clear();
        self.title.clear();
        self.producer_project_id.clear();
        self.apis.clear();
        self.types.clear();
        self.enums.clear();
        self.documentation.clear();
        self.backend.clear();
        self.http.clear();
        self.quota.clear();
        self.authentication.clear();
        self.context.clear();
        self.usage.clear();
        self.endpoints.clear();
        self.control.clear();
        self.logs.clear();
        self.metrics.clear();
        self.monitored_resources.clear();
        self.billing.clear();
        self.logging.clear();
        self.monitoring.clear();
        self.system_parameters.clear();
        self.source_info.clear();
        self.unknown_fields.clear();
    }
}

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

impl ::protobuf::reflect::ProtobufValue for Service {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x18google/api/service.proto\x12\ngoogle.api\x1a\x15google/api/auth.pr\
    oto\x1a\x18google/api/backend.proto\x1a\x18google/api/billing.proto\x1a\
    \x18google/api/context.proto\x1a\x18google/api/control.proto\x1a\x1egoog\
    le/api/documentation.proto\x1a\x19google/api/endpoint.proto\x1a\x15googl\
    e/api/http.proto\x1a\x16google/api/label.proto\x1a\x14google/api/log.pro\
    to\x1a\x18google/api/logging.proto\x1a\x17google/api/metric.proto\x1a#go\
    ogle/api/monitored_resource.proto\x1a\x1bgoogle/api/monitoring.proto\x1a\
    \x16google/api/quota.proto\x1a\x19google/api/resource.proto\x1a\x1cgoogl\
    e/api/source_info.proto\x1a!google/api/system_parameter.proto\x1a\x16goo\
    gle/api/usage.proto\x1a\x19google/protobuf/any.proto\x1a\x19google/proto\
    buf/api.proto\x1a\x1agoogle/protobuf/type.proto\x1a\x1egoogle/protobuf/w\
    rappers.proto\"\xd5\t\n\x07Service\x12C\n\x0econfig_version\x18\x14\x20\
    \x01(\x0b2\x1c.google.protobuf.UInt32ValueR\rconfigVersion\x12\x12\n\x04\
    name\x18\x01\x20\x01(\tR\x04name\x12\x0e\n\x02id\x18!\x20\x01(\tR\x02id\
    \x12\x14\n\x05title\x18\x02\x20\x01(\tR\x05title\x12.\n\x13producer_proj\
    ect_id\x18\x16\x20\x01(\tR\x11producerProjectId\x12(\n\x04apis\x18\x03\
    \x20\x03(\x0b2\x14.google.protobuf.ApiR\x04apis\x12+\n\x05types\x18\x04\
    \x20\x03(\x0b2\x15.google.protobuf.TypeR\x05types\x12+\n\x05enums\x18\
    \x05\x20\x03(\x0b2\x15.google.protobuf.EnumR\x05enums\x12?\n\rdocumentat\
    ion\x18\x06\x20\x01(\x0b2\x19.google.api.DocumentationR\rdocumentation\
    \x12-\n\x07backend\x18\x08\x20\x01(\x0b2\x13.google.api.BackendR\x07back\
    end\x12$\n\x04http\x18\t\x20\x01(\x0b2\x10.google.api.HttpR\x04http\x12'\
    \n\x05quota\x18\n\x20\x01(\x0b2\x11.google.api.QuotaR\x05quota\x12B\n\
    \x0eauthentication\x18\x0b\x20\x01(\x0b2\x1a.google.api.AuthenticationR\
    \x0eauthentication\x12-\n\x07context\x18\x0c\x20\x01(\x0b2\x13.google.ap\
    i.ContextR\x07context\x12'\n\x05usage\x18\x0f\x20\x01(\x0b2\x11.google.a\
    pi.UsageR\x05usage\x122\n\tendpoints\x18\x12\x20\x03(\x0b2\x14.google.ap\
    i.EndpointR\tendpoints\x12-\n\x07control\x18\x15\x20\x01(\x0b2\x13.googl\
    e.api.ControlR\x07control\x12-\n\x04logs\x18\x17\x20\x03(\x0b2\x19.googl\
    e.api.LogDescriptorR\x04logs\x126\n\x07metrics\x18\x18\x20\x03(\x0b2\x1c\
    .google.api.MetricDescriptorR\x07metrics\x12X\n\x13monitored_resources\
    \x18\x19\x20\x03(\x0b2'.google.api.MonitoredResourceDescriptorR\x12monit\
    oredResources\x12-\n\x07billing\x18\x1a\x20\x01(\x0b2\x13.google.api.Bil\
    lingR\x07billing\x12-\n\x07logging\x18\x1b\x20\x01(\x0b2\x13.google.api.\
    LoggingR\x07logging\x126\n\nmonitoring\x18\x1c\x20\x01(\x0b2\x16.google.\
    api.MonitoringR\nmonitoring\x12I\n\x11system_parameters\x18\x1d\x20\x01(\
    \x0b2\x1c.google.api.SystemParametersR\x10systemParameters\x127\n\x0bsou\
    rce_info\x18%\x20\x01(\x0b2\x16.google.api.SourceInfoR\nsourceInfoBn\n\
    \x0ecom.google.apiB\x0cServiceProtoP\x01ZEgoogle.golang.org/genproto/goo\
    gleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIJ\xba/\n\x07\x12\
    \x05\x0f\0\xaf\x01\x01\n\xbe\x04\n\x01\x0c\x12\x03\x0f\0\x122\xb3\x04\
    \x20Copyright\x202019\x20Google\x20LLC.\n\n\x20Licensed\x20under\x20the\
    \x20Apache\x20License,\x20Version\x202.0\x20(the\x20\"License\");\n\x20y\
    ou\x20may\x20not\x20use\x20this\x20file\x20except\x20in\x20compliance\
    \x20with\x20the\x20License.\n\x20You\x20may\x20obtain\x20a\x20copy\x20of\
    \x20the\x20License\x20at\n\n\x20\x20\x20\x20\x20http://www.apache.org/li\
    censes/LICENSE-2.0\n\n\x20Unless\x20required\x20by\x20applicable\x20law\
    \x20or\x20agreed\x20to\x20in\x20writing,\x20software\n\x20distributed\
    \x20under\x20the\x20License\x20is\x20distributed\x20on\x20an\x20\"AS\x20\
    IS\"\x20BASIS,\n\x20WITHOUT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20A\
    NY\x20KIND,\x20either\x20express\x20or\x20implied.\n\x20See\x20the\x20Li\
    cense\x20for\x20the\x20specific\x20language\x20governing\x20permissions\
    \x20and\n\x20limitations\x20under\x20the\x20License.\n\n\n\x08\n\x01\x02\
    \x12\x03\x11\0\x13\n\t\n\x02\x03\0\x12\x03\x13\0\x1f\n\t\n\x02\x03\x01\
    \x12\x03\x14\0\"\n\t\n\x02\x03\x02\x12\x03\x15\0\"\n\t\n\x02\x03\x03\x12\
    \x03\x16\0\"\n\t\n\x02\x03\x04\x12\x03\x17\0\"\n\t\n\x02\x03\x05\x12\x03\
    \x18\0(\n\t\n\x02\x03\x06\x12\x03\x19\0#\n\t\n\x02\x03\x07\x12\x03\x1a\0\
    \x1f\n\t\n\x02\x03\x08\x12\x03\x1b\0\x20\n\t\n\x02\x03\t\x12\x03\x1c\0\
    \x1e\n\t\n\x02\x03\n\x12\x03\x1d\0\"\n\t\n\x02\x03\x0b\x12\x03\x1e\0!\n\
    \t\n\x02\x03\x0c\x12\x03\x1f\0-\n\t\n\x02\x03\r\x12\x03\x20\0%\n\t\n\x02\
    \x03\x0e\x12\x03!\0\x20\n\t\n\x02\x03\x0f\x12\x03\"\0#\n\t\n\x02\x03\x10\
    \x12\x03#\0&\n\t\n\x02\x03\x11\x12\x03$\0+\n\t\n\x02\x03\x12\x12\x03%\0\
    \x20\n\t\n\x02\x03\x13\x12\x03&\0#\n\t\n\x02\x03\x14\x12\x03'\0#\n\t\n\
    \x02\x03\x15\x12\x03(\0$\n\t\n\x02\x03\x16\x12\x03)\0(\n\x08\n\x01\x08\
    \x12\x03+\0\\\n\t\n\x02\x08\x0b\x12\x03+\0\\\n\x08\n\x01\x08\x12\x03,\0\
    \"\n\t\n\x02\x08\n\x12\x03,\0\"\n\x08\n\x01\x08\x12\x03-\0-\n\t\n\x02\
    \x08\x08\x12\x03-\0-\n\x08\n\x01\x08\x12\x03.\0'\n\t\n\x02\x08\x01\x12\
    \x03.\0'\n\x08\n\x01\x08\x12\x03/\0\"\n\t\n\x02\x08$\x12\x03/\0\"\n\xd4\
    \x06\n\x02\x04\0\x12\x05H\0\xaf\x01\x01\x1a\xc6\x06\x20`Service`\x20is\
    \x20the\x20root\x20object\x20of\x20Google\x20service\x20configuration\
    \x20schema.\x20It\n\x20describes\x20basic\x20information\x20about\x20a\
    \x20service,\x20such\x20as\x20the\x20name\x20and\x20the\n\x20title,\x20a\
    nd\x20delegates\x20other\x20aspects\x20to\x20sub-sections.\x20Each\x20su\
    b-section\x20is\n\x20either\x20a\x20proto\x20message\x20or\x20a\x20repea\
    ted\x20proto\x20message\x20that\x20configures\x20a\n\x20specific\x20aspe\
    ct,\x20such\x20as\x20auth.\x20See\x20each\x20proto\x20message\x20definit\
    ion\x20for\x20details.\n\n\x20Example:\n\n\x20\x20\x20\x20\x20type:\x20g\
    oogle.api.Service\n\x20\x20\x20\x20\x20config_version:\x203\n\x20\x20\
    \x20\x20\x20name:\x20calendar.googleapis.com\n\x20\x20\x20\x20\x20title:\
    \x20Google\x20Calendar\x20API\n\x20\x20\x20\x20\x20apis:\n\x20\x20\x20\
    \x20\x20-\x20name:\x20google.calendar.v3.Calendar\n\x20\x20\x20\x20\x20a\
    uthentication:\n\x20\x20\x20\x20\x20\x20\x20providers:\n\x20\x20\x20\x20\
    \x20\x20\x20-\x20id:\x20google_calendar_auth\n\x20\x20\x20\x20\x20\x20\
    \x20\x20\x20jwks_uri:\x20https://www.googleapis.com/oauth2/v1/certs\n\
    \x20\x20\x20\x20\x20\x20\x20\x20\x20issuer:\x20https://securetoken.googl\
    e.com\n\x20\x20\x20\x20\x20\x20\x20rules:\n\x20\x20\x20\x20\x20\x20\x20-\
    \x20selector:\x20\"*\"\n\x20\x20\x20\x20\x20\x20\x20\x20\x20requirements\
    :\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20provider_id:\x20google_ca\
    lendar_auth\n\n\n\n\x03\x04\0\x01\x12\x03H\x08\x0f\n\x85\x02\n\x04\x04\0\
    \x02\0\x12\x03M\x022\x1a\xf7\x01\x20The\x20semantic\x20version\x20of\x20\
    the\x20service\x20configuration.\x20The\x20config\x20version\n\x20affect\
    s\x20the\x20interpretation\x20of\x20the\x20service\x20configuration.\x20\
    For\x20example,\n\x20certain\x20features\x20are\x20enabled\x20by\x20defa\
    ult\x20for\x20certain\x20config\x20versions.\n\x20The\x20latest\x20confi\
    g\x20version\x20is\x20`3`.\n\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03M\x02\
    \x1d\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03M\x1e,\n\x0c\n\x05\x04\0\x02\0\
    \x03\x12\x03M/1\n\xf6\x01\n\x04\x04\0\x02\x01\x12\x03S\x02\x12\x1a\xe8\
    \x01\x20The\x20service\x20name,\x20which\x20is\x20a\x20DNS-like\x20logic\
    al\x20identifier\x20for\x20the\n\x20service,\x20such\x20as\x20`calendar.\
    googleapis.com`.\x20The\x20service\x20name\n\x20typically\x20goes\x20thr\
    ough\x20DNS\x20verification\x20to\x20make\x20sure\x20the\x20owner\n\x20o\
    f\x20the\x20service\x20also\x20owns\x20the\x20DNS\x20name.\n\n\x0c\n\x05\
    \x04\0\x02\x01\x05\x12\x03S\x02\x08\n\x0c\n\x05\x04\0\x02\x01\x01\x12\
    \x03S\t\r\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03S\x10\x11\n\xdc\x01\n\x04\
    \x04\0\x02\x02\x12\x03X\x02\x11\x1a\xce\x01\x20A\x20unique\x20ID\x20for\
    \x20a\x20specific\x20instance\x20of\x20this\x20message,\x20typically\x20\
    assigned\n\x20by\x20the\x20client\x20for\x20tracking\x20purpose.\x20If\
    \x20empty,\x20the\x20server\x20may\x20choose\x20to\n\x20generate\x20one\
    \x20instead.\x20Must\x20be\x20no\x20longer\x20than\x2060\x20characters.\
    \n\n\x0c\n\x05\x04\0\x02\x02\x05\x12\x03X\x02\x08\n\x0c\n\x05\x04\0\x02\
    \x02\x01\x12\x03X\t\x0b\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03X\x0e\x10\n\
    2\n\x04\x04\0\x02\x03\x12\x03[\x02\x13\x1a%\x20The\x20product\x20title\
    \x20for\x20this\x20service.\n\n\x0c\n\x05\x04\0\x02\x03\x05\x12\x03[\x02\
    \x08\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03[\t\x0e\n\x0c\n\x05\x04\0\x02\
    \x03\x03\x12\x03[\x11\x12\n9\n\x04\x04\0\x02\x04\x12\x03^\x02\"\x1a,\x20\
    The\x20Google\x20project\x20that\x20owns\x20this\x20service.\n\n\x0c\n\
    \x05\x04\0\x02\x04\x05\x12\x03^\x02\x08\n\x0c\n\x05\x04\0\x02\x04\x01\
    \x12\x03^\t\x1c\n\x0c\n\x05\x04\0\x02\x04\x03\x12\x03^\x1f!\n\x82\x03\n\
    \x04\x04\0\x02\x05\x12\x03e\x02(\x1a\xf4\x02\x20A\x20list\x20of\x20API\
    \x20interfaces\x20exported\x20by\x20this\x20service.\x20Only\x20the\x20`\
    name`\x20field\n\x20of\x20the\x20[google.protobuf.Api][google.protobuf.A\
    pi]\x20needs\x20to\x20be\x20provided\x20by\x20the\x20configuration\n\x20\
    author,\x20as\x20the\x20remaining\x20fields\x20will\x20be\x20derived\x20\
    from\x20the\x20IDL\x20during\x20the\n\x20normalization\x20process.\x20It\
    \x20is\x20an\x20error\x20to\x20specify\x20an\x20API\x20interface\x20here\
    \n\x20which\x20cannot\x20be\x20resolved\x20against\x20the\x20associated\
    \x20IDL\x20files.\n\n\x0c\n\x05\x04\0\x02\x05\x04\x12\x03e\x02\n\n\x0c\n\
    \x05\x04\0\x02\x05\x06\x12\x03e\x0b\x1e\n\x0c\n\x05\x04\0\x02\x05\x01\
    \x12\x03e\x1f#\n\x0c\n\x05\x04\0\x02\x05\x03\x12\x03e&'\n\xed\x02\n\x04\
    \x04\0\x02\x06\x12\x03o\x02*\x1a\xdf\x02\x20A\x20list\x20of\x20all\x20pr\
    oto\x20message\x20types\x20included\x20in\x20this\x20API\x20service.\n\
    \x20Types\x20referenced\x20directly\x20or\x20indirectly\x20by\x20the\x20\
    `apis`\x20are\n\x20automatically\x20included.\x20\x20Messages\x20which\
    \x20are\x20not\x20referenced\x20but\n\x20shall\x20be\x20included,\x20suc\
    h\x20as\x20types\x20used\x20by\x20the\x20`google.protobuf.Any`\x20type,\
    \n\x20should\x20be\x20listed\x20here\x20by\x20name.\x20Example:\n\n\x20\
    \x20\x20\x20\x20types:\n\x20\x20\x20\x20\x20-\x20name:\x20google.protobu\
    f.Int32\n\n\x0c\n\x05\x04\0\x02\x06\x04\x12\x03o\x02\n\n\x0c\n\x05\x04\0\
    \x02\x06\x06\x12\x03o\x0b\x1f\n\x0c\n\x05\x04\0\x02\x06\x01\x12\x03o\x20\
    %\n\x0c\n\x05\x04\0\x02\x06\x03\x12\x03o()\n\xaf\x02\n\x04\x04\0\x02\x07\
    \x12\x03x\x02*\x1a\xa1\x02\x20A\x20list\x20of\x20all\x20enum\x20types\
    \x20included\x20in\x20this\x20API\x20service.\x20\x20Enums\n\x20referenc\
    ed\x20directly\x20or\x20indirectly\x20by\x20the\x20`apis`\x20are\x20auto\
    matically\n\x20included.\x20\x20Enums\x20which\x20are\x20not\x20referenc\
    ed\x20but\x20shall\x20be\x20included\n\x20should\x20be\x20listed\x20here\
    \x20by\x20name.\x20Example:\n\n\x20\x20\x20\x20\x20enums:\n\x20\x20\x20\
    \x20\x20-\x20name:\x20google.someapi.v1.SomeEnum\n\n\x0c\n\x05\x04\0\x02\
    \x07\x04\x12\x03x\x02\n\n\x0c\n\x05\x04\0\x02\x07\x06\x12\x03x\x0b\x1f\n\
    \x0c\n\x05\x04\0\x02\x07\x01\x12\x03x\x20%\n\x0c\n\x05\x04\0\x02\x07\x03\
    \x12\x03x()\n,\n\x04\x04\0\x02\x08\x12\x03{\x02\"\x1a\x1f\x20Additional\
    \x20API\x20documentation.\n\n\x0c\n\x05\x04\0\x02\x08\x06\x12\x03{\x02\
    \x0f\n\x0c\n\x05\x04\0\x02\x08\x01\x12\x03{\x10\x1d\n\x0c\n\x05\x04\0\
    \x02\x08\x03\x12\x03{\x20!\n)\n\x04\x04\0\x02\t\x12\x03~\x02\x16\x1a\x1c\
    \x20API\x20backend\x20configuration.\n\n\x0c\n\x05\x04\0\x02\t\x06\x12\
    \x03~\x02\t\n\x0c\n\x05\x04\0\x02\t\x01\x12\x03~\n\x11\n\x0c\n\x05\x04\0\
    \x02\t\x03\x12\x03~\x14\x15\n#\n\x04\x04\0\x02\n\x12\x04\x81\x01\x02\x10\
    \x1a\x15\x20HTTP\x20configuration.\n\n\r\n\x05\x04\0\x02\n\x06\x12\x04\
    \x81\x01\x02\x06\n\r\n\x05\x04\0\x02\n\x01\x12\x04\x81\x01\x07\x0b\n\r\n\
    \x05\x04\0\x02\n\x03\x12\x04\x81\x01\x0e\x0f\n$\n\x04\x04\0\x02\x0b\x12\
    \x04\x84\x01\x02\x13\x1a\x16\x20Quota\x20configuration.\n\n\r\n\x05\x04\
    \0\x02\x0b\x06\x12\x04\x84\x01\x02\x07\n\r\n\x05\x04\0\x02\x0b\x01\x12\
    \x04\x84\x01\x08\r\n\r\n\x05\x04\0\x02\x0b\x03\x12\x04\x84\x01\x10\x12\n\
    #\n\x04\x04\0\x02\x0c\x12\x04\x87\x01\x02%\x1a\x15\x20Auth\x20configurat\
    ion.\n\n\r\n\x05\x04\0\x02\x0c\x06\x12\x04\x87\x01\x02\x10\n\r\n\x05\x04\
    \0\x02\x0c\x01\x12\x04\x87\x01\x11\x1f\n\r\n\x05\x04\0\x02\x0c\x03\x12\
    \x04\x87\x01\"$\n&\n\x04\x04\0\x02\r\x12\x04\x8a\x01\x02\x17\x1a\x18\x20\
    Context\x20configuration.\n\n\r\n\x05\x04\0\x02\r\x06\x12\x04\x8a\x01\
    \x02\t\n\r\n\x05\x04\0\x02\r\x01\x12\x04\x8a\x01\n\x11\n\r\n\x05\x04\0\
    \x02\r\x03\x12\x04\x8a\x01\x14\x16\n@\n\x04\x04\0\x02\x0e\x12\x04\x8d\
    \x01\x02\x13\x1a2\x20Configuration\x20controlling\x20usage\x20of\x20this\
    \x20service.\n\n\r\n\x05\x04\0\x02\x0e\x06\x12\x04\x8d\x01\x02\x07\n\r\n\
    \x05\x04\0\x02\x0e\x01\x12\x04\x8d\x01\x08\r\n\r\n\x05\x04\0\x02\x0e\x03\
    \x12\x04\x8d\x01\x10\x12\n\xb5\x01\n\x04\x04\0\x02\x0f\x12\x04\x92\x01\
    \x02#\x1a\xa6\x01\x20Configuration\x20for\x20network\x20endpoints.\x20\
    \x20If\x20this\x20is\x20empty,\x20then\x20an\x20endpoint\n\x20with\x20th\
    e\x20same\x20name\x20as\x20the\x20service\x20is\x20automatically\x20gene\
    rated\x20to\x20service\x20all\n\x20defined\x20APIs.\n\n\r\n\x05\x04\0\
    \x02\x0f\x04\x12\x04\x92\x01\x02\n\n\r\n\x05\x04\0\x02\x0f\x06\x12\x04\
    \x92\x01\x0b\x13\n\r\n\x05\x04\0\x02\x0f\x01\x12\x04\x92\x01\x14\x1d\n\r\
    \n\x05\x04\0\x02\x0f\x03\x12\x04\x92\x01\x20\"\n<\n\x04\x04\0\x02\x10\
    \x12\x04\x95\x01\x02\x17\x1a.\x20Configuration\x20for\x20the\x20service\
    \x20control\x20plane.\n\n\r\n\x05\x04\0\x02\x10\x06\x12\x04\x95\x01\x02\
    \t\n\r\n\x05\x04\0\x02\x10\x01\x12\x04\x95\x01\n\x11\n\r\n\x05\x04\0\x02\
    \x10\x03\x12\x04\x95\x01\x14\x16\n6\n\x04\x04\0\x02\x11\x12\x04\x98\x01\
    \x02#\x1a(\x20Defines\x20the\x20logs\x20used\x20by\x20this\x20service.\n\
    \n\r\n\x05\x04\0\x02\x11\x04\x12\x04\x98\x01\x02\n\n\r\n\x05\x04\0\x02\
    \x11\x06\x12\x04\x98\x01\x0b\x18\n\r\n\x05\x04\0\x02\x11\x01\x12\x04\x98\
    \x01\x19\x1d\n\r\n\x05\x04\0\x02\x11\x03\x12\x04\x98\x01\x20\"\n9\n\x04\
    \x04\0\x02\x12\x12\x04\x9b\x01\x02)\x1a+\x20Defines\x20the\x20metrics\
    \x20used\x20by\x20this\x20service.\n\n\r\n\x05\x04\0\x02\x12\x04\x12\x04\
    \x9b\x01\x02\n\n\r\n\x05\x04\0\x02\x12\x06\x12\x04\x9b\x01\x0b\x1b\n\r\n\
    \x05\x04\0\x02\x12\x01\x12\x04\x9b\x01\x1c#\n\r\n\x05\x04\0\x02\x12\x03\
    \x12\x04\x9b\x01&(\n\xd5\x01\n\x04\x04\0\x02\x13\x12\x04\x9f\x01\x02@\
    \x1a\xc6\x01\x20Defines\x20the\x20monitored\x20resources\x20used\x20by\
    \x20this\x20service.\x20This\x20is\x20required\n\x20by\x20the\x20[Servic\
    e.monitoring][google.api.Service.monitoring]\x20and\x20[Service.logging]\
    [google.api.Service.logging]\x20configurations.\n\n\r\n\x05\x04\0\x02\
    \x13\x04\x12\x04\x9f\x01\x02\n\n\r\n\x05\x04\0\x02\x13\x06\x12\x04\x9f\
    \x01\x0b&\n\r\n\x05\x04\0\x02\x13\x01\x12\x04\x9f\x01':\n\r\n\x05\x04\0\
    \x02\x13\x03\x12\x04\x9f\x01=?\n&\n\x04\x04\0\x02\x14\x12\x04\xa2\x01\
    \x02\x17\x1a\x18\x20Billing\x20configuration.\n\n\r\n\x05\x04\0\x02\x14\
    \x06\x12\x04\xa2\x01\x02\t\n\r\n\x05\x04\0\x02\x14\x01\x12\x04\xa2\x01\n\
    \x11\n\r\n\x05\x04\0\x02\x14\x03\x12\x04\xa2\x01\x14\x16\n&\n\x04\x04\0\
    \x02\x15\x12\x04\xa5\x01\x02\x17\x1a\x18\x20Logging\x20configuration.\n\
    \n\r\n\x05\x04\0\x02\x15\x06\x12\x04\xa5\x01\x02\t\n\r\n\x05\x04\0\x02\
    \x15\x01\x12\x04\xa5\x01\n\x11\n\r\n\x05\x04\0\x02\x15\x03\x12\x04\xa5\
    \x01\x14\x16\n)\n\x04\x04\0\x02\x16\x12\x04\xa8\x01\x02\x1d\x1a\x1b\x20M\
    onitoring\x20configuration.\n\n\r\n\x05\x04\0\x02\x16\x06\x12\x04\xa8\
    \x01\x02\x0c\n\r\n\x05\x04\0\x02\x16\x01\x12\x04\xa8\x01\r\x17\n\r\n\x05\
    \x04\0\x02\x16\x03\x12\x04\xa8\x01\x1a\x1c\n/\n\x04\x04\0\x02\x17\x12\
    \x04\xab\x01\x02*\x1a!\x20System\x20parameter\x20configuration.\n\n\r\n\
    \x05\x04\0\x02\x17\x06\x12\x04\xab\x01\x02\x12\n\r\n\x05\x04\0\x02\x17\
    \x01\x12\x04\xab\x01\x13$\n\r\n\x05\x04\0\x02\x17\x03\x12\x04\xab\x01')\
    \nX\n\x04\x04\0\x02\x18\x12\x04\xae\x01\x02\x1e\x1aJ\x20Output\x20only.\
    \x20The\x20source\x20information\x20for\x20this\x20configuration\x20if\
    \x20available.\n\n\r\n\x05\x04\0\x02\x18\x06\x12\x04\xae\x01\x02\x0c\n\r\
    \n\x05\x04\0\x02\x18\x01\x12\x04\xae\x01\r\x18\n\r\n\x05\x04\0\x02\x18\
    \x03\x12\x04\xae\x01\x1b\x1db\x06proto3\
";

static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
}

pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    file_descriptor_proto_lazy.get(|| {
        parse_descriptor_proto()
    })
}