Skip to main content

perfetto_protos/
perfetto.protos.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct ObservableEvents {
4    #[prost(message, repeated, tag = "1")]
5    pub instance_state_changes: ::prost::alloc::vec::Vec<
6        observable_events::DataSourceInstanceStateChange,
7    >,
8    #[prost(bool, optional, tag = "2")]
9    pub all_data_sources_started: ::core::option::Option<bool>,
10    #[prost(message, optional, tag = "3")]
11    pub clone_trigger_hit: ::core::option::Option<observable_events::CloneTriggerHit>,
12}
13/// Nested message and enum types in `ObservableEvents`.
14pub mod observable_events {
15    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16    pub struct DataSourceInstanceStateChange {
17        #[prost(string, optional, tag = "1")]
18        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
19        #[prost(string, optional, tag = "2")]
20        pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21        #[prost(enumeration = "DataSourceInstanceState", optional, tag = "3")]
22        pub state: ::core::option::Option<i32>,
23    }
24    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25    pub struct CloneTriggerHit {
26        /// The TracingSessionID of the original tracing session which had a
27        /// CLONE_SNAPSHOT trigger defined. This is necessary just because the
28        /// consumer has no idea of what is the TSID of its own tracing session and
29        /// there is no other good way to plumb it.
30        #[prost(int64, optional, tag = "1")]
31        pub tracing_session_id: ::core::option::Option<i64>,
32        /// The name of the CLONE_SNAPSHOT trigger which was hit.
33        #[prost(string, optional, tag = "2")]
34        pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
35        /// The name of the producer that sent the CLONE_SNAPSHOT trigger.
36        #[prost(string, optional, tag = "3")]
37        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
38        /// The uid of the producer that sent the CLONE_SNAPSHOT trigger.
39        #[prost(uint32, optional, tag = "4")]
40        pub producer_uid: ::core::option::Option<u32>,
41        /// The timestamp of the CLONE_SNAPSHOT trigger which was hit.
42        #[prost(uint64, optional, tag = "5")]
43        pub boot_time_ns: ::core::option::Option<u64>,
44        /// The configured delay of the CLONE_SNAPSHOT trigger which was hit. For
45        /// informational purposes only.
46        #[prost(uint64, optional, tag = "6")]
47        pub trigger_delay_ms: ::core::option::Option<u64>,
48    }
49    /// Note: internally these are used as OR flags. Next values: 4, 8, 16, ...
50    #[derive(
51        Clone,
52        Copy,
53        Debug,
54        PartialEq,
55        Eq,
56        Hash,
57        PartialOrd,
58        Ord,
59        ::prost::Enumeration
60    )]
61    #[repr(i32)]
62    pub enum Type {
63        Unspecified = 0,
64        /// State changes of data source instances associated with the consumer's
65        /// session. Note that not all data sources may support these notifications.
66        /// See |will_notify_on_start/stop| in DataSourceDescriptor.
67        DataSourcesInstances = 1,
68        /// State change triggered when all data sources are in the STARTED state.
69        /// For data sources that registered with |will_notify_on_start| this happens
70        /// only after the data source has acked the start. This allows the consumer
71        /// to synchronize with the data sources and to perform actions (e.g. start a
72        /// test binary) only after trace recording is actually started.
73        /// Introduced in Android 11 (R).
74        AllDataSourcesStarted = 2,
75        /// When a tracing session has one or more triggers of type CLONE_SNAPSHOT
76        /// and a matching trigger is hit, the service will send this notification to
77        /// the consumer after |stop_delay_ms|.
78        CloneTriggerHit = 4,
79    }
80    impl Type {
81        /// String value of the enum field names used in the ProtoBuf definition.
82        ///
83        /// The values are not transformed in any way and thus are considered stable
84        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
85        pub fn as_str_name(&self) -> &'static str {
86            match self {
87                Self::Unspecified => "TYPE_UNSPECIFIED",
88                Self::DataSourcesInstances => "TYPE_DATA_SOURCES_INSTANCES",
89                Self::AllDataSourcesStarted => "TYPE_ALL_DATA_SOURCES_STARTED",
90                Self::CloneTriggerHit => "TYPE_CLONE_TRIGGER_HIT",
91            }
92        }
93        /// Creates an enum from field names used in the ProtoBuf definition.
94        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
95            match value {
96                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
97                "TYPE_DATA_SOURCES_INSTANCES" => Some(Self::DataSourcesInstances),
98                "TYPE_ALL_DATA_SOURCES_STARTED" => Some(Self::AllDataSourcesStarted),
99                "TYPE_CLONE_TRIGGER_HIT" => Some(Self::CloneTriggerHit),
100                _ => None,
101            }
102        }
103    }
104    #[derive(
105        Clone,
106        Copy,
107        Debug,
108        PartialEq,
109        Eq,
110        Hash,
111        PartialOrd,
112        Ord,
113        ::prost::Enumeration
114    )]
115    #[repr(i32)]
116    pub enum DataSourceInstanceState {
117        /// A data source is created in stopped state.
118        Stopped = 1,
119        Started = 2,
120    }
121    impl DataSourceInstanceState {
122        /// String value of the enum field names used in the ProtoBuf definition.
123        ///
124        /// The values are not transformed in any way and thus are considered stable
125        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
126        pub fn as_str_name(&self) -> &'static str {
127            match self {
128                Self::Stopped => "DATA_SOURCE_INSTANCE_STATE_STOPPED",
129                Self::Started => "DATA_SOURCE_INSTANCE_STATE_STARTED",
130            }
131        }
132        /// Creates an enum from field names used in the ProtoBuf definition.
133        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
134            match value {
135                "DATA_SOURCE_INSTANCE_STATE_STOPPED" => Some(Self::Stopped),
136                "DATA_SOURCE_INSTANCE_STATE_STARTED" => Some(Self::Started),
137                _ => None,
138            }
139        }
140    }
141}
142#[derive(Clone, PartialEq, ::prost::Message)]
143pub struct FtraceDescriptor {
144    /// Report the available atrace categories.
145    ///
146    /// Used by Traceur via `perfetto --query`.
147    #[prost(message, repeated, tag = "1")]
148    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
149}
150/// Nested message and enum types in `FtraceDescriptor`.
151pub mod ftrace_descriptor {
152    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
153    pub struct AtraceCategory {
154        #[prost(string, optional, tag = "1")]
155        pub name: ::core::option::Option<::prost::alloc::string::String>,
156        #[prost(string, optional, tag = "2")]
157        pub description: ::core::option::Option<::prost::alloc::string::String>,
158    }
159}
160/// Description of GPU counters.
161/// This message is sent by a GPU counter producer to specify the counters
162/// available in the hardware.
163#[derive(Clone, PartialEq, ::prost::Message)]
164pub struct GpuCounterDescriptor {
165    #[prost(message, repeated, tag = "1")]
166    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
167    #[prost(message, repeated, tag = "2")]
168    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
169    #[prost(message, repeated, tag = "6")]
170    pub counter_groups: ::prost::alloc::vec::Vec<
171        gpu_counter_descriptor::GpuCounterGroupSpec,
172    >,
173    /// optional.  Minimum sampling period supported by the producer in
174    /// nanoseconds.
175    #[prost(uint64, optional, tag = "3")]
176    pub min_sampling_period_ns: ::core::option::Option<u64>,
177    /// optional.  Maximum sampling period supported by the producer in
178    /// nanoseconds.
179    #[prost(uint64, optional, tag = "4")]
180    pub max_sampling_period_ns: ::core::option::Option<u64>,
181    /// optional.  The producer supports counter sampling by instrumenting the
182    /// command buffer.
183    #[prost(bool, optional, tag = "5")]
184    pub supports_instrumented_sampling: ::core::option::Option<bool>,
185    /// optional.  The producer supports selecting counters by name via
186    /// GpuCounterConfig.counter_names. Not all producers support this; Android
187    /// GPU producers typically do not.
188    #[prost(bool, optional, tag = "7")]
189    pub supports_counter_names: ::core::option::Option<bool>,
190    /// optional.  The producer supports glob patterns in
191    /// GpuCounterConfig.counter_names for matching multiple counters by name.
192    #[prost(bool, optional, tag = "8")]
193    pub supports_counter_name_globs: ::core::option::Option<bool>,
194}
195/// Nested message and enum types in `GpuCounterDescriptor`.
196pub mod gpu_counter_descriptor {
197    #[derive(Clone, PartialEq, ::prost::Message)]
198    pub struct GpuCounterSpec {
199        #[prost(uint32, optional, tag = "1")]
200        pub counter_id: ::core::option::Option<u32>,
201        #[prost(string, optional, tag = "2")]
202        pub name: ::core::option::Option<::prost::alloc::string::String>,
203        #[prost(string, optional, tag = "3")]
204        pub description: ::core::option::Option<::prost::alloc::string::String>,
205        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
206        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
207        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
208        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
209        #[prost(bool, optional, tag = "9")]
210        pub select_by_default: ::core::option::Option<bool>,
211        #[prost(enumeration = "GpuCounterGroup", repeated, packed = "false", tag = "10")]
212        pub groups: ::prost::alloc::vec::Vec<i32>,
213        #[prost(enumeration = "gpu_counter_spec::ValueDirection", optional, tag = "11")]
214        pub value_direction: ::core::option::Option<i32>,
215        #[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
216        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
217    }
218    /// Nested message and enum types in `GpuCounterSpec`.
219    pub mod gpu_counter_spec {
220        /// Direction of the time interval that each emitted sample applies to.
221        /// A GPU counter is sampled at discrete timestamps, but its value really
222        /// represents a measurement over some interval around that timestamp
223        /// (e.g. average GPU utilization over the sampling window). This field
224        /// tells trace processor on which side of the timestamp that interval
225        /// lies, which controls where the value is drawn in the UI.
226        ///
227        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
228        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
229        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
230        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
231        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
232        #[derive(
233            Clone,
234            Copy,
235            Debug,
236            PartialEq,
237            Eq,
238            Hash,
239            PartialOrd,
240            Ord,
241            ::prost::Enumeration
242        )]
243        #[repr(i32)]
244        pub enum ValueDirection {
245            /// Treated as BACKWARDS_LOOKING (the historical default).
246            Unspecified = 0,
247            /// The value applies to the interval ending at this event's timestamp.
248            /// This is the convention used by AGI and most existing GPU producers,
249            /// where a sample reports what happened during the window leading up
250            /// to the timestamp.
251            BackwardsLooking = 1,
252            /// The value applies to the interval starting at this event's
253            /// timestamp, matching standard Perfetto counters. Producers that emit
254            /// explicit zero samples to denote "no activity from here on" should
255            /// use this so the zero is not back-propagated over earlier non-zero
256            /// samples (<https://github.com/google/perfetto/issues/5683>).
257            ForwardsLooking = 2,
258        }
259        impl ValueDirection {
260            /// String value of the enum field names used in the ProtoBuf definition.
261            ///
262            /// The values are not transformed in any way and thus are considered stable
263            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
264            pub fn as_str_name(&self) -> &'static str {
265                match self {
266                    Self::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
267                    Self::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
268                    Self::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
269                }
270            }
271            /// Creates an enum from field names used in the ProtoBuf definition.
272            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
273                match value {
274                    "VALUE_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
275                    "VALUE_DIRECTION_BACKWARDS_LOOKING" => Some(Self::BackwardsLooking),
276                    "VALUE_DIRECTION_FORWARDS_LOOKING" => Some(Self::ForwardsLooking),
277                    _ => None,
278                }
279            }
280        }
281        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
282        pub enum PeakValue {
283            #[prost(int64, tag = "5")]
284            IntPeakValue(i64),
285            #[prost(double, tag = "6")]
286            DoublePeakValue(f64),
287        }
288    }
289    /// Allow producer to group counters into block to represent counter islands.
290    /// A capacity may be specified to indicate the number of counters that can be
291    /// enable simultaneously in that block.
292    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
293    pub struct GpuCounterBlock {
294        /// required. Unique ID for the counter group.
295        #[prost(uint32, optional, tag = "1")]
296        pub block_id: ::core::option::Option<u32>,
297        /// optional. Number of counters supported by the block. No limit if unset.
298        #[prost(uint32, optional, tag = "2")]
299        pub block_capacity: ::core::option::Option<u32>,
300        /// optional. Name of block.
301        #[prost(string, optional, tag = "3")]
302        pub name: ::core::option::Option<::prost::alloc::string::String>,
303        /// optional. Description for the block.
304        #[prost(string, optional, tag = "4")]
305        pub description: ::core::option::Option<::prost::alloc::string::String>,
306        /// list of counters that are part of the block.
307        #[prost(uint32, repeated, packed = "false", tag = "5")]
308        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
309    }
310    /// Allow producer to define custom counter groups. Unlike the fixed
311    /// GpuCounterGroup enum (which provides broad categories), these groups
312    /// let the producer define hardware-specific groupings that the UI uses
313    /// to organize counter tracks. Can also be used to provide display names
314    /// and descriptions for the fixed GpuCounterGroup enum values by setting
315    /// group_id to the enum value.
316    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
317    pub struct GpuCounterGroupSpec {
318        /// required. Unique ID for this group within the descriptor.
319        #[prost(uint32, optional, tag = "1")]
320        pub group_id: ::core::option::Option<u32>,
321        /// optional. Display name for the group.
322        #[prost(string, optional, tag = "2")]
323        pub name: ::core::option::Option<::prost::alloc::string::String>,
324        /// optional. Description of the group.
325        #[prost(string, optional, tag = "3")]
326        pub description: ::core::option::Option<::prost::alloc::string::String>,
327        /// Counters that belong directly to this group (by counter_id).
328        #[prost(uint32, repeated, packed = "false", tag = "4")]
329        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
330    }
331    /// Logical groups for a counter.  This is used in the UI to present the
332    /// related counters together.
333    #[derive(
334        Clone,
335        Copy,
336        Debug,
337        PartialEq,
338        Eq,
339        Hash,
340        PartialOrd,
341        Ord,
342        ::prost::Enumeration
343    )]
344    #[repr(i32)]
345    pub enum GpuCounterGroup {
346        Unclassified = 0,
347        System = 1,
348        Vertices = 2,
349        Fragments = 3,
350        Primitives = 4,
351        /// Includes counters relating to caching and bandwidth.
352        Memory = 5,
353        Compute = 6,
354        RayTracing = 7,
355    }
356    impl GpuCounterGroup {
357        /// String value of the enum field names used in the ProtoBuf definition.
358        ///
359        /// The values are not transformed in any way and thus are considered stable
360        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
361        pub fn as_str_name(&self) -> &'static str {
362            match self {
363                Self::Unclassified => "UNCLASSIFIED",
364                Self::System => "SYSTEM",
365                Self::Vertices => "VERTICES",
366                Self::Fragments => "FRAGMENTS",
367                Self::Primitives => "PRIMITIVES",
368                Self::Memory => "MEMORY",
369                Self::Compute => "COMPUTE",
370                Self::RayTracing => "RAY_TRACING",
371            }
372        }
373        /// Creates an enum from field names used in the ProtoBuf definition.
374        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
375            match value {
376                "UNCLASSIFIED" => Some(Self::Unclassified),
377                "SYSTEM" => Some(Self::System),
378                "VERTICES" => Some(Self::Vertices),
379                "FRAGMENTS" => Some(Self::Fragments),
380                "PRIMITIVES" => Some(Self::Primitives),
381                "MEMORY" => Some(Self::Memory),
382                "COMPUTE" => Some(Self::Compute),
383                "RAY_TRACING" => Some(Self::RayTracing),
384                _ => None,
385            }
386        }
387    }
388    /// next id: 41
389    #[derive(
390        Clone,
391        Copy,
392        Debug,
393        PartialEq,
394        Eq,
395        Hash,
396        PartialOrd,
397        Ord,
398        ::prost::Enumeration
399    )]
400    #[repr(i32)]
401    pub enum MeasureUnit {
402        None = 0,
403        Bit = 1,
404        Kilobit = 2,
405        Megabit = 3,
406        Gigabit = 4,
407        Terabit = 5,
408        Petabit = 6,
409        Byte = 7,
410        Kilobyte = 8,
411        Megabyte = 9,
412        Gigabyte = 10,
413        Terabyte = 11,
414        Petabyte = 12,
415        Hertz = 13,
416        Kilohertz = 14,
417        Megahertz = 15,
418        Gigahertz = 16,
419        Terahertz = 17,
420        Petahertz = 18,
421        Nanosecond = 19,
422        Microsecond = 20,
423        Millisecond = 21,
424        Second = 22,
425        Minute = 23,
426        Hour = 24,
427        Vertex = 25,
428        Pixel = 26,
429        Triangle = 27,
430        Primitive = 38,
431        Fragment = 39,
432        Milliwatt = 28,
433        Watt = 29,
434        Kilowatt = 30,
435        Joule = 31,
436        Volt = 32,
437        Ampere = 33,
438        Celsius = 34,
439        Fahrenheit = 35,
440        Kelvin = 36,
441        /// Values should be out of 100.
442        Percent = 37,
443        Instruction = 40,
444    }
445    impl MeasureUnit {
446        /// String value of the enum field names used in the ProtoBuf definition.
447        ///
448        /// The values are not transformed in any way and thus are considered stable
449        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
450        pub fn as_str_name(&self) -> &'static str {
451            match self {
452                Self::None => "NONE",
453                Self::Bit => "BIT",
454                Self::Kilobit => "KILOBIT",
455                Self::Megabit => "MEGABIT",
456                Self::Gigabit => "GIGABIT",
457                Self::Terabit => "TERABIT",
458                Self::Petabit => "PETABIT",
459                Self::Byte => "BYTE",
460                Self::Kilobyte => "KILOBYTE",
461                Self::Megabyte => "MEGABYTE",
462                Self::Gigabyte => "GIGABYTE",
463                Self::Terabyte => "TERABYTE",
464                Self::Petabyte => "PETABYTE",
465                Self::Hertz => "HERTZ",
466                Self::Kilohertz => "KILOHERTZ",
467                Self::Megahertz => "MEGAHERTZ",
468                Self::Gigahertz => "GIGAHERTZ",
469                Self::Terahertz => "TERAHERTZ",
470                Self::Petahertz => "PETAHERTZ",
471                Self::Nanosecond => "NANOSECOND",
472                Self::Microsecond => "MICROSECOND",
473                Self::Millisecond => "MILLISECOND",
474                Self::Second => "SECOND",
475                Self::Minute => "MINUTE",
476                Self::Hour => "HOUR",
477                Self::Vertex => "VERTEX",
478                Self::Pixel => "PIXEL",
479                Self::Triangle => "TRIANGLE",
480                Self::Primitive => "PRIMITIVE",
481                Self::Fragment => "FRAGMENT",
482                Self::Milliwatt => "MILLIWATT",
483                Self::Watt => "WATT",
484                Self::Kilowatt => "KILOWATT",
485                Self::Joule => "JOULE",
486                Self::Volt => "VOLT",
487                Self::Ampere => "AMPERE",
488                Self::Celsius => "CELSIUS",
489                Self::Fahrenheit => "FAHRENHEIT",
490                Self::Kelvin => "KELVIN",
491                Self::Percent => "PERCENT",
492                Self::Instruction => "INSTRUCTION",
493            }
494        }
495        /// Creates an enum from field names used in the ProtoBuf definition.
496        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
497            match value {
498                "NONE" => Some(Self::None),
499                "BIT" => Some(Self::Bit),
500                "KILOBIT" => Some(Self::Kilobit),
501                "MEGABIT" => Some(Self::Megabit),
502                "GIGABIT" => Some(Self::Gigabit),
503                "TERABIT" => Some(Self::Terabit),
504                "PETABIT" => Some(Self::Petabit),
505                "BYTE" => Some(Self::Byte),
506                "KILOBYTE" => Some(Self::Kilobyte),
507                "MEGABYTE" => Some(Self::Megabyte),
508                "GIGABYTE" => Some(Self::Gigabyte),
509                "TERABYTE" => Some(Self::Terabyte),
510                "PETABYTE" => Some(Self::Petabyte),
511                "HERTZ" => Some(Self::Hertz),
512                "KILOHERTZ" => Some(Self::Kilohertz),
513                "MEGAHERTZ" => Some(Self::Megahertz),
514                "GIGAHERTZ" => Some(Self::Gigahertz),
515                "TERAHERTZ" => Some(Self::Terahertz),
516                "PETAHERTZ" => Some(Self::Petahertz),
517                "NANOSECOND" => Some(Self::Nanosecond),
518                "MICROSECOND" => Some(Self::Microsecond),
519                "MILLISECOND" => Some(Self::Millisecond),
520                "SECOND" => Some(Self::Second),
521                "MINUTE" => Some(Self::Minute),
522                "HOUR" => Some(Self::Hour),
523                "VERTEX" => Some(Self::Vertex),
524                "PIXEL" => Some(Self::Pixel),
525                "TRIANGLE" => Some(Self::Triangle),
526                "PRIMITIVE" => Some(Self::Primitive),
527                "FRAGMENT" => Some(Self::Fragment),
528                "MILLIWATT" => Some(Self::Milliwatt),
529                "WATT" => Some(Self::Watt),
530                "KILOWATT" => Some(Self::Kilowatt),
531                "JOULE" => Some(Self::Joule),
532                "VOLT" => Some(Self::Volt),
533                "AMPERE" => Some(Self::Ampere),
534                "CELSIUS" => Some(Self::Celsius),
535                "FAHRENHEIT" => Some(Self::Fahrenheit),
536                "KELVIN" => Some(Self::Kelvin),
537                "PERCENT" => Some(Self::Percent),
538                "INSTRUCTION" => Some(Self::Instruction),
539                _ => None,
540            }
541        }
542    }
543}
544#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
545pub struct TrackEventCategory {
546    #[prost(string, optional, tag = "1")]
547    pub name: ::core::option::Option<::prost::alloc::string::String>,
548    #[prost(string, optional, tag = "2")]
549    pub description: ::core::option::Option<::prost::alloc::string::String>,
550    #[prost(string, repeated, tag = "3")]
551    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
552}
553#[derive(Clone, PartialEq, ::prost::Message)]
554pub struct TrackEventDescriptor {
555    #[prost(message, repeated, tag = "1")]
556    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
557}
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct VmProgram {
560    #[prost(uint32, optional, tag = "1")]
561    pub version: ::core::option::Option<u32>,
562    #[prost(message, repeated, tag = "2")]
563    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
564}
565#[derive(Clone, PartialEq, ::prost::Message)]
566pub struct VmInstruction {
567    #[prost(enumeration = "vm_instruction::AbortLevel", optional, tag = "6")]
568    pub abort_level: ::core::option::Option<i32>,
569    /// Sub-instructions executed if the current instruction succeeds
570    #[prost(message, repeated, tag = "7")]
571    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
572    #[prost(oneof = "vm_instruction::Operation", tags = "1, 2, 3, 4, 5")]
573    pub operation: ::core::option::Option<vm_instruction::Operation>,
574}
575/// Nested message and enum types in `VmInstruction`.
576pub mod vm_instruction {
577    #[derive(
578        Clone,
579        Copy,
580        Debug,
581        PartialEq,
582        Eq,
583        Hash,
584        PartialOrd,
585        Ord,
586        ::prost::Enumeration
587    )]
588    #[repr(i32)]
589    pub enum AbortLevel {
590        /// Skip current instruction but execute following ones
591        SkipCurrentInstruction = 1,
592        /// Skip current instruction as well as following ones (default)
593        SkipCurrentInstructionAndBreakOuter = 2,
594        /// Abort whole program
595        Abort = 3,
596    }
597    impl AbortLevel {
598        /// String value of the enum field names used in the ProtoBuf definition.
599        ///
600        /// The values are not transformed in any way and thus are considered stable
601        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
602        pub fn as_str_name(&self) -> &'static str {
603            match self {
604                Self::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
605                Self::SkipCurrentInstructionAndBreakOuter => {
606                    "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER"
607                }
608                Self::Abort => "ABORT",
609            }
610        }
611        /// Creates an enum from field names used in the ProtoBuf definition.
612        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
613            match value {
614                "SKIP_CURRENT_INSTRUCTION" => Some(Self::SkipCurrentInstruction),
615                "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER" => {
616                    Some(Self::SkipCurrentInstructionAndBreakOuter)
617                }
618                "ABORT" => Some(Self::Abort),
619                _ => None,
620            }
621        }
622    }
623    #[derive(Clone, PartialEq, ::prost::Oneof)]
624    pub enum Operation {
625        #[prost(message, tag = "1")]
626        Select(super::VmOpSelect),
627        #[prost(message, tag = "2")]
628        RegLoad(super::VmOpRegLoad),
629        #[prost(message, tag = "3")]
630        Merge(super::VmOpMerge),
631        #[prost(message, tag = "4")]
632        Set(super::VmOpSet),
633        #[prost(message, tag = "5")]
634        Del(super::VmOpDel),
635    }
636}
637#[derive(Clone, PartialEq, ::prost::Message)]
638pub struct VmOpSelect {
639    /// Enum SRC|DST|BOTH. Default=SRC.
640    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
641    pub cursor: ::core::option::Option<i32>,
642    #[prost(message, repeated, tag = "2")]
643    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
644    /// Creates the submessage if doesn't exist in the DST cursor
645    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
646    #[prost(bool, optional, tag = "3")]
647    pub create_if_not_exist: ::core::option::Option<bool>,
648}
649/// Nested message and enum types in `VmOpSelect`.
650pub mod vm_op_select {
651    /// A path component is either: (1) a field id to descend into (common case);
652    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
653    /// repeated fields, where we snoop a sub-field as a map key)
654    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
655    pub struct PathComponent {
656        /// Only valid when using field_id. This makes select have foreach
657        /// semantics. This means that the body of nested_instructions is
658        /// executed several times, once per each repeated submessage.
659        #[prost(bool, optional, tag = "5")]
660        pub is_repeated: ::core::option::Option<bool>,
661        /// Only valid when using map_key_field_id. This defines which
662        /// register (R1..R32) should be used to match the key of the dict
663        /// in a map lookup operation.
664        /// In other words:
665        /// foreach msg in repeated message {
666        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
667        ///       break;  // Lookup succeeded, PathComponent resolves here.
668        ///    }
669        /// }
670        #[prost(uint32, optional, tag = "6")]
671        pub register_to_match: ::core::option::Option<u32>,
672        /// Only valid when using field_id and is_repeated=true. When iterating
673        /// over repeated fields, stores the current iteration index into the
674        /// the register R1..R32 defined below. This can be used to do complex
675        /// operations like "find the entry in the array that has width==100,
676        /// remember its offset in the SRC array and overwrite the matching
677        /// i-th element in the DST array. We will probably never implement
678        /// this but it's here for completeness.
679        #[prost(uint32, optional, tag = "7")]
680        pub store_foreach_index_into_register: ::core::option::Option<u32>,
681        #[prost(oneof = "path_component::Field", tags = "1, 2, 3")]
682        pub field: ::core::option::Option<path_component::Field>,
683    }
684    /// Nested message and enum types in `PathComponent`.
685    pub mod path_component {
686        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
687        pub enum Field {
688            #[prost(uint32, tag = "1")]
689            FieldId(u32),
690            #[prost(uint32, tag = "2")]
691            ArrayIndex(u32),
692            /// The ID of the field in the repeated submessage that we
693            /// use as a key (e.g. LayerState.layer_id). When setting this
694            /// register_to_match must also be set, to tell what's the
695            /// expected value of the key we are looking up.
696            #[prost(uint32, tag = "3")]
697            MapKeyFieldId(u32),
698        }
699    }
700}
701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
702pub struct VmOpRegLoad {
703    /// SRC(default) | DST.
704    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
705    pub cursor: ::core::option::Option<i32>,
706    /// 1=R1, 2=R2... 32=R32
707    #[prost(uint32, optional, tag = "2")]
708    pub dst_register: ::core::option::Option<u32>,
709}
710/// Merges SRC into DST. Both need to point to a message (not a field).
711#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
712pub struct VmOpMerge {
713    /// When true, the merge operation will skip any field that is already
714    /// resolved as a message node in the destination tree.
715    ///
716    /// This is used to support merging of nested messages. Because ProtoVM
717    /// does not know the schema, a standard MERGE cannot distinguish
718    /// between a string and a message on the wire and it would overwrite
719    /// the entire blob, destroying granular updates.
720    ///
721    /// By setting this to true, a program can be implemented to do a
722    /// bottom-up, multi-step merge by traversing into and merging
723    /// the deepest submessages first, then moving up to the parent
724    /// message and merging it with skip_submessages = true.
725    #[prost(bool, optional, tag = "1")]
726    pub skip_submessages: ::core::option::Option<bool>,
727    /// When true, the merge operation will remove the dst field if the src field
728    /// is empty.
729    ///
730    /// This can be used to replicate the removal of a subobject within the
731    /// producer's state. E.g.
732    /// This event on the producer side: mProducerState.mSubobject = nullptr
733    /// can be represented by this patch: { producer_state { subobject {} }}
734    #[prost(bool, optional, tag = "2")]
735    pub del_if_src_empty: ::core::option::Option<bool>,
736}
737/// Copies SRC into DST. If a message, replaces the DST node, discarding any
738/// pre-existing field.
739#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
740pub struct VmOpSet {}
741/// Delete the field or message pointed by DST.
742#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
743pub struct VmOpDel {}
744#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
745#[repr(i32)]
746pub enum VmCursorEnum {
747    VmCursorUnspecified = 0,
748    VmCursorSrc = 1,
749    VmCursorDst = 2,
750    VmCursorBoth = 3,
751}
752impl VmCursorEnum {
753    /// String value of the enum field names used in the ProtoBuf definition.
754    ///
755    /// The values are not transformed in any way and thus are considered stable
756    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
757    pub fn as_str_name(&self) -> &'static str {
758        match self {
759            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
760            Self::VmCursorSrc => "VM_CURSOR_SRC",
761            Self::VmCursorDst => "VM_CURSOR_DST",
762            Self::VmCursorBoth => "VM_CURSOR_BOTH",
763        }
764    }
765    /// Creates an enum from field names used in the ProtoBuf definition.
766    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
767        match value {
768            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
769            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
770            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
771            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
772            _ => None,
773        }
774    }
775}
776/// This message is sent from Producer(s) to the tracing Service when registering
777/// to advertise their capabilities. It describes the structure of tracing
778/// protos that will be produced by the data source and the supported filters.
779#[derive(Clone, PartialEq, ::prost::Message)]
780pub struct DataSourceDescriptor {
781    /// e.g., "linux.ftrace", "chromium.tracing"
782    #[prost(string, optional, tag = "1")]
783    pub name: ::core::option::Option<::prost::alloc::string::String>,
784    /// When non-zero, this is a unique ID within the scope of the Producer for
785    /// this data source (it is NOT globally unique). This is useful to
786    /// differentiate between data sources with matching names when calling
787    /// UpdateDataSource(). This field has been introduced in November 2021
788    /// (v22, Android T) and is not supported on older versions.
789    #[prost(uint64, optional, tag = "7")]
790    pub id: ::core::option::Option<u64>,
791    /// When true the data source is expected to ack the stop request through the
792    /// NotifyDataSourceStopped() IPC. This field has been introduced after
793    /// Android P in Jul 2018 and is not supported on older versions.
794    #[prost(bool, optional, tag = "2")]
795    pub will_notify_on_stop: ::core::option::Option<bool>,
796    /// When true the data source is expected to ack the start request through the
797    /// NotifyDataSourceStarted() IPC. This field has been introduced after
798    /// Android P in March 2019 and is not supported on older versions.
799    #[prost(bool, optional, tag = "3")]
800    pub will_notify_on_start: ::core::option::Option<bool>,
801    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
802    /// set if the data source writes packets that refer to previous trace
803    /// contents, and knows how to stop referring to the already-emitted data.
804    #[prost(bool, optional, tag = "4")]
805    pub handles_incremental_state_clear: ::core::option::Option<bool>,
806    /// If true, indicates that the data source does nothing upon Flush. This
807    /// allows the service to reduce the flush-related IPC traffic and better deal
808    /// with frozen producers (see go/perfetto-frozen). This is usually the case
809    /// for data sources like 'track_event' that don't have access to the various
810    /// thread task runners to post a flush task and rely purely on server-side
811    /// scraping.
812    /// Introduced in v39 / Android V.
813    #[prost(bool, optional, tag = "9")]
814    pub no_flush: ::core::option::Option<bool>,
815    /// If present, the tracing service executes this program within a ProtoVM to
816    /// process overwritten packets (patches). The service computes a hash of the
817    /// program to detect and disambiguate between different versions; if multiple
818    /// versions (from different producers) are specified for the same data source,
819    /// the service instantiates a dedicated ProtoVM for each.
820    #[prost(message, optional, tag = "10")]
821    pub protovm_program: ::core::option::Option<VmProgram>,
822    /// Optional specification about available GPU counters.
823    #[prost(message, optional, tag = "5")]
824    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
825    #[prost(message, optional, tag = "6")]
826    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
827    #[prost(message, optional, tag = "8")]
828    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
829}
830/// Reports the state of the tracing service. Used to gather details about the
831/// data sources connected.
832/// See ConsumerPort::QueryServiceState().
833#[derive(Clone, PartialEq, ::prost::Message)]
834pub struct TracingServiceState {
835    /// Lists all the producers connected.
836    #[prost(message, repeated, tag = "1")]
837    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
838    /// Lists the data sources available.
839    #[prost(message, repeated, tag = "2")]
840    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
841    /// Lists the tracing sessions active AND owned by a consumer that has the same
842    /// UID of the caller (or all of them if the caller is root).
843    /// Introduced in v24 / Android T.
844    #[prost(message, repeated, tag = "6")]
845    pub tracing_sessions: ::prost::alloc::vec::Vec<
846        tracing_service_state::TracingSession,
847    >,
848    /// This is always set to true from v24 and beyond. This flag is only used to
849    /// tell the difference between: (1) talking to a recent service which happens
850    /// to have no tracing session active; (2) talking to an older version of the
851    /// service which will never report any tracing session.
852    #[prost(bool, optional, tag = "7")]
853    pub supports_tracing_sessions: ::core::option::Option<bool>,
854    /// Total number of tracing sessions.
855    #[prost(int32, optional, tag = "3")]
856    pub num_sessions: ::core::option::Option<i32>,
857    /// Number of tracing sessions in the started state. Always <= num_sessions.
858    #[prost(int32, optional, tag = "4")]
859    pub num_sessions_started: ::core::option::Option<i32>,
860    /// The version of traced (the same returned by `traced --version`).
861    /// This is a human readable string with and its format varies depending on
862    /// the build system and the repo (standalone vs AOSP).
863    /// This is intended for human debugging only.
864    #[prost(string, optional, tag = "5")]
865    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
866}
867/// Nested message and enum types in `TracingServiceState`.
868pub mod tracing_service_state {
869    /// Describes a producer process.
870    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
871    pub struct Producer {
872        /// Unique ID of the producer (monotonic counter).
873        #[prost(int32, optional, tag = "1")]
874        pub id: ::core::option::Option<i32>,
875        /// Typically matches the process name.
876        #[prost(string, optional, tag = "2")]
877        pub name: ::core::option::Option<::prost::alloc::string::String>,
878        /// Unix pid of the remote process. Supported only on Linux-based systems.
879        /// Introduced in v24 / Android T.
880        #[prost(int32, optional, tag = "5")]
881        pub pid: ::core::option::Option<i32>,
882        /// Unix uid of the remote process.
883        #[prost(int32, optional, tag = "3")]
884        pub uid: ::core::option::Option<i32>,
885        /// The version of the client library used by the producer.
886        /// This is a human readable string with and its format varies depending on
887        /// the build system and the repo (standalone vs AOSP).
888        /// This is intended for human debugging only.
889        #[prost(string, optional, tag = "4")]
890        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
891        /// Returns true if the process appears to be frozen (Android only).
892        /// Introduced in Perfetto V49 / Android 24Q4.
893        #[prost(bool, optional, tag = "6")]
894        pub frozen: ::core::option::Option<bool>,
895        /// Identifies the machine this producer is connected from in multi-machine
896        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
897        /// means the producer is connected from the local/host machine where the
898        /// tracing service is running.
899        /// Introduced in Perfetto V56 / Android 26Q3.
900        #[prost(uint32, optional, tag = "7")]
901        pub machine_id: ::core::option::Option<u32>,
902        /// Human-readable name of the machine, as advertised by the relay (usually
903        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
904        /// remote's `uname -s`). Only set when machine_id is non-zero.
905        /// Introduced in Perfetto V56 / Android 26Q3.
906        #[prost(string, optional, tag = "8")]
907        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
908    }
909    /// Describes a data source registered by a producer. Data sources are listed
910    /// regardless of the fact that they are being used or not.
911    #[derive(Clone, PartialEq, ::prost::Message)]
912    pub struct DataSource {
913        /// Descriptor passed by the data source when calling RegisterDataSource().
914        #[prost(message, optional, tag = "1")]
915        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
916        /// ID of the producer, as per Producer.id.
917        #[prost(int32, optional, tag = "2")]
918        pub producer_id: ::core::option::Option<i32>,
919    }
920    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
921    pub struct TracingSession {
922        /// The TracingSessionID.
923        #[prost(uint64, optional, tag = "1")]
924        pub id: ::core::option::Option<u64>,
925        /// The Unix uid of the consumer that started the session.
926        /// This is meaningful only if the caller is root. In all other cases only
927        /// tracing sessions that match the caller UID will be displayed.
928        #[prost(int32, optional, tag = "2")]
929        pub consumer_uid: ::core::option::Option<i32>,
930        /// Internal state of the tracing session.
931        /// These strings are FYI only and subjected to change.
932        #[prost(string, optional, tag = "3")]
933        pub state: ::core::option::Option<::prost::alloc::string::String>,
934        /// The unique_session_name as set in the trace config (might be empty).
935        #[prost(string, optional, tag = "4")]
936        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
937        /// The number and size of each buffer.
938        #[prost(uint32, repeated, packed = "false", tag = "5")]
939        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
940        /// Duration, as specified in the TraceConfig.duration_ms.
941        #[prost(uint32, optional, tag = "6")]
942        pub duration_ms: ::core::option::Option<u32>,
943        /// Number of data sources involved in the session.
944        #[prost(uint32, optional, tag = "7")]
945        pub num_data_sources: ::core::option::Option<u32>,
946        /// Time when the session was started, in the CLOCK_REALTIME domain.
947        /// Available only on Linux-based systems.
948        #[prost(int64, optional, tag = "8")]
949        pub start_realtime_ns: ::core::option::Option<i64>,
950        /// The bugreport_score, as set in TraceConfig.bugreport_score.
951        #[prost(int32, optional, tag = "9")]
952        pub bugreport_score: ::core::option::Option<i32>,
953        /// As per TraceConfig.bugreport_filename.
954        #[prost(string, optional, tag = "10")]
955        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
956        /// If true, the session is in the STARTED state. If false the session is in
957        /// any other state (see `state` field).
958        #[prost(bool, optional, tag = "11")]
959        pub is_started: ::core::option::Option<bool>,
960    }
961}
962#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
963pub struct TracingServiceCapabilities {
964    /// Whether the service supports QueryCapabilities() at all or not.
965    /// This is only used at the C++ level to distinguish the case of talking to
966    /// an older version of the service that doesn't support QueryCapabilities().
967    /// In that case the IPC layer will just reject the unknown call, and the
968    /// consumer_ipc_client_impl.cc will return an empty message where this field
969    /// is false. In all other cases, this is always set to true.
970    #[prost(bool, optional, tag = "1")]
971    pub has_query_capabilities: ::core::option::Option<bool>,
972    /// The set of known events that can be passed to ConsumerPort.ObserveEvents().
973    #[prost(
974        enumeration = "observable_events::Type",
975        repeated,
976        packed = "false",
977        tag = "2"
978    )]
979    pub observable_events: ::prost::alloc::vec::Vec<i32>,
980    /// Whether the service supports TraceConfig.output_path (for asking traced to
981    /// create the output file instead of passing a file descriptor).
982    #[prost(bool, optional, tag = "3")]
983    pub has_trace_config_output_path: ::core::option::Option<bool>,
984    /// Whether the service supports CloneSession and CLONE_SNAPSHOT triggers.
985    #[prost(bool, optional, tag = "4")]
986    pub has_clone_session: ::core::option::Option<bool>,
987}
988/// Statistics for the internals of the tracing service.
989///
990/// Next id: 19.
991#[derive(Clone, PartialEq, ::prost::Message)]
992pub struct TraceStats {
993    /// Stats for the TraceBuffer(s) of the current trace session.
994    #[prost(message, repeated, tag = "1")]
995    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
996    /// The thresholds of each the `writer_stats` histogram buckets. This is
997    /// emitted only once as all WriterStats share the same bucket layout.
998    /// This field has the same cardinality of the
999    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
1000    /// (The -1 is because the last overflow bucket is not reported in the _def).
1001    /// An array of values \[10, 100, 1000\] in the _def array means that there are
1002    /// four buckets (3 + the implicit overflow bucket):
1003    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
1004    #[prost(int64, repeated, packed = "false", tag = "17")]
1005    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
1006    #[prost(message, repeated, tag = "18")]
1007    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
1008    /// Num. producers connected (whether they are involved in the current tracing
1009    /// session or not).
1010    #[prost(uint32, optional, tag = "2")]
1011    pub producers_connected: ::core::option::Option<u32>,
1012    /// Num. producers ever seen for all trace sessions since startup (it's a good
1013    /// proxy for inferring num. producers crashed / killed).
1014    #[prost(uint64, optional, tag = "3")]
1015    pub producers_seen: ::core::option::Option<u64>,
1016    /// Num. data sources registered for all trace sessions.
1017    #[prost(uint32, optional, tag = "4")]
1018    pub data_sources_registered: ::core::option::Option<u32>,
1019    /// Num. data sources ever seen for all trace sessions since startup.
1020    #[prost(uint64, optional, tag = "5")]
1021    pub data_sources_seen: ::core::option::Option<u64>,
1022    /// Num. concurrently active tracing sessions.
1023    #[prost(uint32, optional, tag = "6")]
1024    pub tracing_sessions: ::core::option::Option<u32>,
1025    /// Num. buffers for all tracing session (not just the current one). This will
1026    /// be >= buffer_stats.size(), because the latter is only about the current
1027    /// session.
1028    #[prost(uint32, optional, tag = "7")]
1029    pub total_buffers: ::core::option::Option<u32>,
1030    /// Num. chunks that were discarded by the service before attempting to commit
1031    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1032    #[prost(uint64, optional, tag = "8")]
1033    pub chunks_discarded: ::core::option::Option<u64>,
1034    /// Num. patches that were discarded by the service before attempting to apply
1035    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1036    #[prost(uint64, optional, tag = "9")]
1037    pub patches_discarded: ::core::option::Option<u64>,
1038    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
1039    /// is a bug in the producer.
1040    #[prost(uint64, optional, tag = "10")]
1041    pub invalid_packets: ::core::option::Option<u64>,
1042    #[prost(message, optional, tag = "11")]
1043    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
1044    /// Count of Flush() requests (either from the Consumer, or self-induced
1045    /// periodic flushes). The final Flush() is also included in the count.
1046    #[prost(uint64, optional, tag = "12")]
1047    pub flushes_requested: ::core::option::Option<u64>,
1048    /// The count of the Flush() requests that were completed successfully.
1049    /// In a well behaving trace this should always be == `flush_requests`.
1050    #[prost(uint64, optional, tag = "13")]
1051    pub flushes_succeeded: ::core::option::Option<u64>,
1052    /// The count of the Flush() requests that failed (in most timed out).
1053    /// In a well behaving trace this should always be == 0.
1054    #[prost(uint64, optional, tag = "14")]
1055    pub flushes_failed: ::core::option::Option<u64>,
1056    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
1057    pub final_flush_outcome: ::core::option::Option<i32>,
1058}
1059/// Nested message and enum types in `TraceStats`.
1060pub mod trace_stats {
1061    /// From TraceBuffer::Stats.
1062    ///
1063    /// Next id: 25.
1064    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1065    pub struct BufferStats {
1066        /// Size of the circular buffer in bytes.
1067        #[prost(uint64, optional, tag = "12")]
1068        pub buffer_size: ::core::option::Option<u64>,
1069        /// Num. bytes written into the circular buffer, including chunk headers.
1070        #[prost(uint64, optional, tag = "1")]
1071        pub bytes_written: ::core::option::Option<u64>,
1072        /// Num. bytes overwritten before they have been read (i.e. loss of data).
1073        #[prost(uint64, optional, tag = "13")]
1074        pub bytes_overwritten: ::core::option::Option<u64>,
1075        /// Total size of chunks that were fully read from the circular buffer by the
1076        /// consumer. This may not be equal to |bytes_written| either in the middle
1077        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
1078        /// size of the chunks read from the buffer, including chunk headers, which
1079        /// will be different from the total size of packets returned to the
1080        /// consumer.
1081        ///
1082        /// The current utilization of the trace buffer (mid-tracing) can be obtained
1083        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
1084        /// adding the difference of |padding_bytes_written| and
1085        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
1086        /// Note that this represents the total size of buffered data in the buffer,
1087        /// yet this data may be spread non-contiguously through the buffer and may
1088        /// be overridden before the utilization reaches 100%.
1089        #[prost(uint64, optional, tag = "14")]
1090        pub bytes_read: ::core::option::Option<u64>,
1091        /// Num. bytes that were allocated as padding between chunks in the circular
1092        /// buffer.
1093        #[prost(uint64, optional, tag = "15")]
1094        pub padding_bytes_written: ::core::option::Option<u64>,
1095        /// Num. of padding bytes that were removed from the circular buffer when
1096        /// they were overwritten.
1097        ///
1098        /// The difference between |padding_bytes_written| and
1099        /// |padding_bytes_cleared| denotes the total size of padding currently
1100        /// present in the buffer.
1101        #[prost(uint64, optional, tag = "16")]
1102        pub padding_bytes_cleared: ::core::option::Option<u64>,
1103        /// Num. chunks (!= packets) written into the buffer.
1104        #[prost(uint64, optional, tag = "2")]
1105        pub chunks_written: ::core::option::Option<u64>,
1106        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
1107        /// the same chunk with additional packets appended to the end.
1108        #[prost(uint64, optional, tag = "10")]
1109        pub chunks_rewritten: ::core::option::Option<u64>,
1110        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
1111        /// instead of rewriting in place. We do this for scraped chunks that have
1112        /// been fully read: their old position can be so close to the write cursor
1113        /// that the packets we just recovered would be overwritten before any read.
1114        ///
1115        /// Introduced in v59 / Android 26Q3+.
1116        #[prost(uint64, optional, tag = "20")]
1117        pub chunks_relocated: ::core::option::Option<u64>,
1118        /// Num. chunks overwritten before they have been read (i.e. loss of data).
1119        #[prost(uint64, optional, tag = "3")]
1120        pub chunks_overwritten: ::core::option::Option<u64>,
1121        /// Num. chunks discarded (i.e. loss of data). For SMB chunks, this can be
1122        /// > 0 only when a buffer is configured with FillPolicy == DISCARD.
1123        /// TraceBufferV2 also counts SMB v2 batches rejected because their
1124        /// producer has a ProtoVM on this buffer.
1125        #[prost(uint64, optional, tag = "18")]
1126        pub chunks_discarded: ::core::option::Option<u64>,
1127        /// Num. chunks (!= packets) that were fully read from the circular buffer by
1128        /// the consumer. This may not be equal to |chunks_written| either in the
1129        /// middle of tracing, or if |chunks_overwritten| is non-zero.
1130        #[prost(uint64, optional, tag = "17")]
1131        pub chunks_read: ::core::option::Option<u64>,
1132        /// Num. chunks that were committed out of order.
1133        #[prost(uint64, optional, tag = "11")]
1134        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
1135        /// Num. times the ring buffer wrapped around.
1136        #[prost(uint64, optional, tag = "4")]
1137        pub write_wrap_count: ::core::option::Option<u64>,
1138        /// Number of completed TraceBufferV2 compactions.
1139        /// Includes compactions that move no chunks and excludes calls that skip
1140        /// compaction, such as calls on DISCARD or read-only buffers.
1141        ///
1142        /// Compaction moves remaining chunks to the front and clears the unused
1143        /// tail.
1144        /// It keeps the pages that a similar write cycle can reuse, and releases
1145        /// the other whole pages where supported.
1146        /// The next writes start after the remaining chunks, which can reduce how
1147        /// often |write_wrap_count| and |chunks_overwritten| increase.
1148        /// Incomplete chunks can remain until later writes overwrite them.
1149        ///
1150        /// Introduced in v59 / Android 26Q4+.
1151        #[prost(uint64, optional, tag = "23")]
1152        pub compactions: ::core::option::Option<u64>,
1153        /// Number of TraceBufferV2 compactions skipped because live chunks were
1154        /// on both sides of the write cursor.
1155        ///
1156        /// Introduced in v59 / Android 26Q4+.
1157        #[prost(uint64, optional, tag = "24")]
1158        pub compactions_skipped: ::core::option::Option<u64>,
1159        /// Num. out-of-band (OOB) patches that succeeded.
1160        #[prost(uint64, optional, tag = "5")]
1161        pub patches_succeeded: ::core::option::Option<u64>,
1162        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
1163        #[prost(uint64, optional, tag = "6")]
1164        pub patches_failed: ::core::option::Option<u64>,
1165        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
1166        /// successful packet read.
1167        #[prost(uint64, optional, tag = "7")]
1168        pub readaheads_succeeded: ::core::option::Option<u64>,
1169        /// Num. readaheads aborted because of missing chunks in the sequence stream.
1170        /// Note that a small number > 0 is totally expected: occasionally, when
1171        /// issuing a read, the very last packet in a sequence might be incomplete
1172        /// (because the producer is still writing it while we read). The read will
1173        /// stop at that point, for that sequence, increasing this counter.
1174        #[prost(uint64, optional, tag = "8")]
1175        pub readaheads_failed: ::core::option::Option<u64>,
1176        /// Num. of violations of the SharedMemoryABI or the shared ring buffer ABI
1177        /// found while writing or reading the buffer. This includes SMB v2 packets
1178        /// that TraceBufferV2 cannot rewrite because they are malformed or nest
1179        /// more than 128 groups. It also includes chunks whose writer ID already
1180        /// uses the other input format.
1181        /// This is an indication of either a bug in the producer(s) or malicious
1182        /// producer(s).
1183        #[prost(uint64, optional, tag = "9")]
1184        pub abi_violations: ::core::option::Option<u64>,
1185        /// Num. of times the service detected packet loss on a trace writer
1186        /// sequence. This is usually caused by exhaustion of available chunks in the
1187        /// writer process's SMB. Note that this relies on the client's TraceWriter
1188        /// indicating this loss to the service -- packets lost for other reasons are
1189        /// not reflected in this stat.
1190        #[prost(uint64, optional, tag = "19")]
1191        pub trace_writer_packet_loss: ::core::option::Option<u64>,
1192        /// TraceBufferV2 only. Num. SMB v2 packets dropped at read time because
1193        /// they contain a nested message larger than 256 MiB, the limit of the
1194        /// four-byte length field. The packet can be valid. Loss is reported on the
1195        /// next packet of the same sequence.
1196        #[prost(uint64, optional, tag = "22")]
1197        pub oversized_packets_dropped: ::core::option::Option<u64>,
1198    }
1199    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
1200    /// visible as a unique sequence ID in the trace.
1201    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1202    pub struct WriterStats {
1203        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
1204        /// correlate the stats with the actual packet types.
1205        #[prost(uint64, optional, tag = "1")]
1206        pub sequence_id: ::core::option::Option<u64>,
1207        /// The buffer index (0..N, as defined in the TraceConfig).
1208        #[prost(uint32, optional, tag = "4")]
1209        pub buffer: ::core::option::Option<u32>,
1210        /// Which protocol carried this writer's chunks to the buffer.
1211        /// This is a bitmask of ProtocolAbiVersion (see producer_port.proto).
1212        /// The value is 1 for the SMB (v1) and 2 for the tracing v2 ring buffer.
1213        /// Both bits are set only if a v1 and a v2 writer of the same producer used
1214        /// the same writer ID which should NOT be happening.
1215        #[prost(uint32, optional, tag = "5")]
1216        pub protocol_abi_versions: ::core::option::Option<u32>,
1217        /// These two arrays have the same cardinality and match the cardinality of
1218        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
1219        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
1220        /// for each bucket.
1221        #[prost(uint64, repeated, tag = "2")]
1222        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
1223        #[prost(int64, repeated, tag = "3")]
1224        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
1225    }
1226    /// This is set only when the TraceConfig specifies a TraceFilter.
1227    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1228    pub struct FilterStats {
1229        #[prost(uint64, optional, tag = "1")]
1230        pub input_packets: ::core::option::Option<u64>,
1231        #[prost(uint64, optional, tag = "2")]
1232        pub input_bytes: ::core::option::Option<u64>,
1233        #[prost(uint64, optional, tag = "3")]
1234        pub output_bytes: ::core::option::Option<u64>,
1235        #[prost(uint64, optional, tag = "4")]
1236        pub errors: ::core::option::Option<u64>,
1237        #[prost(uint64, optional, tag = "5")]
1238        pub time_taken_ns: ::core::option::Option<u64>,
1239        /// The number of bytes discarded by the filter (i.e. output - input).
1240        /// The array has one entry for each buffer defined in the config (unless no
1241        /// packets for that buffer were seen and hence filtered).
1242        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
1243        /// (output_bytes - input_bytes) because the filter might also discard
1244        /// server-generated synthetic packets, that have no buffer index.
1245        #[prost(uint64, repeated, packed = "false", tag = "20")]
1246        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
1247    }
1248    #[derive(
1249        Clone,
1250        Copy,
1251        Debug,
1252        PartialEq,
1253        Eq,
1254        Hash,
1255        PartialOrd,
1256        Ord,
1257        ::prost::Enumeration
1258    )]
1259    #[repr(i32)]
1260    pub enum FinalFlushOutcome {
1261        FinalFlushUnspecified = 0,
1262        FinalFlushSucceeded = 1,
1263        FinalFlushFailed = 2,
1264    }
1265    impl FinalFlushOutcome {
1266        /// String value of the enum field names used in the ProtoBuf definition.
1267        ///
1268        /// The values are not transformed in any way and thus are considered stable
1269        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1270        pub fn as_str_name(&self) -> &'static str {
1271            match self {
1272                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
1273                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
1274                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
1275            }
1276        }
1277        /// Creates an enum from field names used in the ProtoBuf definition.
1278        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1279            match value {
1280                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
1281                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
1282                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
1283                _ => None,
1284            }
1285        }
1286    }
1287}
1288/// Builtin clock domains used in Perfetto traces.
1289///
1290/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
1291/// representing the trace file's own timeline. Each trace file gets its own
1292/// instance (scoped by trace file index).
1293///
1294/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
1295/// fallback: if the first timestamp conversion uses a clock other than the
1296/// trace file clock and no explicit clock snapshot data exists, the trace time
1297/// is switched to BOOTTIME. This fallback does not fire for modern traces that
1298/// include ClockSnapshots or that only use the trace file clock directly.
1299///
1300/// The `primary_trace_clock` field in ClockSnapshot can definitively override
1301/// the trace time clock regardless of the above.
1302#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1303#[repr(i32)]
1304pub enum BuiltinClock {
1305    Unknown = 0,
1306    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
1307    Realtime = 1,
1308    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
1309    RealtimeCoarse = 2,
1310    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
1311    Monotonic = 3,
1312    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
1313    MonotonicCoarse = 4,
1314    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
1315    MonotonicRaw = 5,
1316    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
1317    /// For proto traces, this is used as a backwards-compatible fallback trace
1318    /// time clock when no explicit clock snapshots are present.
1319    Boottime = 6,
1320    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
1321    Tsc = 9,
1322    /// Corresponds to the perf event clock (PERF_CLOCK).
1323    Perf = 10,
1324    /// A synthetic clock representing the trace file's own timeline. Each trace
1325    /// file gets its own instance (scoped by trace file index). This is the
1326    /// default trace time clock before any clock snapshot or format-specific
1327    /// override takes effect.
1328    TraceFile = 11,
1329    MaxId = 63,
1330}
1331impl BuiltinClock {
1332    /// String value of the enum field names used in the ProtoBuf definition.
1333    ///
1334    /// The values are not transformed in any way and thus are considered stable
1335    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1336    pub fn as_str_name(&self) -> &'static str {
1337        match self {
1338            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
1339            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
1340            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
1341            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
1342            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
1343            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
1344            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
1345            Self::Tsc => "BUILTIN_CLOCK_TSC",
1346            Self::Perf => "BUILTIN_CLOCK_PERF",
1347            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
1348            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
1349        }
1350    }
1351    /// Creates an enum from field names used in the ProtoBuf definition.
1352    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1353        match value {
1354            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
1355            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
1356            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
1357            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
1358            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
1359            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
1360            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
1361            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
1362            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
1363            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
1364            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
1365            _ => None,
1366        }
1367    }
1368}
1369/// Semantic types for string fields. This tells the filter what kind of
1370/// data the field contains, so it can apply the right filtering rules.
1371/// See /rfcs/0011-subset-string-filter-rules.md for design details.
1372/// Introduced in: Perfetto v54.
1373#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1374#[repr(i32)]
1375pub enum SemanticType {
1376    Unspecified = 0,
1377    Atrace = 1,
1378    Job = 2,
1379    Wakelock = 3,
1380}
1381impl SemanticType {
1382    /// String value of the enum field names used in the ProtoBuf definition.
1383    ///
1384    /// The values are not transformed in any way and thus are considered stable
1385    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1386    pub fn as_str_name(&self) -> &'static str {
1387        match self {
1388            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
1389            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
1390            Self::Job => "SEMANTIC_TYPE_JOB",
1391            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
1392        }
1393    }
1394    /// Creates an enum from field names used in the ProtoBuf definition.
1395    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1396        match value {
1397            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1398            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
1399            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
1400            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
1401            _ => None,
1402        }
1403    }
1404}
1405/// Arbitrary key value pairs which can attached to a trace to provide context
1406/// about any facet of the trace. This can include, what data it contains,
1407/// properties of the host / machine the trace was collected on, and other
1408/// interesting information about a trace.
1409/// /
1410/// Examples include:
1411/// gradle_version = "9.0.10-alpha01"
1412/// java_major_version = 24
1413/// /
1414/// Attributes can be written as a TracePacket or set in
1415/// `TraceConfig.trace_attributes` (e.g. via `perfetto --add-attribute`).
1416/// /
1417/// All keys get prefixed with `trace_attribute.` in the UI and in
1418/// `traceprocessor`. If there are multiple trace attribute packets that use the
1419/// same key, then the latest value wins.
1420/// These key value pairs show up in the `Overview` section in
1421/// Perfetto UI. Additionally, these key, value pairs can also be queried using
1422/// Pefetto SQL by using the following query:
1423/// /
1424/// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
1425#[derive(Clone, PartialEq, ::prost::Message)]
1426pub struct TraceAttributes {
1427    #[prost(message, repeated, tag = "1")]
1428    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
1429}
1430/// Nested message and enum types in `TraceAttributes`.
1431pub mod trace_attributes {
1432    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1433    pub struct Attribute {
1434        /// The key
1435        #[prost(string, optional, tag = "1")]
1436        pub key: ::core::option::Option<::prost::alloc::string::String>,
1437        /// The value
1438        #[prost(oneof = "attribute::Value", tags = "2, 3")]
1439        pub value: ::core::option::Option<attribute::Value>,
1440    }
1441    /// Nested message and enum types in `Attribute`.
1442    pub mod attribute {
1443        /// The value
1444        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1445        pub enum Value {
1446            #[prost(int64, tag = "2")]
1447            LongValue(i64),
1448            #[prost(string, tag = "3")]
1449            StringValue(::prost::alloc::string::String),
1450        }
1451    }
1452}
1453/// Options for the android.aflags data source.
1454/// This data source captures snapshots of Android aconfig flags.
1455/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
1456/// for more information on aconfig flags.
1457#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1458pub struct AndroidAflagsConfig {
1459    /// Frequency of polling. If absent or 0, the state will be recorded once,
1460    /// at the start of the trace.
1461    ///
1462    /// It is recommended to either leave this absent or set it to a large
1463    /// value as each invocation of the `aflags` tool can be time consuming
1464    /// (approx. 350ms) and also triggers an expensive flush. This is required to
1465    /// be > 1000ms if set, to avoid excessive CPU usage.
1466    #[prost(uint32, optional, tag = "1")]
1467    pub poll_ms: ::core::option::Option<u32>,
1468}
1469/// Data source that lists game modes and game interventions of games
1470/// on an Android device.
1471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1472pub struct AndroidGameInterventionListConfig {
1473    /// If not empty, emit info about only the following list of package names
1474    /// (exact match, no regex). Otherwise, emit info about all packages.
1475    #[prost(string, repeated, tag = "1")]
1476    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1477}
1478/// Custom configuration for the "android.input.inputevent" data source.
1479///
1480/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
1481///
1482/// Next ID: 6
1483#[derive(Clone, PartialEq, ::prost::Message)]
1484pub struct AndroidInputEventConfig {
1485    /// The tracing mode to use. If unspecified, it will default to
1486    /// TRACE_MODE_USE_RULES.
1487    #[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
1488    pub mode: ::core::option::Option<i32>,
1489    /// The list of rules to use to determine the trace level of events.
1490    /// Each event will be traced using the TraceLevel of the first rule that it
1491    /// triggers from this list. The rules are evaluated in the order in which they
1492    /// are specified. If an event does not match any of the rules,
1493    /// TRACE_LEVEL_NONE will be used by default.
1494    #[prost(message, repeated, tag = "2")]
1495    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
1496    /// Trace input events processed by the system as they are being dispatched
1497    /// to application windows. All trace rules will apply.
1498    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
1499    ///    it will
1500    ///      trace InputDispatcher's inbound events (which does not include events
1501    ///      synthesized within InputDispatcher) that match the rules.
1502    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
1503    ///    events
1504    ///      matching the rules, including all events synthesized within
1505    ///      InputDispatcher, will be traced.
1506    #[prost(bool, optional, tag = "3")]
1507    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
1508    /// Trace details about which windows the system is sending each input event
1509    /// to. All trace rules will apply.
1510    #[prost(bool, optional, tag = "4")]
1511    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
1512    /// Trace evdev events received from the kernel, including device additions and
1513    /// removals.
1514    #[prost(bool, optional, tag = "5")]
1515    pub trace_evdev_events: ::core::option::Option<bool>,
1516}
1517/// Nested message and enum types in `AndroidInputEventConfig`.
1518pub mod android_input_event_config {
1519    /// A rule that specifies the TraceLevel for an event based on matching
1520    /// conditions. All matchers in the rule are optional. To trigger this rule, an
1521    /// event must match all of its specified matchers (i.e. the matchers function
1522    /// like a series of conditions connected by a logical 'AND' operator). A rule
1523    /// with no specified matchers will match all events. Next ID: 6
1524    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1525    pub struct TraceRule {
1526        /// The trace level to be used for events that trigger this rule.
1527        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
1528        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
1529        pub trace_level: ::core::option::Option<i32>,
1530        /// Package matchers
1531        ///
1532        /// Respectively matches if all or any of the target apps for this event are
1533        /// contained in the specified list of package names.
1534        ///
1535        /// Intended usage:
1536        ///    - Use match_all_packages to selectively allow tracing for the listed
1537        ///    packages.
1538        ///    - Use match_any_packages to selectively deny tracing for certain
1539        ///    packages.
1540        ///
1541        /// WARNING: Great care must be taken when designing rules for field tracing!
1542        ///           This is because each event is almost always sent to more than
1543        ///           one app.
1544        ///               For example, when allowing tracing for a package that has a
1545        ///               spy window
1546        ///           over the display (e.g. SystemUI) using match_any_packages,
1547        ///           essentially all input will be recorded on that display. This is
1548        ///           because the events will be sent to the spy as well as the
1549        ///           foreground app, and regardless of what the foreground app is,
1550        ///           the event will end up being traced.
1551        ///               Alternatively, when attempting to block tracing for specific
1552        ///               packages using
1553        ///           match_all_packages, no events will likely be blocked. This is
1554        ///           because the event will also be sent to other apps (such as, but
1555        ///           not limited to, ones with spy windows), so the matcher will not
1556        ///           match unless all other targets are also listed under the
1557        ///           match_all_packages list.
1558        #[prost(string, repeated, tag = "2")]
1559        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1560        #[prost(string, repeated, tag = "3")]
1561        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1562        /// Matches if the event is secure, which means that at least one of the
1563        /// targets of this event is using the window flag FLAG_SECURE.
1564        #[prost(bool, optional, tag = "4")]
1565        pub match_secure: ::core::option::Option<bool>,
1566        /// Matches if there was an active IME connection while this event was being
1567        /// processed.
1568        #[prost(bool, optional, tag = "5")]
1569        pub match_ime_connection_active: ::core::option::Option<bool>,
1570    }
1571    /// Trace modes are tracing presets that are included in the system.
1572    #[derive(
1573        Clone,
1574        Copy,
1575        Debug,
1576        PartialEq,
1577        Eq,
1578        Hash,
1579        PartialOrd,
1580        Ord,
1581        ::prost::Enumeration
1582    )]
1583    #[repr(i32)]
1584    pub enum TraceMode {
1585        /// Preset mode for maximal tracing.
1586        /// WARNING: This will bypass all privacy measures on debuggable builds, and
1587        /// will record all
1588        ///           input events processed by the system, regardless of the context
1589        ///           in which they were processed. It should only be used for tracing
1590        ///           on a local device or for tests. It should NEVER be used for
1591        ///           field tracing.
1592        TraceAll = 0,
1593        /// Use the tracing rules defined in this config to specify what events to
1594        /// trace.
1595        UseRules = 1,
1596    }
1597    impl TraceMode {
1598        /// String value of the enum field names used in the ProtoBuf definition.
1599        ///
1600        /// The values are not transformed in any way and thus are considered stable
1601        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1602        pub fn as_str_name(&self) -> &'static str {
1603            match self {
1604                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
1605                Self::UseRules => "TRACE_MODE_USE_RULES",
1606            }
1607        }
1608        /// Creates an enum from field names used in the ProtoBuf definition.
1609        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1610            match value {
1611                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
1612                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
1613                _ => None,
1614            }
1615        }
1616    }
1617    /// The level of tracing that should be applied to an event.
1618    #[derive(
1619        Clone,
1620        Copy,
1621        Debug,
1622        PartialEq,
1623        Eq,
1624        Hash,
1625        PartialOrd,
1626        Ord,
1627        ::prost::Enumeration
1628    )]
1629    #[repr(i32)]
1630    pub enum TraceLevel {
1631        /// Do not trace the input event.
1632        None = 0,
1633        /// Trace the event as a redacted event, where certain sensitive fields are
1634        /// omitted from the trace, including the coordinates of pointer events and
1635        /// the key/scan codes of key events.
1636        Redacted = 1,
1637        /// Trace the complete event.
1638        Complete = 2,
1639    }
1640    impl TraceLevel {
1641        /// String value of the enum field names used in the ProtoBuf definition.
1642        ///
1643        /// The values are not transformed in any way and thus are considered stable
1644        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1645        pub fn as_str_name(&self) -> &'static str {
1646            match self {
1647                Self::None => "TRACE_LEVEL_NONE",
1648                Self::Redacted => "TRACE_LEVEL_REDACTED",
1649                Self::Complete => "TRACE_LEVEL_COMPLETE",
1650            }
1651        }
1652        /// Creates an enum from field names used in the ProtoBuf definition.
1653        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1654            match value {
1655                "TRACE_LEVEL_NONE" => Some(Self::None),
1656                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
1657                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
1658                _ => None,
1659            }
1660        }
1661    }
1662}
1663/// Values from NDK's android/log.h.
1664#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1665#[repr(i32)]
1666pub enum AndroidLogId {
1667    /// MAIN.
1668    LidDefault = 0,
1669    LidRadio = 1,
1670    LidEvents = 2,
1671    LidSystem = 3,
1672    LidCrash = 4,
1673    LidStats = 5,
1674    LidSecurity = 6,
1675    LidKernel = 7,
1676}
1677impl AndroidLogId {
1678    /// String value of the enum field names used in the ProtoBuf definition.
1679    ///
1680    /// The values are not transformed in any way and thus are considered stable
1681    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1682    pub fn as_str_name(&self) -> &'static str {
1683        match self {
1684            Self::LidDefault => "LID_DEFAULT",
1685            Self::LidRadio => "LID_RADIO",
1686            Self::LidEvents => "LID_EVENTS",
1687            Self::LidSystem => "LID_SYSTEM",
1688            Self::LidCrash => "LID_CRASH",
1689            Self::LidStats => "LID_STATS",
1690            Self::LidSecurity => "LID_SECURITY",
1691            Self::LidKernel => "LID_KERNEL",
1692        }
1693    }
1694    /// Creates an enum from field names used in the ProtoBuf definition.
1695    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1696        match value {
1697            "LID_DEFAULT" => Some(Self::LidDefault),
1698            "LID_RADIO" => Some(Self::LidRadio),
1699            "LID_EVENTS" => Some(Self::LidEvents),
1700            "LID_SYSTEM" => Some(Self::LidSystem),
1701            "LID_CRASH" => Some(Self::LidCrash),
1702            "LID_STATS" => Some(Self::LidStats),
1703            "LID_SECURITY" => Some(Self::LidSecurity),
1704            "LID_KERNEL" => Some(Self::LidKernel),
1705            _ => None,
1706        }
1707    }
1708}
1709#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1710#[repr(i32)]
1711pub enum AndroidLogPriority {
1712    PrioUnspecified = 0,
1713    /// _DEFAULT, but should never be seen in logs.
1714    PrioUnused = 1,
1715    PrioVerbose = 2,
1716    PrioDebug = 3,
1717    PrioInfo = 4,
1718    PrioWarn = 5,
1719    PrioError = 6,
1720    PrioFatal = 7,
1721}
1722impl AndroidLogPriority {
1723    /// String value of the enum field names used in the ProtoBuf definition.
1724    ///
1725    /// The values are not transformed in any way and thus are considered stable
1726    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1727    pub fn as_str_name(&self) -> &'static str {
1728        match self {
1729            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
1730            Self::PrioUnused => "PRIO_UNUSED",
1731            Self::PrioVerbose => "PRIO_VERBOSE",
1732            Self::PrioDebug => "PRIO_DEBUG",
1733            Self::PrioInfo => "PRIO_INFO",
1734            Self::PrioWarn => "PRIO_WARN",
1735            Self::PrioError => "PRIO_ERROR",
1736            Self::PrioFatal => "PRIO_FATAL",
1737        }
1738    }
1739    /// Creates an enum from field names used in the ProtoBuf definition.
1740    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1741        match value {
1742            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
1743            "PRIO_UNUSED" => Some(Self::PrioUnused),
1744            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
1745            "PRIO_DEBUG" => Some(Self::PrioDebug),
1746            "PRIO_INFO" => Some(Self::PrioInfo),
1747            "PRIO_WARN" => Some(Self::PrioWarn),
1748            "PRIO_ERROR" => Some(Self::PrioError),
1749            "PRIO_FATAL" => Some(Self::PrioFatal),
1750            _ => None,
1751        }
1752    }
1753}
1754#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1755pub struct AndroidLogConfig {
1756    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
1757    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1758    /// If set ignores all log messages whose prio is < the given value.
1759    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
1760    pub min_prio: ::core::option::Option<i32>,
1761    /// If non-empty ignores all log messages whose tag doesn't match one of the
1762    /// specified values.
1763    #[prost(string, repeated, tag = "4")]
1764    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1765    /// If true, includes the contents of the logcat buffers that were already
1766    /// present before the data source started. By default (false), only new
1767    /// log entries produced after the data source starts are recorded.
1768    /// Can be useful for boot traces or situations where logs from before
1769    /// traced started are important.
1770    #[prost(bool, optional, tag = "5")]
1771    pub preserve_log_buffer: ::core::option::Option<bool>,
1772}
1773/// Data source that polls for display state. This should only be used for
1774/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1775#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1776pub struct AndroidPolledStateConfig {
1777    /// Frequency of polling. If absent the state will be recorded once, at the
1778    /// start of the trace.
1779    /// This is required to be > 100ms to avoid excessive CPU usage.
1780    #[prost(uint32, optional, tag = "1")]
1781    pub poll_ms: ::core::option::Option<u32>,
1782}
1783/// Configuration for the "android.process_state" data source.
1784#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1785pub struct AndroidProcessStateConfig {
1786    /// If true, dumps process name, start seq id, and start time in the snapshot.
1787    /// When false (default), these fields are omitted to save trace buffer space.
1788    #[prost(bool, optional, tag = "1")]
1789    pub dump_process_metadata: ::core::option::Option<bool>,
1790}
1791/// Data source that polls for system properties.
1792#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1793pub struct AndroidSystemPropertyConfig {
1794    /// Frequency of polling. If absent the state will be recorded once, at the
1795    /// start of the trace.
1796    /// This is required to be > 100ms to avoid excessive CPU usage.
1797    #[prost(uint32, optional, tag = "1")]
1798    pub poll_ms: ::core::option::Option<u32>,
1799    /// Properties to poll. All property names must start with "debug.tracing.".
1800    #[prost(string, repeated, tag = "2")]
1801    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1802}
1803/// Data source that controls the system properties used to guard initialization
1804/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1805/// processes like SurfaceFlinger.
1806///
1807/// This data source only tells Skia to initialized the Perfetto SDK and start
1808/// routing data to the Track Event system instead of ATrace. For those events
1809/// to actually show up in a trace, the track_event data source must be used as
1810/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1811/// processes may need to be restarted for Skia to revert to using ATrace if
1812/// Track Events are no longer desired.
1813///
1814/// In addition to switching Skia to use Perfetto's track_event data source,
1815/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1816/// internal tracing constraints and allows the track_event config to specify
1817/// which categories should be traced. Filtering to the "skia.always" category
1818/// *tag* in a track_event config can be used to re-enable the standard
1819/// constraints typically used with ATrace.
1820///
1821/// Data source name: android.sdk_sysprop_guard
1822/// Introduced in Android 14 (U) QPR1.
1823/// Next id: 4
1824#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1825pub struct AndroidSdkSyspropGuardConfig {
1826    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1827    /// integration with the track_event data source in RenderEngine.
1828    /// If false or omitted, the simpler ATrace fallback is used.
1829    ///
1830    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1831    /// restarted.
1832    ///
1833    /// Specifically this sets the following system properties:
1834    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1835    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1836    ///
1837    /// Does not affect actual track_event data *collection*, which must be
1838    /// configured separately.
1839    #[prost(bool, optional, tag = "1")]
1840    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1841    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1842    /// with the track_event data source. hwui_package_name_filter
1843    /// can be used to control which apps are affected.
1844    /// If false or omitted, the simpler ATrace fallback is used.
1845    ///
1846    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1847    /// restarted.
1848    ///
1849    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1850    /// If filtering is NOT set, this controls these GLOBAL system properties:
1851    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1852    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1853    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1854    /// for each package listed in the filter:
1855    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1856    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1857    ///
1858    /// Does not affect actual track_event data *collection*, which must be
1859    /// configured separately.
1860    #[prost(bool, optional, tag = "2")]
1861    pub hwui_skia_track_events: ::core::option::Option<bool>,
1862    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1863    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1864    #[prost(string, repeated, tag = "3")]
1865    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1866        ::prost::alloc::string::String,
1867    >,
1868}
1869/// Configuration for the android.app_wakelocks data source.
1870#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1871pub struct AppWakelocksConfig {
1872    /// Specifies the delay (in milliseconds) after which the data source will
1873    /// attempt to write events. Writing less frequently reduces the trace size by
1874    /// making better use of the packed arrays and reducing the total number of
1875    /// TracePackets needed (which each have dozens of bytes of overhead). The
1876    /// suggested delay is 5000ms.
1877    #[prost(int32, optional, tag = "1")]
1878    pub write_delay_ms: ::core::option::Option<i32>,
1879    /// When set, wakelocks held for less than this amount of time are filtered
1880    /// from the resulting trace. Note: duration is computed by matching wakelocks
1881    /// with identical attributes, not by tracking the underlying objects. The
1882    /// threshold should be < the trace's flush_period_ms.
1883    #[prost(int32, optional, tag = "2")]
1884    pub filter_duration_below_ms: ::core::option::Option<i32>,
1885    /// When true, the owner_pid is dropped from the resulting output, reducing the
1886    /// size of the interning tables.
1887    #[prost(bool, optional, tag = "3")]
1888    pub drop_owner_pid: ::core::option::Option<bool>,
1889}
1890/// Data source that records CPU per UID data.
1891#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1892pub struct CpuPerUidConfig {
1893    /// Record at this frequency.
1894    #[prost(uint32, optional, tag = "1")]
1895    pub poll_ms: ::core::option::Option<u32>,
1896}
1897/// Custom configuration for the "android.inputmethod" data source.
1898#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1899pub struct InputMethodConfig {
1900    /// If true, enables tracing in the clients.
1901    #[prost(bool, optional, tag = "1")]
1902    pub client: ::core::option::Option<bool>,
1903    /// If true, enables tracing in InputMethodService.
1904    #[prost(bool, optional, tag = "2")]
1905    pub service: ::core::option::Option<bool>,
1906    /// If true, enables tracing in InputMethodManagerService.
1907    #[prost(bool, optional, tag = "3")]
1908    pub manager_service: ::core::option::Option<bool>,
1909}
1910/// Data source that records kernel (and native) wakelock data.
1911#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1912pub struct KernelWakelocksConfig {
1913    /// Record at this frequency.
1914    #[prost(uint32, optional, tag = "1")]
1915    pub poll_ms: ::core::option::Option<u32>,
1916}
1917/// Network tracing data source that records details on all packets sent or
1918/// received by the network.
1919#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1920pub struct NetworkPacketTraceConfig {
1921    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1922    /// ring buffer. The polling interval should be such that the ring buffer is
1923    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1924    /// The minimum polling rate is 100ms (values below this are ignored).
1925    /// Introduced in Android 14 (U).
1926    #[prost(uint32, optional, tag = "1")]
1927    pub poll_ms: ::core::option::Option<u32>,
1928    /// The aggregation_threshold is the number of packets at which an event will
1929    /// switch from per-packet details to aggregate details. For example, a value
1930    /// of 50 means that if a particular event (grouped by the unique combinations
1931    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1932    /// packets, the exact timestamp and length are recorded for each packet. If
1933    /// there were 50 or more packets in an event, it would only record the total
1934    /// duration, packets, and length. A value of zero or unspecified will always
1935    /// / record per-packet details. A value of 1 always records aggregate details.
1936    #[prost(uint32, optional, tag = "2")]
1937    pub aggregation_threshold: ::core::option::Option<u32>,
1938    /// Specifies the maximum number of packet contexts to intern at a time. This
1939    /// prevents the interning table from growing too large and controls whether
1940    /// interning is enabled or disabled (a value of zero disables interning and
1941    /// is the default). When a data sources interning table reaches this amount,
1942    /// packet contexts will be inlined into NetworkPacketEvents.
1943    #[prost(uint32, optional, tag = "3")]
1944    pub intern_limit: ::core::option::Option<u32>,
1945    /// The following fields specify whether certain fields should be dropped from
1946    /// the output. Dropping fields improves normalization results, reduces the
1947    /// size of the interning table, and slightly reduces event size.
1948    #[prost(bool, optional, tag = "4")]
1949    pub drop_local_port: ::core::option::Option<bool>,
1950    #[prost(bool, optional, tag = "5")]
1951    pub drop_remote_port: ::core::option::Option<bool>,
1952    #[prost(bool, optional, tag = "6")]
1953    pub drop_tcp_flags: ::core::option::Option<bool>,
1954}
1955/// Data source that lists details (such as version code) about packages on an
1956/// Android device.
1957#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1958pub struct PackagesListConfig {
1959    /// If not empty, emit info about only the following list of package names
1960    /// (exact match, no regex). Can be combined with
1961    /// |package_name_regex_filter|: a package is included if it matches either
1962    /// filter. If both filters are empty, emit info about all packages.
1963    #[prost(string, repeated, tag = "1")]
1964    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1965    /// If not empty, emit info about only the packages whose names match any of
1966    /// the following regexes (full match, not partial). Can be combined with
1967    /// |package_name_filter|: a package is included if it matches either filter.
1968    /// If both filters are empty, emit info about all packages.
1969    /// This field was introduced in Android 26Q2 (Perfetto v55).
1970    #[prost(string, repeated, tag = "3")]
1971    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1972        ::prost::alloc::string::String,
1973    >,
1974    /// If present and non-zero, the data source will periodically poll for CPU
1975    /// use by packages and only emit results for those that it sees. If absent,
1976    /// the data source will emit results for all packages at startup. The package
1977    /// name filters apply either way.
1978    #[prost(uint32, optional, tag = "2")]
1979    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1980}
1981/// Data source that records events from the modem.
1982#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1983pub struct PixelModemConfig {
1984    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1985    pub event_group: ::core::option::Option<i32>,
1986    /// If set, record only events with these hashes.
1987    #[prost(int64, repeated, packed = "false", tag = "2")]
1988    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1989    /// If set and allow_list is not set, deny events with these hashes.
1990    #[prost(int64, repeated, packed = "false", tag = "3")]
1991    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1992}
1993/// Nested message and enum types in `PixelModemConfig`.
1994pub mod pixel_modem_config {
1995    /// Event group to record, as defined by the modem.
1996    #[derive(
1997        Clone,
1998        Copy,
1999        Debug,
2000        PartialEq,
2001        Eq,
2002        Hash,
2003        PartialOrd,
2004        Ord,
2005        ::prost::Enumeration
2006    )]
2007    #[repr(i32)]
2008    pub enum EventGroup {
2009        Unknown = 0,
2010        /// Events suitable for low bandwidth tracing only.
2011        LowBandwidth = 1,
2012        /// Events suitable for high and low bandwidth tracing.
2013        HighAndLowBandwidth = 2,
2014    }
2015    impl EventGroup {
2016        /// String value of the enum field names used in the ProtoBuf definition.
2017        ///
2018        /// The values are not transformed in any way and thus are considered stable
2019        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2020        pub fn as_str_name(&self) -> &'static str {
2021            match self {
2022                Self::Unknown => "EVENT_GROUP_UNKNOWN",
2023                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
2024                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
2025            }
2026        }
2027        /// Creates an enum from field names used in the ProtoBuf definition.
2028        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2029            match value {
2030                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
2031                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
2032                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
2033                _ => None,
2034            }
2035        }
2036    }
2037}
2038/// Custom configuration for the "android.protolog" data source.
2039/// ProtoLog is a logging mechanism that is intented to be more efficient than
2040/// logcat. This configures what logs to capture in the tracing instance.
2041#[derive(Clone, PartialEq, ::prost::Message)]
2042pub struct ProtoLogConfig {
2043    /// Specified the configurations for each of the logging groups. If none is
2044    /// specified for a group the defaults will be used.
2045    #[prost(message, repeated, tag = "1")]
2046    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
2047    /// Specified what tracing mode to use for the tracing instance.
2048    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
2049    pub tracing_mode: ::core::option::Option<i32>,
2050    /// If set, any message with log level higher than this level (inclusive) will
2051    /// be traced. Group overrides take precedence over this value.
2052    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
2053    pub default_log_from_level: ::core::option::Option<i32>,
2054}
2055/// Nested message and enum types in `ProtoLogConfig`.
2056pub mod proto_log_config {
2057    #[derive(
2058        Clone,
2059        Copy,
2060        Debug,
2061        PartialEq,
2062        Eq,
2063        Hash,
2064        PartialOrd,
2065        Ord,
2066        ::prost::Enumeration
2067    )]
2068    #[repr(i32)]
2069    pub enum TracingMode {
2070        /// When using the DEFAULT tracing mode, only log groups and levels specified
2071        /// in the group_overrides are traced.
2072        Default = 0,
2073        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
2074        /// traced, unless specified in the group_overrides.
2075        EnableAll = 1,
2076    }
2077    impl TracingMode {
2078        /// String value of the enum field names used in the ProtoBuf definition.
2079        ///
2080        /// The values are not transformed in any way and thus are considered stable
2081        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2082        pub fn as_str_name(&self) -> &'static str {
2083            match self {
2084                Self::Default => "DEFAULT",
2085                Self::EnableAll => "ENABLE_ALL",
2086            }
2087        }
2088        /// Creates an enum from field names used in the ProtoBuf definition.
2089        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2090            match value {
2091                "DEFAULT" => Some(Self::Default),
2092                "ENABLE_ALL" => Some(Self::EnableAll),
2093                _ => None,
2094            }
2095        }
2096    }
2097}
2098#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2099pub struct ProtoLogGroup {
2100    /// The ProtoLog group name this configuration entry applies to.
2101    #[prost(string, optional, tag = "1")]
2102    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
2103    /// Specify the level from which to start capturing protologs.
2104    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
2105    /// message will be traced.
2106    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
2107    pub log_from: ::core::option::Option<i32>,
2108    /// When set to true we will collect the stacktrace for each protolog message
2109    /// in this group that we are tracing.
2110    #[prost(bool, optional, tag = "3")]
2111    pub collect_stacktrace: ::core::option::Option<bool>,
2112}
2113#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2114#[repr(i32)]
2115pub enum ProtoLogLevel {
2116    ProtologLevelUndefined = 0,
2117    ProtologLevelDebug = 1,
2118    ProtologLevelVerbose = 2,
2119    ProtologLevelInfo = 3,
2120    ProtologLevelWarn = 4,
2121    ProtologLevelError = 5,
2122    ProtologLevelWtf = 6,
2123}
2124impl ProtoLogLevel {
2125    /// String value of the enum field names used in the ProtoBuf definition.
2126    ///
2127    /// The values are not transformed in any way and thus are considered stable
2128    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2129    pub fn as_str_name(&self) -> &'static str {
2130        match self {
2131            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
2132            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
2133            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
2134            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
2135            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
2136            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
2137            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
2138        }
2139    }
2140    /// Creates an enum from field names used in the ProtoBuf definition.
2141    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2142        match value {
2143            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
2144            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
2145            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
2146            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
2147            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
2148            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
2149            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
2150            _ => None,
2151        }
2152    }
2153}
2154/// Config for the "android.display.video" data source. Unset/0 fields use
2155/// the producer's default.
2156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2157pub struct DisplayVideoConfig {
2158    /// Scale applied to each display's resolution before capture (0.25 =
2159    /// quarter size).
2160    #[prost(float, optional, tag = "1")]
2161    pub scale: ::core::option::Option<f32>,
2162    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
2163    pub format: ::core::option::Option<i32>,
2164    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
2165    #[prost(uint32, optional, tag = "3")]
2166    pub key_frame_interval_secs: ::core::option::Option<u32>,
2167    /// Per-display cap on emitted bytes. On reaching it the stream is torn
2168    /// down with a VideoFrameError (SIZE_CAP_HIT).
2169    #[prost(uint64, optional, tag = "4")]
2170    pub max_stream_size_bytes: ::core::option::Option<u64>,
2171    /// Target video encoder bitrate in bits per second. Controls quality vs
2172    /// trace size at a fixed resolution (unlike `scale`, which changes the
2173    /// resolution). Unset lets the producer pick a default from the (scaled)
2174    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
2175    #[prost(uint32, optional, tag = "5")]
2176    pub bitrate_bps: ::core::option::Option<u32>,
2177}
2178/// Nested message and enum types in `DisplayVideoConfig`.
2179pub mod display_video_config {
2180    #[derive(
2181        Clone,
2182        Copy,
2183        Debug,
2184        PartialEq,
2185        Eq,
2186        Hash,
2187        PartialOrd,
2188        Ord,
2189        ::prost::Enumeration
2190    )]
2191    #[repr(i32)]
2192    pub enum Format {
2193        /// Default (H.264).
2194        Unspecified = 0,
2195        H264 = 1,
2196        Hevc = 2,
2197    }
2198    impl Format {
2199        /// String value of the enum field names used in the ProtoBuf definition.
2200        ///
2201        /// The values are not transformed in any way and thus are considered stable
2202        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2203        pub fn as_str_name(&self) -> &'static str {
2204            match self {
2205                Self::Unspecified => "FORMAT_UNSPECIFIED",
2206                Self::H264 => "FORMAT_H264",
2207                Self::Hevc => "FORMAT_HEVC",
2208            }
2209        }
2210        /// Creates an enum from field names used in the ProtoBuf definition.
2211        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2212            match value {
2213                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
2214                "FORMAT_H264" => Some(Self::H264),
2215                "FORMAT_HEVC" => Some(Self::Hevc),
2216                _ => None,
2217            }
2218        }
2219    }
2220}
2221/// Custom configuration for the "android.surfaceflinger.layers" data source.
2222#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2223pub struct SurfaceFlingerLayersConfig {
2224    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
2225    pub mode: ::core::option::Option<i32>,
2226    #[prost(
2227        enumeration = "surface_flinger_layers_config::TraceFlag",
2228        repeated,
2229        packed = "false",
2230        tag = "2"
2231    )]
2232    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
2233}
2234/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
2235pub mod surface_flinger_layers_config {
2236    #[derive(
2237        Clone,
2238        Copy,
2239        Debug,
2240        PartialEq,
2241        Eq,
2242        Hash,
2243        PartialOrd,
2244        Ord,
2245        ::prost::Enumeration
2246    )]
2247    #[repr(i32)]
2248    pub enum Mode {
2249        Unspecified = 0,
2250        /// Trace layers snapshots. A snapshot is taken every time a layers change
2251        /// occurs.
2252        Active = 1,
2253        /// Generate layers snapshots from the transactions kept in the
2254        /// SurfaceFlinger's internal ring buffer.
2255        /// The layers snapshots generation occurs when this data source is flushed.
2256        Generated = 2,
2257        /// Trace a single layers snapshot.
2258        Dump = 3,
2259        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2260        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
2261        /// when a bugreport is taken.
2262        GeneratedBugreportOnly = 4,
2263        /// Layer snapshots are generated by ProtoVM from layer patches
2264        Protovm = 5,
2265    }
2266    impl Mode {
2267        /// String value of the enum field names used in the ProtoBuf definition.
2268        ///
2269        /// The values are not transformed in any way and thus are considered stable
2270        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2271        pub fn as_str_name(&self) -> &'static str {
2272            match self {
2273                Self::Unspecified => "MODE_UNSPECIFIED",
2274                Self::Active => "MODE_ACTIVE",
2275                Self::Generated => "MODE_GENERATED",
2276                Self::Dump => "MODE_DUMP",
2277                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
2278                Self::Protovm => "MODE_PROTOVM",
2279            }
2280        }
2281        /// Creates an enum from field names used in the ProtoBuf definition.
2282        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2283            match value {
2284                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2285                "MODE_ACTIVE" => Some(Self::Active),
2286                "MODE_GENERATED" => Some(Self::Generated),
2287                "MODE_DUMP" => Some(Self::Dump),
2288                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
2289                "MODE_PROTOVM" => Some(Self::Protovm),
2290                _ => None,
2291            }
2292        }
2293    }
2294    #[derive(
2295        Clone,
2296        Copy,
2297        Debug,
2298        PartialEq,
2299        Eq,
2300        Hash,
2301        PartialOrd,
2302        Ord,
2303        ::prost::Enumeration
2304    )]
2305    #[repr(i32)]
2306    pub enum TraceFlag {
2307        Unspecified = 0,
2308        Input = 2,
2309        Composition = 4,
2310        Extra = 8,
2311        Hwc = 16,
2312        Buffers = 32,
2313        VirtualDisplays = 64,
2314        /// INPUT | COMPOSITION | EXTRA
2315        All = 14,
2316    }
2317    impl TraceFlag {
2318        /// String value of the enum field names used in the ProtoBuf definition.
2319        ///
2320        /// The values are not transformed in any way and thus are considered stable
2321        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2322        pub fn as_str_name(&self) -> &'static str {
2323            match self {
2324                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
2325                Self::Input => "TRACE_FLAG_INPUT",
2326                Self::Composition => "TRACE_FLAG_COMPOSITION",
2327                Self::Extra => "TRACE_FLAG_EXTRA",
2328                Self::Hwc => "TRACE_FLAG_HWC",
2329                Self::Buffers => "TRACE_FLAG_BUFFERS",
2330                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
2331                Self::All => "TRACE_FLAG_ALL",
2332            }
2333        }
2334        /// Creates an enum from field names used in the ProtoBuf definition.
2335        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2336            match value {
2337                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
2338                "TRACE_FLAG_INPUT" => Some(Self::Input),
2339                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
2340                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
2341                "TRACE_FLAG_HWC" => Some(Self::Hwc),
2342                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
2343                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
2344                "TRACE_FLAG_ALL" => Some(Self::All),
2345                _ => None,
2346            }
2347        }
2348    }
2349}
2350/// Custom configuration for the "android.surfaceflinger.transactions" data
2351/// source.
2352#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2353pub struct SurfaceFlingerTransactionsConfig {
2354    #[prost(
2355        enumeration = "surface_flinger_transactions_config::Mode",
2356        optional,
2357        tag = "1"
2358    )]
2359    pub mode: ::core::option::Option<i32>,
2360}
2361/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
2362pub mod surface_flinger_transactions_config {
2363    #[derive(
2364        Clone,
2365        Copy,
2366        Debug,
2367        PartialEq,
2368        Eq,
2369        Hash,
2370        PartialOrd,
2371        Ord,
2372        ::prost::Enumeration
2373    )]
2374    #[repr(i32)]
2375    pub enum Mode {
2376        Unspecified = 0,
2377        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2378        /// SurfaceFlinger writes its internal ring buffer of transactions every time
2379        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
2380        /// initial state and the latest transactions.
2381        Continuous = 1,
2382        /// SurfaceFlinger writes the initial state and then each incoming
2383        /// transaction until the data source is stopped.
2384        Active = 2,
2385    }
2386    impl Mode {
2387        /// String value of the enum field names used in the ProtoBuf definition.
2388        ///
2389        /// The values are not transformed in any way and thus are considered stable
2390        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2391        pub fn as_str_name(&self) -> &'static str {
2392            match self {
2393                Self::Unspecified => "MODE_UNSPECIFIED",
2394                Self::Continuous => "MODE_CONTINUOUS",
2395                Self::Active => "MODE_ACTIVE",
2396            }
2397        }
2398        /// Creates an enum from field names used in the ProtoBuf definition.
2399        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2400            match value {
2401                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2402                "MODE_CONTINUOUS" => Some(Self::Continuous),
2403                "MODE_ACTIVE" => Some(Self::Active),
2404                _ => None,
2405            }
2406        }
2407    }
2408}
2409/// Data source that lists details (such as version code) about users on an
2410/// Android device.
2411#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2412pub struct AndroidUserListConfig {
2413    /// An allowlist of user type strings, used to control the granularity of
2414    /// user type information emitted in the trace. Exact, case-sensitive string
2415    /// matching is used.
2416    ///
2417    /// Any user type read from the device that is NOT present in the
2418    /// effective allowlist will have its type reported as
2419    /// "android.os.usertype.FILTERED".
2420    ///
2421    /// The effective allowlist is determined as follows:
2422    ///
2423    /// 1. If this 'user_type_filter' field is provided and non-empty:
2424    ///     This list itself is the effective allowlist.
2425    ///     Example TraceConfig:
2426    ///     --------------------
2427    ///     data_sources {
2428    ///         config {
2429    ///             name: "android.user_list"
2430    ///             target_buffer: 0
2431    ///             user_list_config {
2432    ///               # Only report these specific types, others become FILTERED.
2433    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
2434    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
2435    ///             }
2436    ///         }
2437    ///     }
2438    ///
2439    ///
2440    /// Note: This field does not support regular expressions.
2441    #[prost(string, repeated, tag = "1")]
2442    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2443}
2444/// Custom configuration for the "android.windowmanager" data source.
2445#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2446pub struct WindowManagerConfig {
2447    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
2448    pub log_frequency: ::core::option::Option<i32>,
2449    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
2450    pub log_level: ::core::option::Option<i32>,
2451    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
2452    pub log_mode: ::core::option::Option<i32>,
2453}
2454/// Nested message and enum types in `WindowManagerConfig`.
2455pub mod window_manager_config {
2456    #[derive(
2457        Clone,
2458        Copy,
2459        Debug,
2460        PartialEq,
2461        Eq,
2462        Hash,
2463        PartialOrd,
2464        Ord,
2465        ::prost::Enumeration
2466    )]
2467    #[repr(i32)]
2468    pub enum LogFrequency {
2469        Unspecified = 0,
2470        /// Trace state snapshots when a frame is committed.
2471        Frame = 1,
2472        /// Trace state snapshots every time a transaction is committed.
2473        Transaction = 2,
2474        /// Trace single state snapshots when the data source is started.
2475        SingleDump = 3,
2476    }
2477    impl LogFrequency {
2478        /// String value of the enum field names used in the ProtoBuf definition.
2479        ///
2480        /// The values are not transformed in any way and thus are considered stable
2481        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2482        pub fn as_str_name(&self) -> &'static str {
2483            match self {
2484                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
2485                Self::Frame => "LOG_FREQUENCY_FRAME",
2486                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
2487                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
2488            }
2489        }
2490        /// Creates an enum from field names used in the ProtoBuf definition.
2491        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2492            match value {
2493                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
2494                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
2495                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
2496                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
2497                _ => None,
2498            }
2499        }
2500    }
2501    #[derive(
2502        Clone,
2503        Copy,
2504        Debug,
2505        PartialEq,
2506        Eq,
2507        Hash,
2508        PartialOrd,
2509        Ord,
2510        ::prost::Enumeration
2511    )]
2512    #[repr(i32)]
2513    pub enum LogLevel {
2514        Unspecified = 0,
2515        /// Logs all elements with maximum amount of information.
2516        Verbose = 1,
2517        /// Logs all elements but doesn't write all configuration data.
2518        Debug = 2,
2519        /// Logs only visible elements, with the minimum amount of performance
2520        /// overhead
2521        Critical = 3,
2522    }
2523    impl LogLevel {
2524        /// String value of the enum field names used in the ProtoBuf definition.
2525        ///
2526        /// The values are not transformed in any way and thus are considered stable
2527        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2528        pub fn as_str_name(&self) -> &'static str {
2529            match self {
2530                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
2531                Self::Verbose => "LOG_LEVEL_VERBOSE",
2532                Self::Debug => "LOG_LEVEL_DEBUG",
2533                Self::Critical => "LOG_LEVEL_CRITICAL",
2534            }
2535        }
2536        /// Creates an enum from field names used in the ProtoBuf definition.
2537        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2538            match value {
2539                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
2540                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
2541                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
2542                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
2543                _ => None,
2544            }
2545        }
2546    }
2547    #[derive(
2548        Clone,
2549        Copy,
2550        Debug,
2551        PartialEq,
2552        Eq,
2553        Hash,
2554        PartialOrd,
2555        Ord,
2556        ::prost::Enumeration
2557    )]
2558    #[repr(i32)]
2559    pub enum LogMode {
2560        Unspecified = 0,
2561        /// Always logs a full state dump of the window hierarchy.
2562        FullState = 1,
2563        /// Logs a full state dump of the window hierarchy only when tracing starts.
2564        /// The following trace packets are lightweight patches containing only the
2565        /// last changes.
2566        Incremental = 2,
2567    }
2568    impl LogMode {
2569        /// String value of the enum field names used in the ProtoBuf definition.
2570        ///
2571        /// The values are not transformed in any way and thus are considered stable
2572        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2573        pub fn as_str_name(&self) -> &'static str {
2574            match self {
2575                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
2576                Self::FullState => "LOG_MODE_FULL_STATE",
2577                Self::Incremental => "LOG_MODE_INCREMENTAL",
2578            }
2579        }
2580        /// Creates an enum from field names used in the ProtoBuf definition.
2581        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2582            match value {
2583                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2584                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
2585                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
2586                _ => None,
2587            }
2588        }
2589    }
2590}
2591#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2592pub struct ChromeConfig {
2593    #[prost(string, optional, tag = "1")]
2594    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
2595    /// When enabled, the data source should only fill in fields in the output that
2596    /// are not potentially privacy sensitive.
2597    #[prost(bool, optional, tag = "2")]
2598    pub privacy_filtering_enabled: ::core::option::Option<bool>,
2599    /// Instead of emitting binary protobuf, convert the trace data to the legacy
2600    /// JSON format. Note that the trace data will still be returned as a series of
2601    /// TracePackets, but the embedded data will be JSON instead of serialized
2602    /// protobuf.
2603    #[prost(bool, optional, tag = "3")]
2604    pub convert_to_legacy_json: ::core::option::Option<bool>,
2605    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
2606    pub client_priority: ::core::option::Option<i32>,
2607    /// Applicable only when using legacy JSON format.
2608    /// If |json_agent_label_filter| is not empty, only data pertaining to
2609    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
2610    #[prost(string, optional, tag = "5")]
2611    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
2612    ///   When enabled, event names should not contain package names.
2613    #[prost(bool, optional, tag = "6")]
2614    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
2615}
2616/// Nested message and enum types in `ChromeConfig`.
2617pub mod chrome_config {
2618    /// Priority of the tracing session client. A higher priority session may
2619    /// preempt a lower priority one in configurations where concurrent sessions
2620    /// aren't supported.
2621    #[derive(
2622        Clone,
2623        Copy,
2624        Debug,
2625        PartialEq,
2626        Eq,
2627        Hash,
2628        PartialOrd,
2629        Ord,
2630        ::prost::Enumeration
2631    )]
2632    #[repr(i32)]
2633    pub enum ClientPriority {
2634        Unknown = 0,
2635        Background = 1,
2636        UserInitiated = 2,
2637    }
2638    impl ClientPriority {
2639        /// String value of the enum field names used in the ProtoBuf definition.
2640        ///
2641        /// The values are not transformed in any way and thus are considered stable
2642        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2643        pub fn as_str_name(&self) -> &'static str {
2644            match self {
2645                Self::Unknown => "UNKNOWN",
2646                Self::Background => "BACKGROUND",
2647                Self::UserInitiated => "USER_INITIATED",
2648            }
2649        }
2650        /// Creates an enum from field names used in the ProtoBuf definition.
2651        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2652            match value {
2653                "UNKNOWN" => Some(Self::Unknown),
2654                "BACKGROUND" => Some(Self::Background),
2655                "USER_INITIATED" => Some(Self::UserInitiated),
2656                _ => None,
2657            }
2658        }
2659    }
2660}
2661#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2662pub struct V8Config {
2663    /// Whether to log the actual content of scripts (e.g. content of the JS file
2664    /// that was compiled to generate code).
2665    /// ATTENTION: This could considerably increase the size of the resuling trace
2666    ///             file.
2667    #[prost(bool, optional, tag = "1")]
2668    pub log_script_sources: ::core::option::Option<bool>,
2669    /// Whether to log the generated code for jitted functions (machine code or
2670    /// bytecode).
2671    /// ATTENTION: This could considerably increase the size of the resuling trace
2672    ///             file.
2673    #[prost(bool, optional, tag = "2")]
2674    pub log_instructions: ::core::option::Option<bool>,
2675}
2676/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
2677/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
2678/// ns-evntrace-event_trace_properties
2679///
2680/// See the list of keywords for for individual providers.
2681/// <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
2682#[derive(Clone, PartialEq, ::prost::Message)]
2683pub struct EtwConfig {
2684    /// The kernel_flags determines the flags that will be used by the etw tracing
2685    /// session. These kernel flags have been built to expose the useful events
2686    /// captured from the kernel mode only.
2687    #[deprecated]
2688    #[prost(
2689        enumeration = "etw_config::KernelFlag",
2690        repeated,
2691        packed = "false",
2692        tag = "1"
2693    )]
2694    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
2695    /// Provides events relating to the scheduler.
2696    #[prost(string, repeated, tag = "2")]
2697    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
2698        ::prost::alloc::string::String,
2699    >,
2700    /// Provides events relating to the memory manager.
2701    #[prost(string, repeated, tag = "3")]
2702    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2703    /// Provides events relating to file I/O.
2704    #[deprecated]
2705    #[prost(string, repeated, tag = "4")]
2706    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2707    /// Events for which stacks should be collected.
2708    #[prost(string, repeated, tag = "5")]
2709    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2710    /// Provides events relating to disk I/O.
2711    #[deprecated]
2712    #[prost(string, repeated, tag = "6")]
2713    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2714    /// Provides events relating to multiple kinds of IO including disk, cache, and
2715    /// network.
2716    #[prost(string, repeated, tag = "7")]
2717    pub system_io_provider_events: ::prost::alloc::vec::Vec<
2718        ::prost::alloc::string::String,
2719    >,
2720    /// Debug IDs for images whose stack samples should be symbolized.
2721    #[prost(message, repeated, tag = "8")]
2722    pub stack_sampling_debug_ids: ::prost::alloc::vec::Vec<etw_config::DebugId>,
2723}
2724/// Nested message and enum types in `EtwConfig`.
2725pub mod etw_config {
2726    /// A debug ID that uniquely identifies an image (i.e., executable) for
2727    /// symbolization when stack sampling.
2728    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2729    pub struct DebugId {
2730        /// The full path to the image file.
2731        #[prost(string, optional, tag = "1")]
2732        pub path: ::core::option::Option<::prost::alloc::string::String>,
2733        /// The unique identifier for the image file.
2734        #[prost(string, optional, tag = "2")]
2735        pub debug_id: ::core::option::Option<::prost::alloc::string::String>,
2736    }
2737    /// The KernelFlag represent list of kernel flags that we are intrested in.
2738    /// To get a more extensive list run 'xperf -providers k'.
2739    #[derive(
2740        Clone,
2741        Copy,
2742        Debug,
2743        PartialEq,
2744        Eq,
2745        Hash,
2746        PartialOrd,
2747        Ord,
2748        ::prost::Enumeration
2749    )]
2750    #[repr(i32)]
2751    pub enum KernelFlag {
2752        Cswitch = 0,
2753        Dispatcher = 1,
2754    }
2755    impl KernelFlag {
2756        /// String value of the enum field names used in the ProtoBuf definition.
2757        ///
2758        /// The values are not transformed in any way and thus are considered stable
2759        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2760        pub fn as_str_name(&self) -> &'static str {
2761            match self {
2762                Self::Cswitch => "CSWITCH",
2763                Self::Dispatcher => "DISPATCHER",
2764            }
2765        }
2766        /// Creates an enum from field names used in the ProtoBuf definition.
2767        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2768            match value {
2769                "CSWITCH" => Some(Self::Cswitch),
2770                "DISPATCHER" => Some(Self::Dispatcher),
2771                _ => None,
2772            }
2773        }
2774    }
2775}
2776#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2777pub struct ChromiumSystemMetricsConfig {
2778    /// Samples counters every X ms.
2779    #[prost(uint32, optional, tag = "1")]
2780    pub sampling_interval_ms: ::core::option::Option<u32>,
2781}
2782/// Next id: 38
2783#[derive(Clone, PartialEq, ::prost::Message)]
2784pub struct FtraceConfig {
2785    /// Ftrace events to record, example: "sched/sched_switch".
2786    #[prost(string, repeated, tag = "1")]
2787    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2788    /// Android-specific event categories:
2789    #[prost(string, repeated, tag = "2")]
2790    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2791    #[prost(string, repeated, tag = "3")]
2792    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2793    /// Some processes can emit data through atrace or through the perfetto SDK via
2794    /// the "track_event" data source. For these categories, the SDK will be
2795    /// preferred, if possible, for this config.
2796    #[prost(string, repeated, tag = "28")]
2797    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2798        ::prost::alloc::string::String,
2799    >,
2800    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2801    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2802    /// events for convenience (and the vendor-specific events on top).
2803    /// Introduced in: perfetto v52.
2804    #[prost(bool, optional, tag = "34")]
2805    pub atrace_userspace_only: ::core::option::Option<bool>,
2806    /// Size of each per-cpu kernel ftrace ring buffer.
2807    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2808    /// buffers cannot be resized without pausing recording in the kernel.
2809    #[prost(uint32, optional, tag = "10")]
2810    pub buffer_size_kb: ::core::option::Option<u32>,
2811    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2812    /// implementation to choose a bigger buffer size.
2813    ///
2814    /// Most configs for perfetto v43+ should simply leave both fields unset.
2815    ///
2816    /// If you need a config compatible with a range of perfetto builds and you
2817    /// used to set a non-default buffer_size_kb, consider setting both fields.
2818    /// Example:
2819    ///    buffer_size_kb: 4096
2820    ///    buffer_size_lower_bound: true
2821    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2822    /// On v43+, buffers will be at least 4 MB.
2823    /// In both cases, neither is guaranteed if there are other concurrent
2824    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2825    /// the recording in the kernel.
2826    /// Introduced in: perfetto v43.
2827    #[prost(bool, optional, tag = "27")]
2828    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2829    /// If set, specifies how often the tracing daemon reads from the kernel ring
2830    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2831    /// Leave unset unless you're fine-tuning a local config.
2832    #[prost(uint32, optional, tag = "11")]
2833    pub drain_period_ms: ::core::option::Option<u32>,
2834    /// If set, the tracing daemon will read kernel ring buffers as soon as
2835    /// they're filled past this percentage of occupancy. In other words, a value
2836    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2837    /// half-full. Not guaranteed if there are multiple concurrent tracing
2838    /// sessions.
2839    /// Currently does nothing on Linux kernels below v6.9.
2840    /// Introduced in: perfetto v48.
2841    #[prost(uint32, optional, tag = "29")]
2842    pub drain_buffer_percent: ::core::option::Option<u32>,
2843    #[prost(message, optional, tag = "12")]
2844    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2845    #[prost(message, optional, tag = "22")]
2846    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2847    /// Enables symbol name resolution against /proc/kallsyms.
2848    /// It requires that either traced_probes is running as root or that
2849    /// kptr_restrict has been manually lowered.
2850    /// It does not disclose KASLR, symbol addresses are mangled.
2851    #[prost(bool, optional, tag = "13")]
2852    pub symbolize_ksyms: ::core::option::Option<bool>,
2853    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2854    pub ksyms_mem_policy: ::core::option::Option<i32>,
2855    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2856    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2857    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2858    /// The historical context for this is the following:
2859    /// - Up to Android S (12), the rss_stat was internally throttled in its
2860    ///    kernel implementation.
2861    /// - A change introduced in the kernels after S has introduced a new
2862    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2863    ///    (hence very spammy).
2864    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2865    ///    need to deal with both cases.
2866    /// For more context: go/rss-stat-throttled.
2867    #[prost(bool, optional, tag = "15")]
2868    pub throttle_rss_stat: ::core::option::Option<bool>,
2869    /// If true, use self-describing proto messages when writing events not known
2870    /// at compile time (aka generic events). Each event bundle will have a set of
2871    /// serialised proto descriptors for events within that bundle.
2872    ///
2873    /// Default if unset:
2874    /// * v53+: true
2875    /// * before v53: false
2876    ///
2877    /// Added in: perfetto v50.
2878    #[prost(bool, optional, tag = "32")]
2879    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2880    /// If true, avoid enabling events that aren't statically known by
2881    /// traced_probes. Otherwise, the default is to emit such events as
2882    /// GenericFtraceEvent protos.
2883    /// Prefer to keep this flag at its default. This was added for Android
2884    /// tracing, where atrace categories and/or atrace HAL requested events can
2885    /// expand to events that aren't of interest to the tracing user.
2886    /// Introduced in: Android T.
2887    #[prost(bool, optional, tag = "16")]
2888    pub disable_generic_events: ::core::option::Option<bool>,
2889    /// The subset of syscalls to record. To record all syscalls, leave this unset
2890    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2891    /// * before perfetto v43, requires the config to also enable
2892    ///    raw_syscalls/sys_{enter,exit}.
2893    /// * perfetto v43+ does the right thing if you set only this field.
2894    /// Example: \["sys_read", "sys_open"\].
2895    /// Introduced in: Android U.
2896    #[prost(string, repeated, tag = "18")]
2897    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2898    /// If true, enable the "function_graph" kernel tracer that emits events
2899    /// whenever a kernel function is entered and exited
2900    /// (funcgraph_entry/funcgraph_exit).
2901    /// Notes on use:
2902    /// * Requires |symbolize_ksyms| for function name resolution.
2903    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2904    ///    set of functions, otherwise the event bandwidth will be too high for
2905    ///    practical use.
2906    /// * The data source might be rejected if there is already a concurrent
2907    ///    ftrace data source that does not use function graph itself, as we do not
2908    ///    support switching kernel tracers mid-trace.
2909    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2910    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2911    ///    "function_graph".
2912    /// Android:
2913    /// * Available only on debuggable builds.
2914    /// * Introduced in: Android U.
2915    #[prost(bool, optional, tag = "19")]
2916    pub enable_function_graph: ::core::option::Option<bool>,
2917    /// Constrains the set of functions traced when |enable_function_graph| is
2918    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2919    /// in which case all matching functions will be traced. See kernel
2920    /// documentation on ftrace "set_ftrace_filter" file for more details.
2921    /// Android:
2922    /// * Available only on debuggable builds.
2923    /// * Introduced in: Android U.
2924    #[prost(string, repeated, tag = "20")]
2925    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2926    /// If |enable_function_graph| is true, trace this set of functions *and* all
2927    /// of its callees. Supports globs. Can be set together with
2928    /// |function_filters|, in which case only callees matching the filter will be
2929    /// traced. If setting both, you most likely want all roots to also be
2930    /// included in |function_filters|.
2931    /// Android:
2932    /// * Available only on debuggable builds.
2933    /// * Introduced in: Android U.
2934    #[prost(string, repeated, tag = "21")]
2935    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2936    /// If |enable_function_graph| is true, only trace the specified
2937    /// number of calls down the stack. Sets the max_graph_depth value
2938    /// in sys/kernel/tracing/
2939    ///
2940    /// Only respected for the first tracing session that enables
2941    /// function_graph tracing.
2942    ///
2943    /// Introduced in: perfetto v51.
2944    /// Supported on: Android 25Q3+.
2945    #[prost(uint32, optional, tag = "33")]
2946    pub function_graph_max_depth: ::core::option::Option<u32>,
2947    /// Ftrace events to record, specific for kprobes and kretprobes
2948    #[prost(message, repeated, tag = "30")]
2949    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2950    /// If true, does not clear kernel ftrace buffers when starting the trace.
2951    /// This makes sense only if this is the first ftrace data source instance
2952    /// created after the daemon has been started. Can be useful for gathering boot
2953    /// traces, if ftrace has been separately configured (e.g. via kernel
2954    /// commandline).
2955    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2956    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2957    /// anything besides ftrace. Otherwise timestamps might be skewed.
2958    #[prost(bool, optional, tag = "23")]
2959    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2960    /// If true, overrides the default timestamp clock and uses a raw hardware
2961    /// based monotonic clock for getting timestamps.
2962    /// * Introduced in: Android U.
2963    #[prost(bool, optional, tag = "24")]
2964    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2965    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2966    /// for event recording. Normally, this means
2967    /// `/sys/kernel/tracing/instances/$instance_name`.
2968    ///
2969    /// Names "hyp" and "hypervisor" are reserved.
2970    ///
2971    /// The instance must already exist, the tracing daemon *will not* create it
2972    /// for you as it typically doesn't have such permissions.
2973    /// Only a subset of features is guaranteed to work with non-default instances,
2974    /// at the time of writing:
2975    ///   * ftrace_events
2976    ///   * buffer_size_kb
2977    #[prost(string, optional, tag = "25")]
2978    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2979    /// For perfetto developer use. If true and on a debuggable android build,
2980    /// serialise raw tracing pages that the implementation cannot parse.
2981    #[prost(bool, optional, tag = "31")]
2982    pub debug_ftrace_abi: ::core::option::Option<bool>,
2983    /// Filter ftrace events by Thread ID (TID).
2984    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2985    ///
2986    /// Note: this is an exclusive feature, see:
2987    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2988    ///
2989    /// Introduced in: perfetto v52.
2990    /// Supported on: Android 25Q3+.
2991    #[prost(uint32, repeated, packed = "false", tag = "35")]
2992    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2993    #[prost(message, repeated, tag = "36")]
2994    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2995    /// This mask restricts tracing to a specific set of CPUs using a
2996    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2997    /// 32-bit chunk of the CPU mask.
2998    ///
2999    /// The chunks are ordered from high CPUs to low CPUs (left to right):
3000    ///    - Rightmost chunk: CPUs 0-31
3001    ///    - 2nd chunk from right: CPUs 32-63
3002    ///    - ...and so on.
3003    ///
3004    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
3005    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
3006    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
3007    /// chunk0 to 0-31.
3008    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
3009    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
3010    ///
3011    /// Note: This is an exclusive feature, see:
3012    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
3013    ///
3014    /// Introduced in: perfetto v52.
3015    /// Supported on: Android 25Q3+.
3016    #[prost(string, optional, tag = "37")]
3017    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
3018    /// No-op in perfetto v28+. Name preserved because of existing references in
3019    /// textproto configs.
3020    #[deprecated]
3021    #[prost(bool, optional, tag = "14")]
3022    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
3023}
3024/// Nested message and enum types in `FtraceConfig`.
3025pub mod ftrace_config {
3026    /// Configuration for compact encoding of scheduler events. When enabled (and
3027    /// recording the relevant ftrace events), specific high-volume events are
3028    /// encoded in a denser format than normal.
3029    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3030    pub struct CompactSchedConfig {
3031        /// If true, and sched_switch or sched_waking ftrace events are enabled,
3032        /// record those events in the compact format.
3033        ///
3034        /// If the field is unset, the default is:
3035        /// * perfetto v42.0+: enabled
3036        /// * before: disabled
3037        #[prost(bool, optional, tag = "1")]
3038        pub enabled: ::core::option::Option<bool>,
3039    }
3040    /// Optional filter for "ftrace/print" events.
3041    ///
3042    /// The filter consists of multiple rules. As soon as a rule matches (the rules
3043    /// are processed in order), its `allow` field will be used as the outcome: if
3044    /// `allow` is true, the event will be included in the trace, otherwise it will
3045    /// be discarded. If an event does not match any rule, it will be allowed by
3046    /// default (a rule with an empty prefix and allow=false, disallows everything
3047    /// by default).
3048    #[derive(Clone, PartialEq, ::prost::Message)]
3049    pub struct PrintFilter {
3050        #[prost(message, repeated, tag = "1")]
3051        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
3052    }
3053    /// Nested message and enum types in `PrintFilter`.
3054    pub mod print_filter {
3055        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3056        pub struct Rule {
3057            #[prost(bool, optional, tag = "2")]
3058            pub allow: ::core::option::Option<bool>,
3059            #[prost(oneof = "rule::Match", tags = "1, 3")]
3060            pub r#match: ::core::option::Option<rule::Match>,
3061        }
3062        /// Nested message and enum types in `Rule`.
3063        pub mod rule {
3064            /// Matches an atrace message of the form:
3065            /// <type>|pid|<prefix>...
3066            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3067            pub struct AtraceMessage {
3068                #[prost(string, optional, tag = "1")]
3069                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
3070                #[prost(string, optional, tag = "2")]
3071                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
3072            }
3073            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
3074            pub enum Match {
3075                /// This rule matches if `prefix` matches exactly with the beginning of
3076                /// the "ftrace/print" "buf" field.
3077                #[prost(string, tag = "1")]
3078                Prefix(::prost::alloc::string::String),
3079                /// This rule matches if the "buf" field contains an atrace-style print
3080                /// message as specified in `atrace_msg`.
3081                #[prost(message, tag = "3")]
3082                AtraceMsg(AtraceMessage),
3083            }
3084        }
3085    }
3086    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3087    pub struct KprobeEvent {
3088        /// Kernel function name to attach to, for example "fuse_file_write_iter"
3089        #[prost(string, optional, tag = "1")]
3090        pub probe: ::core::option::Option<::prost::alloc::string::String>,
3091        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
3092        pub r#type: ::core::option::Option<i32>,
3093    }
3094    /// Nested message and enum types in `KprobeEvent`.
3095    pub mod kprobe_event {
3096        #[derive(
3097            Clone,
3098            Copy,
3099            Debug,
3100            PartialEq,
3101            Eq,
3102            Hash,
3103            PartialOrd,
3104            Ord,
3105            ::prost::Enumeration
3106        )]
3107        #[repr(i32)]
3108        pub enum KprobeType {
3109            Unknown = 0,
3110            Kprobe = 1,
3111            Kretprobe = 2,
3112            Both = 3,
3113        }
3114        impl KprobeType {
3115            /// String value of the enum field names used in the ProtoBuf definition.
3116            ///
3117            /// The values are not transformed in any way and thus are considered stable
3118            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3119            pub fn as_str_name(&self) -> &'static str {
3120                match self {
3121                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
3122                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
3123                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
3124                    Self::Both => "KPROBE_TYPE_BOTH",
3125                }
3126            }
3127            /// Creates an enum from field names used in the ProtoBuf definition.
3128            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3129                match value {
3130                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
3131                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
3132                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
3133                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
3134                    _ => None,
3135                }
3136            }
3137        }
3138    }
3139    /// Tracefs options to set directly in the tracefs instance. This is a very
3140    /// niche feature since almost all of the options deal with formatting textual
3141    /// output (the /trace file), which perfetto doesn't use.
3142    ///
3143    /// The options with a known use-case:
3144    /// * event-fork: when using `tids_to_trace` above, the kernel will
3145    ///    automatically add newly spawned descendant threads to the set of TIDs.
3146    ///
3147    /// Full list of options is available at
3148    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
3149    ///
3150    /// Note: this is an exclusive feature, see:
3151    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
3152    ///
3153    /// Introduced in: perfetto v52.
3154    /// Supported on: Android 25Q3+.
3155    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3156    pub struct TracefsOption {
3157        /// The name of the tracefs option as found in tracefs/trace_options (without
3158        /// the "no" prefix).
3159        #[prost(string, optional, tag = "1")]
3160        pub name: ::core::option::Option<::prost::alloc::string::String>,
3161        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
3162        pub state: ::core::option::Option<i32>,
3163    }
3164    /// Nested message and enum types in `TracefsOption`.
3165    pub mod tracefs_option {
3166        #[derive(
3167            Clone,
3168            Copy,
3169            Debug,
3170            PartialEq,
3171            Eq,
3172            Hash,
3173            PartialOrd,
3174            Ord,
3175            ::prost::Enumeration
3176        )]
3177        #[repr(i32)]
3178        pub enum State {
3179            Unknown = 0,
3180            Enabled = 1,
3181            Disabled = 2,
3182        }
3183        impl State {
3184            /// String value of the enum field names used in the ProtoBuf definition.
3185            ///
3186            /// The values are not transformed in any way and thus are considered stable
3187            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3188            pub fn as_str_name(&self) -> &'static str {
3189                match self {
3190                    Self::Unknown => "STATE_UNKNOWN",
3191                    Self::Enabled => "STATE_ENABLED",
3192                    Self::Disabled => "STATE_DISABLED",
3193                }
3194            }
3195            /// Creates an enum from field names used in the ProtoBuf definition.
3196            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3197                match value {
3198                    "STATE_UNKNOWN" => Some(Self::Unknown),
3199                    "STATE_ENABLED" => Some(Self::Enabled),
3200                    "STATE_DISABLED" => Some(Self::Disabled),
3201                    _ => None,
3202                }
3203            }
3204        }
3205    }
3206    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
3207    /// should keep the symbol map in memory (and reuse it for future tracing
3208    /// sessions) or clear it (saving memory) and re-create it on each tracing
3209    /// session (wasting cpu and wall time).
3210    /// The tradeoff is roughly:
3211    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
3212    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
3213    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
3214    #[derive(
3215        Clone,
3216        Copy,
3217        Debug,
3218        PartialEq,
3219        Eq,
3220        Hash,
3221        PartialOrd,
3222        Ord,
3223        ::prost::Enumeration
3224    )]
3225    #[repr(i32)]
3226    pub enum KsymsMemPolicy {
3227        KsymsUnspecified = 0,
3228        KsymsCleanupOnStop = 1,
3229        KsymsRetain = 2,
3230    }
3231    impl KsymsMemPolicy {
3232        /// String value of the enum field names used in the ProtoBuf definition.
3233        ///
3234        /// The values are not transformed in any way and thus are considered stable
3235        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3236        pub fn as_str_name(&self) -> &'static str {
3237            match self {
3238                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
3239                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
3240                Self::KsymsRetain => "KSYMS_RETAIN",
3241            }
3242        }
3243        /// Creates an enum from field names used in the ProtoBuf definition.
3244        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3245            match value {
3246                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
3247                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
3248                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
3249                _ => None,
3250            }
3251        }
3252    }
3253}
3254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3255pub struct FrozenFtraceConfig {
3256    /// The instance name which stores the previous boot ftrace data. Required.
3257    #[prost(string, optional, tag = "1")]
3258    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
3259}
3260#[derive(Clone, PartialEq, ::prost::Message)]
3261pub struct GpuCounterConfig {
3262    /// Desired sampling interval for counters.
3263    #[prost(uint64, optional, tag = "1")]
3264    pub counter_period_ns: ::core::option::Option<u64>,
3265    /// Selects which counters to sample. Use either counter_ids or counter_names,
3266    /// not both. Counter IDs and names correspond to the ones described in
3267    /// GpuCounterSpec in the data source descriptor.
3268    ///
3269    /// List of counter IDs to be sampled.
3270    #[prost(uint32, repeated, packed = "false", tag = "2")]
3271    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
3272    /// List of counter names to be sampled. Requires producer support; check
3273    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
3274    /// Glob patterns may be used to match multiple counters by name; check
3275    /// GpuCounterDescriptor.supports_counter_name_globs for support.
3276    #[prost(string, repeated, tag = "6")]
3277    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3278    /// Fix gpu clock rate during trace session.
3279    #[prost(bool, optional, tag = "4")]
3280    pub fix_gpu_clock: ::core::option::Option<bool>,
3281    /// Sample counters by instrumenting command buffers.
3282    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
3283    pub instrumented_sampling_mode: ::core::option::Option<
3284        gpu_counter_config::InstrumentedSamplingMode,
3285    >,
3286}
3287/// Nested message and enum types in `GpuCounterConfig`.
3288pub mod gpu_counter_config {
3289    /// Configuration for sampling counters by instrumenting command buffers.
3290    ///
3291    /// When instrumented_sampling_config is used (instead of the
3292    /// instrumented_sampling bool), the following steps determine whether
3293    /// instrumented counters are enabled for a given GPU activity:
3294    ///
3295    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
3296    ///     activity must match at least one filter. If empty, all activities
3297    ///     pass this step.
3298    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
3299    ///     activity must fall within a matching TX range. Activities in TX
3300    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
3301    ///     take precedence over includes). If both are empty, all activities
3302    ///     pass this step.
3303    /// 3. Range-based sampling: If activity_ranges is non-empty, only
3304    ///     activities within the specified skip/count ranges are instrumented.
3305    ///     If empty, all activities that passed the previous steps are
3306    ///     instrumented.
3307    #[derive(Clone, PartialEq, ::prost::Message)]
3308    pub struct InstrumentedSamplingConfig {
3309        /// GPU activity name filters. An activity matches if it matches any filter.
3310        #[prost(message, repeated, tag = "3")]
3311        pub activity_name_filters: ::prost::alloc::vec::Vec<
3312            instrumented_sampling_config::ActivityNameFilter,
3313        >,
3314        /// Glob patterns to use for including GPU activities in TX ranges. TX
3315        /// ranges are in-process annotations that mark different sections of GPU
3316        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
3317        /// activity is included if any range in its nesting hierarchy matches.
3318        /// Only activities that fall within a matching TX range will be
3319        /// instrumented.
3320        #[prost(string, repeated, tag = "6")]
3321        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
3322            ::prost::alloc::string::String,
3323        >,
3324        /// Glob patterns to use for excluding GPU activities from TX ranges.
3325        /// TX ranges can be nested, and an activity is excluded if any range
3326        /// in its nesting hierarchy matches. Excludes take precedence over
3327        /// includes.
3328        #[prost(string, repeated, tag = "7")]
3329        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
3330            ::prost::alloc::string::String,
3331        >,
3332        /// Ranges of GPU activities to instrument. Applied after activity name
3333        /// and TX range filters. If empty, all activities that passed the
3334        /// previous filters are instrumented.
3335        #[prost(message, repeated, tag = "5")]
3336        pub activity_ranges: ::prost::alloc::vec::Vec<
3337            instrumented_sampling_config::ActivityRange,
3338        >,
3339    }
3340    /// Nested message and enum types in `InstrumentedSamplingConfig`.
3341    pub mod instrumented_sampling_config {
3342        /// Filters GPU activities by name. Each filter specifies a glob pattern
3343        /// and the basis for matching (mangled or demangled kernel name).
3344        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3345        pub struct ActivityNameFilter {
3346            /// required. Glob pattern to use for GPU activity name filtering.
3347            #[prost(string, optional, tag = "1")]
3348            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
3349            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
3350            /// specified.
3351            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
3352            pub name_base: ::core::option::Option<i32>,
3353        }
3354        /// Nested message and enum types in `ActivityNameFilter`.
3355        pub mod activity_name_filter {
3356            #[derive(
3357                Clone,
3358                Copy,
3359                Debug,
3360                PartialEq,
3361                Eq,
3362                Hash,
3363                PartialOrd,
3364                Ord,
3365                ::prost::Enumeration
3366            )]
3367            #[repr(i32)]
3368            pub enum NameBase {
3369                /// Match against the mangled (compiler-encoded) kernel name.
3370                /// Example: for a kernel whose demangled name is
3371                /// "matmul(float*,int,int)", the mangled name might be
3372                /// "_Z6matmulPfii". The glob pattern is matched against this
3373                /// mangled form.
3374                MangledKernelName = 0,
3375                /// Match against the fully demangled kernel name, including
3376                /// parameters, templates, and qualifiers.
3377                /// Example: "matmul(float*,int,int)". The glob pattern is
3378                /// matched against this full demangled form.
3379                DemangledKernelName = 1,
3380                /// Match against only the function name portion of the
3381                /// demangled kernel name, without parameters, templates,
3382                /// return types, or namespaces.
3383                /// Example: "matmul". The glob pattern is matched against
3384                /// just the bare function name.
3385                FunctionName = 2,
3386            }
3387            impl NameBase {
3388                /// String value of the enum field names used in the ProtoBuf definition.
3389                ///
3390                /// The values are not transformed in any way and thus are considered stable
3391                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3392                pub fn as_str_name(&self) -> &'static str {
3393                    match self {
3394                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
3395                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
3396                        Self::FunctionName => "FUNCTION_NAME",
3397                    }
3398                }
3399                /// Creates an enum from field names used in the ProtoBuf definition.
3400                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3401                    match value {
3402                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
3403                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
3404                        "FUNCTION_NAME" => Some(Self::FunctionName),
3405                        _ => None,
3406                    }
3407                }
3408            }
3409        }
3410        /// Defines a range of GPU activities to instrument.
3411        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3412        pub struct ActivityRange {
3413            /// Number of GPU activities to skip before starting to instrument
3414            /// command buffers. Defaults to 0 if not specified.
3415            #[prost(uint32, optional, tag = "1")]
3416            pub skip: ::core::option::Option<u32>,
3417            /// Limit for the number of GPU activities to sample counters for by
3418            /// instrumenting command buffers. Defaults to UINT32_MAX (all
3419            /// remaining activities) if not specified.
3420            #[prost(uint32, optional, tag = "2")]
3421            pub count: ::core::option::Option<u32>,
3422        }
3423    }
3424    /// Sample counters by instrumenting command buffers.
3425    #[derive(Clone, PartialEq, ::prost::Oneof)]
3426    pub enum InstrumentedSamplingMode {
3427        #[prost(bool, tag = "3")]
3428        InstrumentedSampling(bool),
3429        #[prost(message, tag = "5")]
3430        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
3431    }
3432}
3433#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3434pub struct VulkanMemoryConfig {
3435    /// Tracking driver memory usage events
3436    #[prost(bool, optional, tag = "1")]
3437    pub track_driver_memory_usage: ::core::option::Option<bool>,
3438    /// Tracking device memory usage events
3439    #[prost(bool, optional, tag = "2")]
3440    pub track_device_memory_usage: ::core::option::Option<bool>,
3441}
3442#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3443pub struct GpuRenderStagesConfig {
3444    /// Enable to separate the color and depth/stencil load and store stages
3445    /// into a separate stages. If disabled, the depth/stencil load and store
3446    /// stages will be combined.  Disabled by default. This option has no effect if
3447    /// Low Overhead mode is enabled.
3448    #[prost(bool, optional, tag = "1")]
3449    pub full_loadstore: ::core::option::Option<bool>,
3450    /// Use the low overhead mode for traces. In this mode render stages are
3451    /// combined into a single workload stage. This provides less granular data but
3452    /// induces minimal GPU overhead. Disabled by default.
3453    #[prost(bool, optional, tag = "2")]
3454    pub low_overhead: ::core::option::Option<bool>,
3455    /// Trace metrics to capture for each render stage
3456    #[prost(string, repeated, tag = "3")]
3457    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3458    /// Enable per-draw-call slices, with real per-occurrence timestamps and metric
3459    /// values, on the gpu.renderstages data source. Disabled by default.
3460    /// When drawcall_stages is enabled, full_loadstore and low_overhead are
3461    /// ignored and their default values are used.
3462    #[prost(bool, optional, tag = "4")]
3463    pub drawcall_stages: ::core::option::Option<bool>,
3464}
3465/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
3466/// systems.
3467#[derive(Clone, PartialEq, ::prost::Message)]
3468pub struct InodeFileConfig {
3469    /// How long to pause between batches.
3470    #[prost(uint32, optional, tag = "1")]
3471    pub scan_interval_ms: ::core::option::Option<u32>,
3472    /// How long to wait before the first scan in order to accumulate inodes.
3473    #[prost(uint32, optional, tag = "2")]
3474    pub scan_delay_ms: ::core::option::Option<u32>,
3475    /// How many inodes to scan in one batch.
3476    #[prost(uint32, optional, tag = "3")]
3477    pub scan_batch_size: ::core::option::Option<u32>,
3478    /// Do not scan for inodes not found in the static map.
3479    #[prost(bool, optional, tag = "4")]
3480    pub do_not_scan: ::core::option::Option<bool>,
3481    /// If non-empty, only scan inodes corresponding to block devices named in
3482    /// this list.
3483    #[prost(string, repeated, tag = "5")]
3484    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3485    /// When encountering an inode belonging to a block device corresponding
3486    /// to one of the mount points in this map, scan its scan_roots instead.
3487    #[prost(message, repeated, tag = "6")]
3488    pub mount_point_mapping: ::prost::alloc::vec::Vec<
3489        inode_file_config::MountPointMappingEntry,
3490    >,
3491}
3492/// Nested message and enum types in `InodeFileConfig`.
3493pub mod inode_file_config {
3494    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3495    pub struct MountPointMappingEntry {
3496        #[prost(string, optional, tag = "1")]
3497        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
3498        #[prost(string, repeated, tag = "2")]
3499        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3500    }
3501}
3502#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3503pub struct ConsoleConfig {
3504    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
3505    pub output: ::core::option::Option<i32>,
3506    #[prost(bool, optional, tag = "2")]
3507    pub enable_colors: ::core::option::Option<bool>,
3508}
3509/// Nested message and enum types in `ConsoleConfig`.
3510pub mod console_config {
3511    #[derive(
3512        Clone,
3513        Copy,
3514        Debug,
3515        PartialEq,
3516        Eq,
3517        Hash,
3518        PartialOrd,
3519        Ord,
3520        ::prost::Enumeration
3521    )]
3522    #[repr(i32)]
3523    pub enum Output {
3524        Unspecified = 0,
3525        Stdout = 1,
3526        Stderr = 2,
3527    }
3528    impl Output {
3529        /// String value of the enum field names used in the ProtoBuf definition.
3530        ///
3531        /// The values are not transformed in any way and thus are considered stable
3532        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3533        pub fn as_str_name(&self) -> &'static str {
3534            match self {
3535                Self::Unspecified => "OUTPUT_UNSPECIFIED",
3536                Self::Stdout => "OUTPUT_STDOUT",
3537                Self::Stderr => "OUTPUT_STDERR",
3538            }
3539        }
3540        /// Creates an enum from field names used in the ProtoBuf definition.
3541        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3542            match value {
3543                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
3544                "OUTPUT_STDOUT" => Some(Self::Stdout),
3545                "OUTPUT_STDERR" => Some(Self::Stderr),
3546                _ => None,
3547            }
3548        }
3549    }
3550}
3551/// Configuration for trace packet interception. Used for diverting trace data to
3552/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
3553/// Perfetto SDK.
3554#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3555pub struct InterceptorConfig {
3556    /// Matches the name given to RegisterInterceptor().
3557    #[prost(string, optional, tag = "1")]
3558    pub name: ::core::option::Option<::prost::alloc::string::String>,
3559    #[prost(message, optional, tag = "100")]
3560    pub console_config: ::core::option::Option<ConsoleConfig>,
3561}
3562#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3563pub struct AndroidPowerConfig {
3564    #[prost(uint32, optional, tag = "1")]
3565    pub battery_poll_ms: ::core::option::Option<u32>,
3566    #[prost(
3567        enumeration = "android_power_config::BatteryCounters",
3568        repeated,
3569        packed = "false",
3570        tag = "2"
3571    )]
3572    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
3573    /// Where available enables per-power-rail measurements.
3574    #[prost(bool, optional, tag = "3")]
3575    pub collect_power_rails: ::core::option::Option<bool>,
3576    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
3577    /// Available from Android S.
3578    #[prost(bool, optional, tag = "4")]
3579    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
3580    /// Provides a breakdown of time in state for various subsystems.
3581    /// Available from Android U.
3582    #[prost(bool, optional, tag = "5")]
3583    pub collect_entity_state_residency: ::core::option::Option<bool>,
3584}
3585/// Nested message and enum types in `AndroidPowerConfig`.
3586pub mod android_power_config {
3587    #[derive(
3588        Clone,
3589        Copy,
3590        Debug,
3591        PartialEq,
3592        Eq,
3593        Hash,
3594        PartialOrd,
3595        Ord,
3596        ::prost::Enumeration
3597    )]
3598    #[repr(i32)]
3599    pub enum BatteryCounters {
3600        BatteryCounterUnspecified = 0,
3601        /// Coulomb counter.
3602        BatteryCounterCharge = 1,
3603        /// Charge (%).
3604        BatteryCounterCapacityPercent = 2,
3605        /// Instantaneous current.
3606        BatteryCounterCurrent = 3,
3607        /// Avg current.
3608        BatteryCounterCurrentAvg = 4,
3609        /// Instantaneous voltage.
3610        BatteryCounterVoltage = 5,
3611    }
3612    impl BatteryCounters {
3613        /// String value of the enum field names used in the ProtoBuf definition.
3614        ///
3615        /// The values are not transformed in any way and thus are considered stable
3616        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3617        pub fn as_str_name(&self) -> &'static str {
3618            match self {
3619                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
3620                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
3621                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
3622                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
3623                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
3624                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
3625            }
3626        }
3627        /// Creates an enum from field names used in the ProtoBuf definition.
3628        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3629            match value {
3630                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
3631                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
3632                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
3633                    Some(Self::BatteryCounterCapacityPercent)
3634                }
3635                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
3636                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
3637                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
3638                _ => None,
3639            }
3640        }
3641    }
3642}
3643#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3644pub struct ProtoVmConfig {
3645    #[prost(uint32, optional, tag = "1")]
3646    pub memory_limit_kb: ::core::option::Option<u32>,
3647}
3648/// This enum is obtained by post-processing
3649/// AOSP/frameworks/proto_logging/stats/atoms.proto through
3650/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
3651/// enum value for each proto field defined in the upstream atoms.proto.
3652#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3653#[repr(i32)]
3654pub enum AtomId {
3655    AtomUnspecified = 0,
3656    AtomBleScanStateChanged = 2,
3657    AtomProcessStateChanged = 3,
3658    AtomBleScanResultReceived = 4,
3659    AtomSensorStateChanged = 5,
3660    AtomGpsScanStateChanged = 6,
3661    AtomSyncStateChanged = 7,
3662    AtomScheduledJobStateChanged = 8,
3663    AtomScreenBrightnessChanged = 9,
3664    AtomWakelockStateChanged = 10,
3665    AtomLongPartialWakelockStateChanged = 11,
3666    AtomMobileRadioPowerStateChanged = 12,
3667    AtomWifiRadioPowerStateChanged = 13,
3668    AtomActivityManagerSleepStateChanged = 14,
3669    AtomMemoryFactorStateChanged = 15,
3670    AtomExcessiveCpuUsageReported = 16,
3671    AtomCachedKillReported = 17,
3672    AtomProcessMemoryStatReported = 18,
3673    AtomLauncherEvent = 19,
3674    AtomBatterySaverModeStateChanged = 20,
3675    AtomDeviceIdleModeStateChanged = 21,
3676    AtomDeviceIdlingModeStateChanged = 22,
3677    AtomAudioStateChanged = 23,
3678    AtomMediaCodecStateChanged = 24,
3679    AtomCameraStateChanged = 25,
3680    AtomFlashlightStateChanged = 26,
3681    AtomUidProcessStateChanged = 27,
3682    AtomProcessLifeCycleStateChanged = 28,
3683    AtomScreenStateChanged = 29,
3684    AtomBatteryLevelChanged = 30,
3685    AtomChargingStateChanged = 31,
3686    AtomPluggedStateChanged = 32,
3687    AtomInteractiveStateChanged = 33,
3688    AtomTouchEventReported = 34,
3689    AtomWakeupAlarmOccurred = 35,
3690    AtomKernelWakeupReported = 36,
3691    AtomWifiLockStateChanged = 37,
3692    AtomWifiSignalStrengthChanged = 38,
3693    AtomWifiScanStateChanged = 39,
3694    AtomPhoneSignalStrengthChanged = 40,
3695    AtomSettingChanged = 41,
3696    AtomActivityForegroundStateChanged = 42,
3697    AtomIsolatedUidChanged = 43,
3698    AtomPacketWakeupOccurred = 44,
3699    AtomWallClockTimeShifted = 45,
3700    AtomAnomalyDetected = 46,
3701    AtomAppBreadcrumbReported = 47,
3702    AtomAppStartOccurred = 48,
3703    AtomAppStartCanceled = 49,
3704    AtomAppStartFullyDrawn = 50,
3705    AtomLmkKillOccurred = 51,
3706    AtomPictureInPictureStateChanged = 52,
3707    AtomWifiMulticastLockStateChanged = 53,
3708    AtomAppStartMemoryStateCaptured = 55,
3709    AtomShutdownSequenceReported = 56,
3710    AtomBootSequenceReported = 57,
3711    AtomOverlayStateChanged = 59,
3712    AtomForegroundServiceStateChanged = 60,
3713    AtomCallStateChanged = 61,
3714    AtomKeyguardStateChanged = 62,
3715    AtomKeyguardBouncerStateChanged = 63,
3716    AtomKeyguardBouncerPasswordEntered = 64,
3717    AtomAppDied = 65,
3718    AtomResourceConfigurationChanged = 66,
3719    AtomBluetoothEnabledStateChanged = 67,
3720    AtomBluetoothConnectionStateChanged = 68,
3721    AtomGpsSignalQualityChanged = 69,
3722    AtomUsbConnectorStateChanged = 70,
3723    AtomSpeakerImpedanceReported = 71,
3724    AtomHardwareFailed = 72,
3725    AtomPhysicalDropDetected = 73,
3726    AtomChargeCyclesReported = 74,
3727    AtomMobileConnectionStateChanged = 75,
3728    AtomMobileRadioTechnologyChanged = 76,
3729    AtomUsbDeviceAttached = 77,
3730    AtomAppCrashOccurred = 78,
3731    AtomAnrOccurred = 79,
3732    AtomWtfOccurred = 80,
3733    AtomLowMemReported = 81,
3734    AtomGenericAtom = 82,
3735    AtomVibratorStateChanged = 84,
3736    AtomDeferredJobStatsReported = 85,
3737    AtomThermalThrottling = 86,
3738    AtomBiometricAcquired = 87,
3739    AtomBiometricAuthenticated = 88,
3740    AtomBiometricErrorOccurred = 89,
3741    AtomUiEventReported = 90,
3742    AtomBatteryHealthSnapshot = 91,
3743    AtomSlowIo = 92,
3744    AtomBatteryCausedShutdown = 93,
3745    AtomPhoneServiceStateChanged = 94,
3746    AtomPhoneStateChanged = 95,
3747    AtomUserRestrictionChanged = 96,
3748    AtomSettingsUiChanged = 97,
3749    AtomConnectivityStateChanged = 98,
3750    AtomServiceStateChanged = 99,
3751    AtomServiceLaunchReported = 100,
3752    AtomFlagFlipUpdateOccurred = 101,
3753    AtomBinaryPushStateChanged = 102,
3754    AtomDevicePolicyEvent = 103,
3755    AtomDocsUiFileOpCanceled = 104,
3756    AtomDocsUiFileOpCopyMoveModeReported = 105,
3757    AtomDocsUiFileOpFailure = 106,
3758    AtomDocsUiProviderFileOp = 107,
3759    AtomDocsUiInvalidScopedAccessRequest = 108,
3760    AtomDocsUiLaunchReported = 109,
3761    AtomDocsUiRootVisited = 110,
3762    AtomDocsUiStartupMs = 111,
3763    AtomDocsUiUserActionReported = 112,
3764    AtomWifiEnabledStateChanged = 113,
3765    AtomWifiRunningStateChanged = 114,
3766    AtomAppCompacted = 115,
3767    AtomNetworkDnsEventReported = 116,
3768    AtomDocsUiPickerLaunchedFromReported = 117,
3769    AtomDocsUiPickResultReported = 118,
3770    AtomDocsUiSearchModeReported = 119,
3771    AtomDocsUiSearchTypeReported = 120,
3772    AtomDataStallEvent = 121,
3773    AtomRescuePartyResetReported = 122,
3774    AtomSignedConfigReported = 123,
3775    AtomGnssNiEventReported = 124,
3776    AtomBluetoothLinkLayerConnectionEvent = 125,
3777    AtomBluetoothAclConnectionStateChanged = 126,
3778    AtomBluetoothScoConnectionStateChanged = 127,
3779    AtomAppDowngraded = 128,
3780    AtomAppOptimizedAfterDowngraded = 129,
3781    AtomLowStorageStateChanged = 130,
3782    AtomGnssNfwNotificationReported = 131,
3783    AtomGnssConfigurationReported = 132,
3784    AtomUsbPortOverheatEventReported = 133,
3785    AtomNfcErrorOccurred = 134,
3786    AtomNfcStateChanged = 135,
3787    AtomNfcBeamOccurred = 136,
3788    AtomNfcCardemulationOccurred = 137,
3789    AtomNfcTagOccurred = 138,
3790    AtomNfcHceTransactionOccurred = 139,
3791    AtomSeStateChanged = 140,
3792    AtomSeOmapiReported = 141,
3793    AtomBroadcastDispatchLatencyReported = 142,
3794    AtomAttentionManagerServiceResultReported = 143,
3795    AtomAdbConnectionChanged = 144,
3796    AtomSpeechDspStatReported = 145,
3797    AtomUsbContaminantReported = 146,
3798    AtomWatchdogRollbackOccurred = 147,
3799    AtomBiometricSystemHealthIssueDetected = 148,
3800    AtomBubbleUiChanged = 149,
3801    AtomScheduledJobConstraintChanged = 150,
3802    AtomBluetoothActiveDeviceChanged = 151,
3803    AtomBluetoothA2dpPlaybackStateChanged = 152,
3804    AtomBluetoothA2dpCodecConfigChanged = 153,
3805    AtomBluetoothA2dpCodecCapabilityChanged = 154,
3806    AtomBluetoothA2dpAudioUnderrunReported = 155,
3807    AtomBluetoothA2dpAudioOverrunReported = 156,
3808    AtomBluetoothDeviceRssiReported = 157,
3809    AtomBluetoothDeviceFailedContactCounterReported = 158,
3810    AtomBluetoothDeviceTxPowerLevelReported = 159,
3811    AtomBluetoothHciTimeoutReported = 160,
3812    AtomBluetoothQualityReportReported = 161,
3813    AtomBluetoothDeviceInfoReported = 162,
3814    AtomBluetoothRemoteVersionInfoReported = 163,
3815    AtomBluetoothSdpAttributeReported = 164,
3816    AtomBluetoothBondStateChanged = 165,
3817    AtomBluetoothClassicPairingEventReported = 166,
3818    AtomBluetoothSmpPairingEventReported = 167,
3819    AtomScreenTimeoutExtensionReported = 168,
3820    AtomProcessStartTime = 169,
3821    AtomPermissionGrantRequestResultReported = 170,
3822    AtomBluetoothSocketConnectionStateChanged = 171,
3823    AtomDeviceIdentifierAccessDenied = 172,
3824    AtomBubbleDeveloperErrorReported = 173,
3825    AtomAssistGestureStageReported = 174,
3826    AtomAssistGestureFeedbackReported = 175,
3827    AtomAssistGestureProgressReported = 176,
3828    AtomTouchGestureClassified = 177,
3829    AtomHiddenApiUsed = 178,
3830    AtomStyleUiChanged = 179,
3831    AtomPrivacyIndicatorsInteracted = 180,
3832    AtomAppInstallOnExternalStorageReported = 181,
3833    AtomNetworkStackReported = 182,
3834    AtomAppMovedStorageReported = 183,
3835    AtomBiometricEnrolled = 184,
3836    AtomSystemServerWatchdogOccurred = 185,
3837    AtomTombStoneOccurred = 186,
3838    AtomBluetoothClassOfDeviceReported = 187,
3839    AtomIntelligenceEventReported = 188,
3840    AtomThermalThrottlingSeverityStateChanged = 189,
3841    AtomRoleRequestResultReported = 190,
3842    AtomMediametricsAudiopolicyReported = 191,
3843    AtomMediametricsAudiorecordReported = 192,
3844    AtomMediametricsAudiothreadReported = 193,
3845    AtomMediametricsAudiotrackReported = 194,
3846    AtomMediametricsCodecReported = 195,
3847    AtomMediametricsDrmWidevineReported = 196,
3848    AtomMediametricsExtractorReported = 197,
3849    AtomMediametricsMediadrmReported = 198,
3850    AtomMediametricsNuplayerReported = 199,
3851    AtomMediametricsRecorderReported = 200,
3852    AtomMediametricsDrmmanagerReported = 201,
3853    AtomCarPowerStateChanged = 203,
3854    AtomGarageModeInfo = 204,
3855    AtomTestAtomReported = 205,
3856    AtomContentCaptureCallerMismatchReported = 206,
3857    AtomContentCaptureServiceEvents = 207,
3858    AtomContentCaptureSessionEvents = 208,
3859    AtomContentCaptureFlushed = 209,
3860    AtomLocationManagerApiUsageReported = 210,
3861    AtomReviewPermissionsFragmentResultReported = 211,
3862    AtomRuntimePermissionsUpgradeResult = 212,
3863    AtomGrantPermissionsActivityButtonActions = 213,
3864    AtomLocationAccessCheckNotificationAction = 214,
3865    AtomAppPermissionFragmentActionReported = 215,
3866    AtomAppPermissionFragmentViewed = 216,
3867    AtomAppPermissionsFragmentViewed = 217,
3868    AtomPermissionAppsFragmentViewed = 218,
3869    AtomTextSelectionEvent = 219,
3870    AtomTextLinkifyEvent = 220,
3871    AtomConversationActionsEvent = 221,
3872    AtomLanguageDetectionEvent = 222,
3873    AtomExclusionRectStateChanged = 223,
3874    AtomBackGestureReportedReported = 224,
3875    AtomUpdateEngineUpdateAttemptReported = 225,
3876    AtomUpdateEngineSuccessfulUpdateReported = 226,
3877    AtomCameraActionEvent = 227,
3878    AtomAppCompatibilityChangeReported = 228,
3879    AtomPerfettoUploaded = 229,
3880    AtomVmsClientConnectionStateChanged = 230,
3881    AtomMediaProviderScanOccurred = 233,
3882    AtomMediaContentDeleted = 234,
3883    AtomMediaProviderPermissionRequested = 235,
3884    AtomMediaProviderSchemaChanged = 236,
3885    AtomMediaProviderIdleMaintenanceFinished = 237,
3886    AtomRebootEscrowRecoveryReported = 238,
3887    AtomBootTimeEventDurationReported = 239,
3888    AtomBootTimeEventElapsedTimeReported = 240,
3889    AtomBootTimeEventUtcTimeReported = 241,
3890    AtomBootTimeEventErrorCodeReported = 242,
3891    AtomUserspaceRebootReported = 243,
3892    AtomNotificationReported = 244,
3893    AtomNotificationPanelReported = 245,
3894    AtomNotificationChannelModified = 246,
3895    AtomIntegrityCheckResultReported = 247,
3896    AtomIntegrityRulesPushed = 248,
3897    AtomCbMessageReported = 249,
3898    AtomCbMessageError = 250,
3899    AtomWifiHealthStatReported = 251,
3900    AtomWifiFailureStatReported = 252,
3901    AtomWifiConnectionResultReported = 253,
3902    AtomAppFreezeChanged = 254,
3903    AtomSnapshotMergeReported = 255,
3904    AtomForegroundServiceAppOpSessionEnded = 256,
3905    AtomDisplayJankReported = 257,
3906    AtomAppStandbyBucketChanged = 258,
3907    AtomSharesheetStarted = 259,
3908    AtomRankingSelected = 260,
3909    AtomTvsettingsUiInteracted = 261,
3910    AtomLauncherSnapshot = 262,
3911    AtomPackageInstallerV2Reported = 263,
3912    AtomUserLifecycleJourneyReported = 264,
3913    AtomUserLifecycleEventOccurred = 265,
3914    AtomAccessibilityShortcutReported = 266,
3915    AtomAccessibilityServiceReported = 267,
3916    AtomDocsUiDragAndDropReported = 268,
3917    AtomAppUsageEventOccurred = 269,
3918    AtomAutoRevokeNotificationClicked = 270,
3919    AtomAutoRevokeFragmentAppViewed = 271,
3920    AtomAutoRevokedAppInteraction = 272,
3921    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
3922    AtomEvsUsageStatsReported = 274,
3923    AtomAudioPowerUsageDataReported = 275,
3924    AtomTvTunerStateChanged = 276,
3925    AtomMediaoutputOpSwitchReported = 277,
3926    AtomCbMessageFiltered = 278,
3927    AtomTvTunerDvrStatus = 279,
3928    AtomTvCasSessionOpenStatus = 280,
3929    AtomAssistantInvocationReported = 281,
3930    AtomDisplayWakeReported = 282,
3931    AtomCarUserHalModifyUserRequestReported = 283,
3932    AtomCarUserHalModifyUserResponseReported = 284,
3933    AtomCarUserHalPostSwitchResponseReported = 285,
3934    AtomCarUserHalInitialUserInfoRequestReported = 286,
3935    AtomCarUserHalInitialUserInfoResponseReported = 287,
3936    AtomCarUserHalUserAssociationRequestReported = 288,
3937    AtomCarUserHalSetUserAssociationResponseReported = 289,
3938    AtomNetworkIpProvisioningReported = 290,
3939    AtomNetworkDhcpRenewReported = 291,
3940    AtomNetworkValidationReported = 292,
3941    AtomNetworkStackQuirkReported = 293,
3942    AtomMediametricsAudiorecorddeviceusageReported = 294,
3943    AtomMediametricsAudiothreaddeviceusageReported = 295,
3944    AtomMediametricsAudiotrackdeviceusageReported = 296,
3945    AtomMediametricsAudiodeviceconnectionReported = 297,
3946    AtomBlobCommitted = 298,
3947    AtomBlobLeased = 299,
3948    AtomBlobOpened = 300,
3949    AtomContactsProviderStatusReported = 301,
3950    AtomKeystoreKeyEventReported = 302,
3951    AtomNetworkTetheringReported = 303,
3952    AtomImeTouchReported = 304,
3953    AtomUiInteractionFrameInfoReported = 305,
3954    AtomUiActionLatencyReported = 306,
3955    AtomWifiDisconnectReported = 307,
3956    AtomWifiConnectionStateChanged = 308,
3957    AtomHdmiCecActiveSourceChanged = 309,
3958    AtomHdmiCecMessageReported = 310,
3959    AtomAirplaneMode = 311,
3960    AtomModemRestart = 312,
3961    AtomCarrierIdMismatchReported = 313,
3962    AtomCarrierIdTableUpdated = 314,
3963    AtomDataStallRecoveryReported = 315,
3964    AtomMediametricsMediaparserReported = 316,
3965    AtomTlsHandshakeReported = 317,
3966    AtomTextClassifierApiUsageReported = 318,
3967    AtomCarWatchdogKillStatsReported = 319,
3968    AtomMediametricsPlaybackReported = 320,
3969    AtomMediaNetworkInfoChanged = 321,
3970    AtomMediaPlaybackStateChanged = 322,
3971    AtomMediaPlaybackErrorReported = 323,
3972    AtomMediaPlaybackTrackChanged = 324,
3973    AtomWifiScanReported = 325,
3974    AtomWifiPnoScanReported = 326,
3975    AtomTifTuneChanged = 327,
3976    AtomAutoRotateReported = 328,
3977    AtomPerfettoTrigger = 329,
3978    AtomTranscodingData = 330,
3979    AtomImsServiceEntitlementUpdated = 331,
3980    AtomDeviceRotated = 333,
3981    AtomSimSpecificSettingsRestored = 334,
3982    AtomTextClassifierDownloadReported = 335,
3983    AtomPinStorageEvent = 336,
3984    AtomFaceDownReported = 337,
3985    AtomBluetoothHalCrashReasonReported = 338,
3986    AtomRebootEscrowPreparationReported = 339,
3987    AtomRebootEscrowLskfCaptureReported = 340,
3988    AtomRebootEscrowRebootReported = 341,
3989    AtomBinderLatencyReported = 342,
3990    AtomMediametricsAaudiostreamReported = 343,
3991    AtomMediaTranscodingSessionEnded = 344,
3992    AtomMagnificationUsageReported = 345,
3993    AtomMagnificationModeWithImeOnReported = 346,
3994    AtomAppSearchCallStatsReported = 347,
3995    AtomAppSearchPutDocumentStatsReported = 348,
3996    AtomDeviceControlChanged = 349,
3997    AtomDeviceStateChanged = 350,
3998    AtomInputdeviceRegistered = 351,
3999    AtomSmartspaceCardReported = 352,
4000    AtomAuthPromptAuthenticateInvoked = 353,
4001    AtomAuthManagerCanAuthenticateInvoked = 354,
4002    AtomAuthEnrollActionInvoked = 355,
4003    AtomAuthDeprecatedApiUsed = 356,
4004    AtomUnattendedRebootOccurred = 357,
4005    AtomLongRebootBlockingReported = 358,
4006    AtomLocationTimeZoneProviderStateChanged = 359,
4007    AtomFdtrackEventOccurred = 364,
4008    AtomTimeoutAutoExtendedReported = 365,
4009    AtomAlarmBatchDelivered = 367,
4010    AtomAlarmScheduled = 368,
4011    AtomCarWatchdogIoOveruseStatsReported = 369,
4012    AtomUserLevelHibernationStateChanged = 370,
4013    AtomAppSearchInitializeStatsReported = 371,
4014    AtomAppSearchQueryStatsReported = 372,
4015    AtomAppProcessDied = 373,
4016    AtomNetworkIpReachabilityMonitorReported = 374,
4017    AtomSlowInputEventReported = 375,
4018    AtomAnrOccurredProcessingStarted = 376,
4019    AtomAppSearchRemoveStatsReported = 377,
4020    AtomMediaCodecReported = 378,
4021    AtomPermissionUsageFragmentInteraction = 379,
4022    AtomPermissionDetailsInteraction = 380,
4023    AtomPrivacySensorToggleInteraction = 381,
4024    AtomPrivacyToggleDialogInteraction = 382,
4025    AtomAppSearchOptimizeStatsReported = 383,
4026    AtomNonA11yToolServiceWarningReport = 384,
4027    AtomAppCompatStateChanged = 386,
4028    AtomSizeCompatRestartButtonEventReported = 387,
4029    AtomSplitscreenUiChanged = 388,
4030    AtomNetworkDnsHandshakeReported = 389,
4031    AtomBluetoothCodePathCounter = 390,
4032    AtomBluetoothLeBatchScanReportDelay = 392,
4033    AtomAccessibilityFloatingMenuUiChanged = 393,
4034    AtomNeuralnetworksCompilationCompleted = 394,
4035    AtomNeuralnetworksExecutionCompleted = 395,
4036    AtomNeuralnetworksCompilationFailed = 396,
4037    AtomNeuralnetworksExecutionFailed = 397,
4038    AtomContextHubBooted = 398,
4039    AtomContextHubRestarted = 399,
4040    AtomContextHubLoadedNanoappSnapshotReported = 400,
4041    AtomChreCodeDownloadTransacted = 401,
4042    AtomUwbSessionInited = 402,
4043    AtomUwbSessionClosed = 403,
4044    AtomUwbFirstRangingReceived = 404,
4045    AtomUwbRangingMeasurementReceived = 405,
4046    AtomTextClassifierDownloadWorkScheduled = 406,
4047    AtomTextClassifierDownloadWorkCompleted = 407,
4048    AtomClipboardCleared = 408,
4049    AtomVmCreationRequested = 409,
4050    AtomNearbyDeviceScanStateChanged = 410,
4051    AtomApplicationLocalesChanged = 412,
4052    AtomMediametricsAudiotrackstatusReported = 413,
4053    AtomFoldStateDurationReported = 414,
4054    AtomLocationTimeZoneProviderControllerStateChanged = 415,
4055    AtomDisplayHbmStateChanged = 416,
4056    AtomDisplayHbmBrightnessChanged = 417,
4057    AtomPersistentUriPermissionsFlushed = 418,
4058    AtomEarlyBootCompOsArtifactsCheckReported = 419,
4059    AtomVbmetaDigestReported = 420,
4060    AtomApexInfoGathered = 421,
4061    AtomPvmInfoGathered = 422,
4062    AtomWearSettingsUiInteracted = 423,
4063    AtomTracingServiceReportEvent = 424,
4064    AtomMediametricsAudiorecordstatusReported = 425,
4065    AtomLauncherLatency = 426,
4066    AtomDropboxEntryDropped = 427,
4067    AtomWifiP2pConnectionReported = 428,
4068    AtomGameStateChanged = 429,
4069    AtomHotwordDetectorCreateRequested = 430,
4070    AtomHotwordDetectionServiceInitResultReported = 431,
4071    AtomHotwordDetectionServiceRestarted = 432,
4072    AtomHotwordDetectorKeyphraseTriggered = 433,
4073    AtomHotwordDetectorEvents = 434,
4074    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
4075    AtomContactsIndexerUpdateStatsReported = 440,
4076    AtomAppBackgroundRestrictionsInfo = 441,
4077    AtomMmsSmsProviderGetThreadIdFailed = 442,
4078    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
4079    AtomPermissionReminderNotificationInteracted = 444,
4080    AtomRecentPermissionDecisionsInteracted = 445,
4081    AtomGnssPsdsDownloadReported = 446,
4082    AtomLeAudioConnectionSessionReported = 447,
4083    AtomLeAudioBroadcastSessionReported = 448,
4084    AtomDreamUiEventReported = 449,
4085    AtomTaskManagerEventReported = 450,
4086    AtomCdmAssociationAction = 451,
4087    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
4088    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
4089    AtomAccessibilityTextReadingOptionsChanged = 454,
4090    AtomWifiSetupFailureCrashReported = 455,
4091    AtomUwbDeviceErrorReported = 456,
4092    AtomIsolatedCompilationScheduled = 457,
4093    AtomIsolatedCompilationEnded = 458,
4094    AtomOnsOpportunisticEsimProvisioningComplete = 459,
4095    AtomSystemServerPreWatchdogOccurred = 460,
4096    AtomTelephonyAnomalyDetected = 461,
4097    AtomLetterboxPositionChanged = 462,
4098    AtomRemoteKeyProvisioningAttempt = 463,
4099    AtomRemoteKeyProvisioningNetworkInfo = 464,
4100    AtomRemoteKeyProvisioningTiming = 465,
4101    AtomMediaoutputOpInteractionReport = 466,
4102    AtomSyncExemptionOccurred = 468,
4103    AtomAutofillPresentationEventReported = 469,
4104    AtomDockStateChanged = 470,
4105    AtomSafetySourceStateCollected = 471,
4106    AtomSafetyCenterSystemEventReported = 472,
4107    AtomSafetyCenterInteractionReported = 473,
4108    AtomSettingsProviderSettingChanged = 474,
4109    AtomBroadcastDeliveryEventReported = 475,
4110    AtomServiceRequestEventReported = 476,
4111    AtomProviderAcquisitionEventReported = 477,
4112    AtomBluetoothDeviceNameReported = 478,
4113    AtomCbConfigUpdated = 479,
4114    AtomCbModuleErrorReported = 480,
4115    AtomCbServiceFeatureChanged = 481,
4116    AtomCbReceiverFeatureChanged = 482,
4117    AtomPrivacySignalNotificationInteraction = 484,
4118    AtomPrivacySignalIssueCardInteraction = 485,
4119    AtomPrivacySignalsJobFailure = 486,
4120    AtomVibrationReported = 487,
4121    AtomUwbRangingStart = 489,
4122    AtomAppCompactedV2 = 491,
4123    AtomDisplayBrightnessChanged = 494,
4124    AtomActivityActionBlocked = 495,
4125    AtomNetworkDnsServerSupportReported = 504,
4126    AtomVmBooted = 505,
4127    AtomVmExited = 506,
4128    AtomAmbientBrightnessStatsReported = 507,
4129    AtomMediametricsSpatializercapabilitiesReported = 508,
4130    AtomMediametricsSpatializerdeviceenabledReported = 509,
4131    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
4132    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
4133    AtomHearingAidInfoReported = 513,
4134    AtomDeviceWideJobConstraintChanged = 514,
4135    AtomAmbientModeChanged = 515,
4136    AtomAnrLatencyReported = 516,
4137    AtomResourceApiInfo = 517,
4138    AtomSystemDefaultNetworkChanged = 518,
4139    AtomIwlanSetupDataCallResultReported = 519,
4140    AtomIwlanPdnDisconnectedReasonReported = 520,
4141    AtomAirplaneModeSessionReported = 521,
4142    AtomVmCpuStatusReported = 522,
4143    AtomVmMemStatusReported = 523,
4144    AtomPackageInstallationSessionReported = 524,
4145    AtomDefaultNetworkRematchInfo = 525,
4146    AtomNetworkSelectionPerformance = 526,
4147    AtomNetworkNsdReported = 527,
4148    AtomBluetoothDisconnectionReasonReported = 529,
4149    AtomBluetoothLocalVersionsReported = 530,
4150    AtomBluetoothRemoteSupportedFeaturesReported = 531,
4151    AtomBluetoothLocalSupportedFeaturesReported = 532,
4152    AtomBluetoothGattAppInfo = 533,
4153    AtomBrightnessConfigurationUpdated = 534,
4154    AtomWearMediaOutputSwitcherLaunched = 538,
4155    AtomWearMediaOutputSwitcherFinished = 539,
4156    AtomWearMediaOutputSwitcherConnectionReported = 540,
4157    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
4158    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
4159    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
4160    AtomPackageManagerSnapshotReported = 544,
4161    AtomPackageManagerAppsFilterCacheBuildReported = 545,
4162    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
4163    AtomLauncherImpressionEvent = 547,
4164    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
4165    AtomWsWatchFaceEdited = 551,
4166    AtomWsWatchFaceFavoriteActionReported = 552,
4167    AtomWsWatchFaceSetActionReported = 553,
4168    AtomPackageUninstallationReported = 554,
4169    AtomGameModeChanged = 555,
4170    AtomGameModeConfigurationChanged = 556,
4171    AtomBedtimeModeStateChanged = 557,
4172    AtomNetworkSliceSessionEnded = 558,
4173    AtomNetworkSliceDailyDataUsageReported = 559,
4174    AtomNfcTagTypeOccurred = 560,
4175    AtomNfcAidConflictOccurred = 561,
4176    AtomNfcReaderConflictOccurred = 562,
4177    AtomWsTileListChanged = 563,
4178    AtomGetTypeAccessedWithoutPermission = 564,
4179    AtomMobileBundledAppInfoGathered = 566,
4180    AtomWsWatchFaceComplicationSetChanged = 567,
4181    AtomMediaDrmCreated = 568,
4182    AtomMediaDrmErrored = 569,
4183    AtomMediaDrmSessionOpened = 570,
4184    AtomMediaDrmSessionClosed = 571,
4185    AtomUserSelectedResolution = 572,
4186    AtomUnsafeIntentEventReported = 573,
4187    AtomPerformanceHintSessionReported = 574,
4188    AtomMediametricsMidiDeviceCloseReported = 576,
4189    AtomBiometricTouchReported = 577,
4190    AtomHotwordAudioEgressEventReported = 578,
4191    AtomLocationEnabledStateChanged = 580,
4192    AtomImeRequestFinished = 581,
4193    AtomUsbComplianceWarningsReported = 582,
4194    AtomAppSupportedLocalesChanged = 583,
4195    AtomMediaProviderVolumeRecoveryReported = 586,
4196    AtomBiometricPropertiesCollected = 587,
4197    AtomKernelWakeupAttributed = 588,
4198    AtomScreenStateChangedV2 = 589,
4199    AtomWsBackupActionReported = 590,
4200    AtomWsRestoreActionReported = 591,
4201    AtomDeviceLogAccessEventReported = 592,
4202    AtomMediaSessionUpdated = 594,
4203    AtomWearOobeStateChanged = 595,
4204    AtomWsNotificationUpdated = 596,
4205    AtomNetworkValidationFailureStatsDailyReported = 601,
4206    AtomWsComplicationTapped = 602,
4207    AtomWsNotificationBlocking = 780,
4208    AtomWsNotificationBridgemodeUpdated = 822,
4209    AtomWsNotificationDismissalActioned = 823,
4210    AtomWsNotificationActioned = 824,
4211    AtomWsNotificationLatency = 880,
4212    AtomWifiBytesTransfer = 10000,
4213    AtomWifiBytesTransferByFgBg = 10001,
4214    AtomMobileBytesTransfer = 10002,
4215    AtomMobileBytesTransferByFgBg = 10003,
4216    AtomBluetoothBytesTransfer = 10006,
4217    AtomKernelWakelock = 10004,
4218    AtomSubsystemSleepState = 10005,
4219    AtomCpuTimePerUid = 10009,
4220    AtomCpuTimePerUidFreq = 10010,
4221    AtomWifiActivityInfo = 10011,
4222    AtomModemActivityInfo = 10012,
4223    AtomBluetoothActivityInfo = 10007,
4224    AtomProcessMemoryState = 10013,
4225    AtomSystemElapsedRealtime = 10014,
4226    AtomSystemUptime = 10015,
4227    AtomCpuActiveTime = 10016,
4228    AtomCpuClusterTime = 10017,
4229    AtomDiskSpace = 10018,
4230    AtomRemainingBatteryCapacity = 10019,
4231    AtomFullBatteryCapacity = 10020,
4232    AtomTemperature = 10021,
4233    AtomBinderCalls = 10022,
4234    AtomBinderCallsExceptions = 10023,
4235    AtomLooperStats = 10024,
4236    AtomDiskStats = 10025,
4237    AtomDirectoryUsage = 10026,
4238    AtomAppSize = 10027,
4239    AtomCategorySize = 10028,
4240    AtomProcStats = 10029,
4241    AtomBatteryVoltage = 10030,
4242    AtomNumFingerprintsEnrolled = 10031,
4243    AtomDiskIo = 10032,
4244    AtomPowerProfile = 10033,
4245    AtomProcStatsPkgProc = 10034,
4246    AtomProcessCpuTime = 10035,
4247    AtomCpuTimePerThreadFreq = 10037,
4248    AtomOnDevicePowerMeasurement = 10038,
4249    AtomDeviceCalculatedPowerUse = 10039,
4250    AtomProcessMemoryHighWaterMark = 10042,
4251    AtomBatteryLevel = 10043,
4252    AtomBuildInformation = 10044,
4253    AtomBatteryCycleCount = 10045,
4254    AtomDebugElapsedClock = 10046,
4255    AtomDebugFailingElapsedClock = 10047,
4256    AtomNumFacesEnrolled = 10048,
4257    AtomRoleHolder = 10049,
4258    AtomDangerousPermissionState = 10050,
4259    AtomTrainInfo = 10051,
4260    AtomTimeZoneDataInfo = 10052,
4261    AtomExternalStorageInfo = 10053,
4262    AtomGpuStatsGlobalInfo = 10054,
4263    AtomGpuStatsAppInfo = 10055,
4264    AtomSystemIonHeapSize = 10056,
4265    AtomAppsOnExternalStorageInfo = 10057,
4266    AtomFaceSettings = 10058,
4267    AtomCoolingDevice = 10059,
4268    AtomAppOps = 10060,
4269    AtomProcessSystemIonHeapSize = 10061,
4270    AtomSurfaceflingerStatsGlobalInfo = 10062,
4271    AtomSurfaceflingerStatsLayerInfo = 10063,
4272    AtomProcessMemorySnapshot = 10064,
4273    AtomVmsClientStats = 10065,
4274    AtomNotificationRemoteViews = 10066,
4275    AtomDangerousPermissionStateSampled = 10067,
4276    AtomGraphicsStats = 10068,
4277    AtomRuntimeAppOpAccess = 10069,
4278    AtomIonHeapSize = 10070,
4279    AtomPackageNotificationPreferences = 10071,
4280    AtomPackageNotificationChannelPreferences = 10072,
4281    AtomPackageNotificationChannelGroupPreferences = 10073,
4282    AtomGnssStats = 10074,
4283    AtomAttributedAppOps = 10075,
4284    AtomVoiceCallSession = 10076,
4285    AtomVoiceCallRatUsage = 10077,
4286    AtomSimSlotState = 10078,
4287    AtomSupportedRadioAccessFamily = 10079,
4288    AtomSettingSnapshot = 10080,
4289    AtomBlobInfo = 10081,
4290    AtomDataUsageBytesTransfer = 10082,
4291    AtomBytesTransferByTagAndMetered = 10083,
4292    AtomDndModeRule = 10084,
4293    AtomGeneralExternalStorageAccessStats = 10085,
4294    AtomIncomingSms = 10086,
4295    AtomOutgoingSms = 10087,
4296    AtomCarrierIdTableVersion = 10088,
4297    AtomDataCallSession = 10089,
4298    AtomCellularServiceState = 10090,
4299    AtomCellularDataServiceSwitch = 10091,
4300    AtomSystemMemory = 10092,
4301    AtomImsRegistrationTermination = 10093,
4302    AtomImsRegistrationStats = 10094,
4303    AtomCpuTimePerClusterFreq = 10095,
4304    AtomCpuCyclesPerUidCluster = 10096,
4305    AtomDeviceRotatedData = 10097,
4306    AtomCpuCyclesPerThreadGroupCluster = 10098,
4307    AtomMediaDrmActivityInfo = 10099,
4308    AtomOemManagedBytesTransfer = 10100,
4309    AtomGnssPowerStats = 10101,
4310    AtomTimeZoneDetectorState = 10102,
4311    AtomKeystore2StorageStats = 10103,
4312    AtomRkpPoolStats = 10104,
4313    AtomProcessDmabufMemory = 10105,
4314    AtomPendingAlarmInfo = 10106,
4315    AtomUserLevelHibernatedApps = 10107,
4316    AtomLauncherLayoutSnapshot = 10108,
4317    AtomGlobalHibernatedApps = 10109,
4318    AtomInputEventLatencySketch = 10110,
4319    AtomBatteryUsageStatsBeforeReset = 10111,
4320    AtomBatteryUsageStatsSinceReset = 10112,
4321    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
4322    AtomInstalledIncrementalPackage = 10114,
4323    AtomTelephonyNetworkRequests = 10115,
4324    AtomAppSearchStorageInfo = 10116,
4325    AtomVmstat = 10117,
4326    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
4327    AtomKeystore2KeyCreationWithAuthInfo = 10119,
4328    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
4329    AtomKeystore2AtomWithOverflow = 10121,
4330    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
4331    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
4332    AtomRkpErrorStats = 10124,
4333    AtomKeystore2CrashStats = 10125,
4334    AtomVendorApexInfo = 10126,
4335    AtomAccessibilityShortcutStats = 10127,
4336    AtomAccessibilityFloatingMenuStats = 10128,
4337    AtomDataUsageBytesTransferV2 = 10129,
4338    AtomMediaCapabilities = 10130,
4339    AtomCarWatchdogSystemIoUsageSummary = 10131,
4340    AtomCarWatchdogUidIoUsageSummary = 10132,
4341    AtomImsRegistrationFeatureTagStats = 10133,
4342    AtomRcsClientProvisioningStats = 10134,
4343    AtomRcsAcsProvisioningStats = 10135,
4344    AtomSipDelegateStats = 10136,
4345    AtomSipTransportFeatureTagStats = 10137,
4346    AtomSipMessageResponse = 10138,
4347    AtomSipTransportSession = 10139,
4348    AtomImsDedicatedBearerListenerEvent = 10140,
4349    AtomImsDedicatedBearerEvent = 10141,
4350    AtomImsRegistrationServiceDescStats = 10142,
4351    AtomUceEventStats = 10143,
4352    AtomPresenceNotifyEvent = 10144,
4353    AtomGbaEvent = 10145,
4354    AtomPerSimStatus = 10146,
4355    AtomGpuWorkPerUid = 10147,
4356    AtomPersistentUriPermissionsAmountPerPackage = 10148,
4357    AtomSignedPartitionInfo = 10149,
4358    AtomPinnedFileSizesPerPackage = 10150,
4359    AtomPendingIntentsPerPackage = 10151,
4360    AtomUserInfo = 10152,
4361    AtomTelephonyNetworkRequestsV2 = 10153,
4362    AtomDeviceTelephonyProperties = 10154,
4363    AtomRemoteKeyProvisioningErrorCounts = 10155,
4364    AtomSafetyState = 10156,
4365    AtomIncomingMms = 10157,
4366    AtomOutgoingMms = 10158,
4367    AtomMultiUserInfo = 10160,
4368    AtomNetworkBpfMapInfo = 10161,
4369    AtomOutgoingShortCodeSms = 10162,
4370    AtomConnectivityStateSample = 10163,
4371    AtomNetworkSelectionRematchReasonsInfo = 10164,
4372    AtomGameModeInfo = 10165,
4373    AtomGameModeConfiguration = 10166,
4374    AtomGameModeListener = 10167,
4375    AtomNetworkSliceRequestCount = 10168,
4376    AtomWsTileSnapshot = 10169,
4377    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
4378    AtomProcessState = 10171,
4379    AtomProcessAssociation = 10172,
4380    AtomAdpfSystemComponentInfo = 10173,
4381    AtomNotificationMemoryUse = 10174,
4382    AtomHdrCapabilities = 10175,
4383    AtomWsFavouriteWatchFaceListSnapshot = 10176,
4384    AtomWifiAwareNdpReported = 638,
4385    AtomWifiAwareAttachReported = 639,
4386    AtomWifiSelfRecoveryTriggered = 661,
4387    AtomSoftApStarted = 680,
4388    AtomSoftApStopped = 681,
4389    AtomWifiLockReleased = 687,
4390    AtomWifiLockDeactivated = 688,
4391    AtomWifiConfigSaved = 689,
4392    AtomWifiAwareResourceUsingChanged = 690,
4393    AtomWifiAwareHalApiCalled = 691,
4394    AtomWifiLocalOnlyRequestReceived = 692,
4395    AtomWifiLocalOnlyRequestScanTriggered = 693,
4396    AtomWifiThreadTaskExecuted = 694,
4397    AtomWifiStateChanged = 700,
4398    AtomPnoScanStarted = 719,
4399    AtomPnoScanStopped = 720,
4400    AtomWifiIsUnusableReported = 722,
4401    AtomWifiApCapabilitiesReported = 723,
4402    AtomSoftApStateChanged = 805,
4403    AtomScorerPredictionResultReported = 884,
4404    AtomWifiAwareCapabilities = 10190,
4405    AtomWifiModuleInfo = 10193,
4406    AtomWifiSettingInfo = 10194,
4407    AtomWifiComplexSettingInfo = 10195,
4408    AtomWifiConfiguredNetworkInfo = 10198,
4409    AtomWearPowerMenuOpened = 731,
4410    AtomWearAssistantOpened = 755,
4411    AtomFirstOverlayStateChanged = 917,
4412    AtomWsWearTimeSession = 610,
4413    AtomWsIncomingCallActionReported = 626,
4414    AtomWsCallDisconnectionReported = 627,
4415    AtomWsCallDurationReported = 628,
4416    AtomWsCallUserExperienceLatencyReported = 629,
4417    AtomWsCallInteractionReported = 630,
4418    AtomWsOnBodyStateChanged = 787,
4419    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
4420    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
4421    AtomWsComplicationsImpactedNotificationEventReported = 804,
4422    AtomWsRemoteEventUsageReported = 920,
4423    AtomWsNotificationManagedDismissalSync = 941,
4424    AtomWsBugreportEventReported = 964,
4425    AtomWsStandaloneModeSnapshot = 10197,
4426    AtomWsFavoriteWatchFaceSnapshot = 10206,
4427    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
4428    AtomWsWatchFaceCustomizationSnapshot = 10227,
4429    AtomWearAdaptiveSuspendStatsReported = 619,
4430    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
4431    AtomWearPowerAnomalyServiceEventStatsReported = 621,
4432    AtomWearTimeSyncRequested = 911,
4433    AtomWearTimeUpdateStarted = 912,
4434    AtomWearTimeSyncAttemptCompleted = 913,
4435    AtomWearTimeChanged = 914,
4436    AtomWearSetupWizardDeviceStatusReported = 953,
4437    AtomWearSetupWizardPairingCompleted = 954,
4438    AtomWearSetupWizardConnectionEstablished = 955,
4439    AtomWearSetupWizardCheckinCompleted = 956,
4440    AtomWearSetupWizardCompanionTimeReported = 957,
4441    AtomWearSetupWizardStatusReported = 958,
4442    AtomWearSetupWizardHeartbeatReported = 959,
4443    AtomWearSetupWizardFrpTriggered = 960,
4444    AtomWearSetupWizardSystemUpdateTriggered = 961,
4445    AtomWearSetupWizardPhoneSwitchTriggered = 962,
4446    AtomRendererInitialized = 736,
4447    AtomSchemaVersionReceived = 737,
4448    AtomLayoutInspected = 741,
4449    AtomLayoutExpressionInspected = 742,
4450    AtomLayoutAnimationsInspected = 743,
4451    AtomMaterialComponentsInspected = 744,
4452    AtomTileRequested = 745,
4453    AtomStateResponseReceived = 746,
4454    AtomTileResponseReceived = 747,
4455    AtomInflationFinished = 748,
4456    AtomInflationFailed = 749,
4457    AtomIgnoredInflationFailuresReported = 750,
4458    AtomDrawableRendered = 751,
4459    AtomWearModeStateChanged = 715,
4460    AtomMediaActionReported = 608,
4461    AtomMediaControlsLaunched = 609,
4462    AtomMediaSessionStateChanged = 677,
4463    AtomMediaControlApiUsageReported = 966,
4464    AtomMediaSubscriptionChanged = 990,
4465    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
4466    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
4467    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
4468    AtomMediatorUpdated = 721,
4469    AtomSysproxyBluetoothBytesTransfer = 10196,
4470    AtomSysproxyConnectionUpdated = 786,
4471    AtomWearCompanionConnectionState = 921,
4472    AtomSysproxyServiceStateUpdated = 949,
4473    AtomUwbActivityInfo = 10188,
4474    AtomTestUprobestatsAtomReported = 915,
4475    AtomTvLowPowerStandbyPolicy = 679,
4476    AtomExternalTvInputEvent = 717,
4477    AtomBootIntegrityInfoReported = 775,
4478    AtomThreadnetworkTelemetryDataReported = 738,
4479    AtomThreadnetworkTopoEntryRepeated = 739,
4480    AtomThreadnetworkDeviceInfoReported = 740,
4481    AtomCellularRadioPowerStateChanged = 713,
4482    AtomEmergencyNumbersInfo = 10180,
4483    AtomDataNetworkValidation = 10207,
4484    AtomDataRatStateChanged = 854,
4485    AtomConnectedChannelChanged = 882,
4486    AtomCellularIdentifierDisclosed = 800,
4487    AtomSatelliteController = 10182,
4488    AtomSatelliteSession = 10183,
4489    AtomSatelliteIncomingDatagram = 10184,
4490    AtomSatelliteOutgoingDatagram = 10185,
4491    AtomSatelliteProvision = 10186,
4492    AtomSatelliteSosMessageRecommender = 10187,
4493    AtomCarrierRoamingSatelliteSession = 10211,
4494    AtomCarrierRoamingSatelliteControllerStats = 10212,
4495    AtomControllerStatsPerPackage = 10213,
4496    AtomSatelliteEntitlement = 10214,
4497    AtomSatelliteConfigUpdater = 10215,
4498    AtomSatelliteAccessController = 10219,
4499    AtomQualifiedRatListChanged = 634,
4500    AtomQnsImsCallDropStats = 635,
4501    AtomQnsFallbackRestrictionChanged = 636,
4502    AtomQnsRatPreferenceMismatchInfo = 10177,
4503    AtomQnsHandoverTimeMillis = 10178,
4504    AtomQnsHandoverPingpong = 10179,
4505    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
4506    AtomEmergencyNumberDialed = 637,
4507    AtomCallStats = 10221,
4508    AtomCallAudioRouteStats = 10222,
4509    AtomTelecomApiStats = 10223,
4510    AtomTelecomErrorStats = 10224,
4511    AtomLockscreenShortcutSelected = 611,
4512    AtomLockscreenShortcutTriggered = 612,
4513    AtomLauncherImpressionEventV2 = 716,
4514    AtomDisplaySwitchLatencyTracked = 753,
4515    AtomNotificationListenerService = 829,
4516    AtomNavHandleTouchPoints = 869,
4517    AtomCommunalHubWidgetEventReported = 908,
4518    AtomPeripheralTutorialLaunched = 942,
4519    AtomContextualEducationTriggered = 971,
4520    AtomCommunalHubSnapshot = 10226,
4521    AtomTestExtensionAtomReported = 660,
4522    AtomTestRestrictedAtomReported = 672,
4523    AtomStatsSocketLossReported = 752,
4524    AtomSettingsSpaReported = 622,
4525    AtomSelinuxAuditLog = 799,
4526    AtomSandboxApiCalled = 488,
4527    AtomSandboxActivityEventOccurred = 735,
4528    AtomSdkSandboxRestrictedAccessInSession = 796,
4529    AtomSandboxSdkStorage = 10159,
4530    AtomRkpdPoolStats = 664,
4531    AtomRkpdClientOperation = 665,
4532    AtomRangingSessionConfigured = 993,
4533    AtomRangingSessionStarted = 994,
4534    AtomRangingSessionClosed = 995,
4535    AtomRangingTechnologyStarted = 996,
4536    AtomRangingTechnologyStopped = 997,
4537    AtomMediaProviderDatabaseRollbackReported = 784,
4538    AtomBackupSetupStatusReported = 785,
4539    AtomScreenOffReported = 776,
4540    AtomScreenTimeoutOverrideReported = 836,
4541    AtomScreenInteractiveSessionReported = 837,
4542    AtomScreenDimReported = 867,
4543    AtomAtom9999 = 9999,
4544    AtomAtom99999 = 99999,
4545    AtomPhotopickerSessionInfoReported = 886,
4546    AtomPhotopickerApiInfoReported = 887,
4547    AtomPhotopickerUiEventLogged = 888,
4548    AtomPhotopickerMediaItemStatusReported = 889,
4549    AtomPhotopickerPreviewInfoLogged = 890,
4550    AtomPhotopickerMenuInteractionLogged = 891,
4551    AtomPhotopickerBannerInteractionLogged = 892,
4552    AtomPhotopickerMediaLibraryInfoLogged = 893,
4553    AtomPhotopickerPageInfoLogged = 894,
4554    AtomPhotopickerMediaGridSyncInfoReported = 895,
4555    AtomPhotopickerAlbumSyncInfoReported = 896,
4556    AtomPhotopickerSearchInfoReported = 897,
4557    AtomSearchDataExtractionDetailsReported = 898,
4558    AtomEmbeddedPhotopickerInfoReported = 899,
4559    AtomPermissionRationaleDialogViewed = 645,
4560    AtomPermissionRationaleDialogActionReported = 646,
4561    AtomAppDataSharingUpdatesNotificationInteraction = 647,
4562    AtomAppDataSharingUpdatesFragmentViewed = 648,
4563    AtomAppDataSharingUpdatesFragmentActionReported = 649,
4564    AtomEnhancedConfirmationDialogResultReported = 827,
4565    AtomEnhancedConfirmationRestrictionCleared = 828,
4566    AtomPressureStallInformation = 10229,
4567    AtomPdfLoadReported = 859,
4568    AtomPdfApiUsageReported = 860,
4569    AtomPdfSearchReported = 861,
4570    AtomComponentStateChangedReported = 863,
4571    AtomOndevicepersonalizationApiCalled = 711,
4572    AtomOndevicepersonalizationTraceEvent = 952,
4573    AtomNfcObserveModeStateChanged = 855,
4574    AtomNfcFieldChanged = 856,
4575    AtomNfcPollingLoopNotificationReported = 857,
4576    AtomNfcProprietaryCapabilitiesReported = 858,
4577    AtomNfcExitFrameTableChanged = 1036,
4578    AtomNfcAutoTransactReported = 1038,
4579    AtomMicroxrDeviceBootCompleteReported = 901,
4580    AtomMteState = 10181,
4581    AtomZramMaintenanceExecuted = 1015,
4582    AtomZramSetupExecuted = 1029,
4583    AtomZramMmStatMmd = 10232,
4584    AtomZramBdStatMmd = 10233,
4585    AtomMediaEditingEndedReported = 798,
4586    AtomMediaCodecReclaimRequestCompleted = 600,
4587    AtomMediaCodecStarted = 641,
4588    AtomMediaCodecStopped = 642,
4589    AtomMediaCodecRendered = 684,
4590    AtomEmergencyStateChanged = 633,
4591    AtomChreSignificantMotionStateChanged = 868,
4592    AtomPopulationDensityProviderLoadingReported = 1002,
4593    AtomDensityBasedCoarseLocationsUsageReported = 1003,
4594    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
4595    AtomKernelOomKillOccurred = 754,
4596    AtomKeyboardConfigured = 682,
4597    AtomKeyboardSystemsEventReported = 683,
4598    AtomInputdeviceUsageReported = 686,
4599    AtomInputEventLatencyReported = 932,
4600    AtomTouchpadUsage = 10191,
4601    AtomIkeSessionTerminated = 678,
4602    AtomIkeLivenessCheckSessionValidated = 760,
4603    AtomNegotiatedSecurityAssociation = 821,
4604    AtomHotwordEgressSizeAtomReported = 761,
4605    AtomHealthConnectUiImpression = 623,
4606    AtomHealthConnectUiInteraction = 624,
4607    AtomHealthConnectAppOpenedReported = 625,
4608    AtomHealthConnectApiCalled = 616,
4609    AtomHealthConnectUsageStats = 617,
4610    AtomHealthConnectStorageStats = 618,
4611    AtomHealthConnectApiInvoked = 643,
4612    AtomExerciseRouteApiCalled = 654,
4613    AtomHealthConnectExportInvoked = 907,
4614    AtomHealthConnectImportInvoked = 918,
4615    AtomHealthConnectExportImportStatsReported = 919,
4616    AtomHealthConnectPermissionStats = 963,
4617    AtomHealthConnectPhrApiInvoked = 980,
4618    AtomHealthConnectPhrUsageStats = 981,
4619    AtomHealthConnectPhrStorageStats = 984,
4620    AtomHealthConnectRestrictedEcosystemStats = 985,
4621    AtomHealthConnectEcosystemStats = 986,
4622    AtomHdmiEarcStatusReported = 701,
4623    AtomHdmiSoundbarModeStatusReported = 724,
4624    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
4625    AtomBatteryHealth = 10220,
4626    AtomBiometricUnenrolled = 944,
4627    AtomBiometricEnumerated = 945,
4628    AtomApplicationGrammaticalInflectionChanged = 584,
4629    AtomSystemGrammaticalInflectionChanged = 816,
4630    AtomFullScreenIntentLaunched = 631,
4631    AtomBalAllowed = 632,
4632    AtomInTaskActivityStarted = 685,
4633    AtomDeviceOrientationChanged = 906,
4634    AtomCachedAppsHighWatermark = 10189,
4635    AtomStylusPredictionMetricsReported = 718,
4636    AtomUserRiskEventReported = 725,
4637    AtomMediaProjectionStateChanged = 729,
4638    AtomMediaProjectionTargetChanged = 730,
4639    AtomExcessiveBinderProxyCountReported = 853,
4640    AtomProxyBytesTransferByFgBg = 10200,
4641    AtomMobileBytesTransferByProcState = 10204,
4642    AtomBiometricFrrNotification = 817,
4643    AtomSensitiveContentMediaProjectionSession = 830,
4644    AtomSensitiveNotificationAppProtectionSession = 831,
4645    AtomSensitiveNotificationAppProtectionApplied = 832,
4646    AtomSensitiveNotificationRedaction = 833,
4647    AtomSensitiveContentAppProtection = 835,
4648    AtomAppRestrictionStateChanged = 866,
4649    AtomBatteryUsageStatsPerUid = 10209,
4650    AtomPostgcMemorySnapshot = 924,
4651    AtomPowerSaveTempAllowlistChanged = 926,
4652    AtomAppOpAccessTracked = 931,
4653    AtomContentOrFileUriEventReported = 933,
4654    AtomDeviceIdleTempAllowlistUpdated = 940,
4655    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
4656    AtomFrameworkWakelockInfo = 10230,
4657    AtomJankFrameCountByWidgetReported = 950,
4658    AtomIntentCreatorTokenAdded = 978,
4659    AtomNotificationChannelClassification = 983,
4660    AtomCameraStatusForCompatibilityChanged = 999,
4661    AtomFederatedComputeApiCalled = 712,
4662    AtomFederatedComputeTrainingEventReported = 771,
4663    AtomExampleIteratorNextLatencyReported = 838,
4664    AtomFederatedComputeTraceEventReported = 992,
4665    AtomExpressEventReported = 528,
4666    AtomExpressHistogramSampleReported = 593,
4667    AtomExpressUidEventReported = 644,
4668    AtomExpressUidHistogramSampleReported = 658,
4669    AtomDreamSettingChanged = 705,
4670    AtomDreamSettingSnapshot = 10192,
4671    AtomDndStateChanged = 657,
4672    AtomExternalDisplayStateChanged = 806,
4673    AtomDisplayModeDirectorVoteChanged = 792,
4674    AtomDevicePolicyManagementMode = 10216,
4675    AtomDevicePolicyState = 10217,
4676    AtomDeviceLockCheckInRequestReported = 726,
4677    AtomDeviceLockProvisioningCompleteReported = 727,
4678    AtomDeviceLockKioskAppRequestReported = 728,
4679    AtomDeviceLockCheckInRetryReported = 789,
4680    AtomDeviceLockProvisionFailureReported = 790,
4681    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
4682    AtomDesktopModeUiChanged = 818,
4683    AtomDesktopModeSessionTaskUpdate = 819,
4684    AtomDesktopModeTaskSizeUpdated = 935,
4685    AtomCronetEngineCreated = 703,
4686    AtomCronetTrafficReported = 704,
4687    AtomCronetEngineBuilderInitialized = 762,
4688    AtomCronetHttpFlagsInitialized = 763,
4689    AtomCronetInitialized = 764,
4690    AtomCredentialManagerApiCalled = 585,
4691    AtomCredentialManagerInitPhaseReported = 651,
4692    AtomCredentialManagerCandidatePhaseReported = 652,
4693    AtomCredentialManagerFinalPhaseReported = 653,
4694    AtomCredentialManagerTotalReported = 667,
4695    AtomCredentialManagerFinalnouidReported = 668,
4696    AtomCredentialManagerGetReported = 669,
4697    AtomCredentialManagerAuthClickReported = 670,
4698    AtomCredentialManagerApiv2Called = 671,
4699    AtomCpuPolicy = 10199,
4700    AtomVpnConnectionStateChanged = 850,
4701    AtomVpnConnectionReported = 851,
4702    AtomIpClientRaInfoReported = 778,
4703    AtomApfSessionInfoReported = 777,
4704    AtomCoreNetworkingTerribleErrorOccurred = 979,
4705    AtomNetworkStatsRecorderFileOperated = 783,
4706    AtomDailyKeepaliveInfoReported = 650,
4707    AtomNetworkRequestStateChanged = 779,
4708    AtomTetheringActiveSessionsReported = 925,
4709    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
4710    AtomHardwareRendererEvent = 946,
4711    AtomTextureViewEvent = 947,
4712    AtomSurfaceControlEvent = 948,
4713    AtomImageDecoded = 977,
4714    AtomCertificateTransparencyLogListStateChanged = 934,
4715    AtomConscryptServiceUsed = 965,
4716    AtomCertificateTransparencyVerificationReported = 989,
4717    AtomCameraFeatureCombinationQueryEvent = 900,
4718    AtomBroadcastSent = 922,
4719    AtomBluetoothHashedDeviceNameReported = 613,
4720    AtomBluetoothL2capCocClientConnection = 614,
4721    AtomBluetoothL2capCocServerConnection = 615,
4722    AtomBluetoothLeSessionConnected = 656,
4723    AtomRestrictedBluetoothDeviceNameReported = 666,
4724    AtomBluetoothProfileConnectionAttempted = 696,
4725    AtomBluetoothContentProfileErrorReported = 781,
4726    AtomBluetoothRfcommConnectionAttempted = 782,
4727    AtomRemoteDeviceInformationWithMetricId = 862,
4728    AtomLeAppScanStateChanged = 870,
4729    AtomLeRadioScanStopped = 871,
4730    AtomLeScanResultReceived = 872,
4731    AtomLeScanAbused = 873,
4732    AtomLeAdvStateChanged = 874,
4733    AtomLeAdvErrorReported = 875,
4734    AtomA2dpSessionReported = 904,
4735    AtomBluetoothCrossLayerEventReported = 916,
4736    AtomBroadcastAudioSessionReported = 927,
4737    AtomBroadcastAudioSyncReported = 928,
4738    AtomBluetoothRfcommConnectionReportedAtClose = 982,
4739    AtomBluetoothLeConnection = 988,
4740    AtomHearingDeviceActiveEventReported = 1021,
4741    AtomBackportedFixStatusReported = 987,
4742    AtomPluginInitialized = 655,
4743    AtomCarSystemUiDataSubscriptionEventReported = 974,
4744    AtomCarSettingsDataSubscriptionEventReported = 975,
4745    AtomCarQcLibEventReported = 976,
4746    AtomCarWakeupFromSuspendReported = 852,
4747    AtomCarRecentsEventReported = 770,
4748    AtomCarCalmModeEventReported = 797,
4749    AtomAutofillUiEventReported = 603,
4750    AtomAutofillFillRequestReported = 604,
4751    AtomAutofillFillResponseReported = 605,
4752    AtomAutofillSaveEventReported = 606,
4753    AtomAutofillSessionCommitted = 607,
4754    AtomAutofillFieldClassificationEventReported = 659,
4755    AtomOdrefreshReported = 366,
4756    AtomOdsignReported = 548,
4757    AtomBackgroundDexoptJobEnded = 467,
4758    AtomPrerebootDexoptJobEnded = 883,
4759    AtomArtDatumReported = 332,
4760    AtomArtDeviceDatumReported = 550,
4761    AtomArtDatumDeltaReported = 565,
4762    AtomArtDex2oatReported = 929,
4763    AtomArtDeviceStatus = 10205,
4764    AtomAppSearchSetSchemaStatsReported = 385,
4765    AtomAppSearchSchemaMigrationStatsReported = 579,
4766    AtomAppSearchUsageSearchIntentStatsReported = 825,
4767    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
4768    AtomAppSearchAppsIndexerStatsReported = 909,
4769    AtomAppFunctionsRequestReported = 998,
4770    AtomApexInstallationRequested = 732,
4771    AtomApexInstallationStaged = 733,
4772    AtomApexInstallationEnded = 734,
4773    AtomAiWallpapersButtonPressed = 706,
4774    AtomAiWallpapersTemplateSelected = 707,
4775    AtomAiWallpapersTermSelected = 708,
4776    AtomAiWallpapersWallpaperSet = 709,
4777    AtomAiWallpapersSessionSummary = 710,
4778    AtomJsscriptengineLatencyReported = 483,
4779    AtomAdServicesApiCalled = 435,
4780    AtomAdServicesMesurementReportsUploaded = 436,
4781    AtomMobileDataDownloadFileGroupStatusReported = 490,
4782    AtomMobileDataDownloadDownloadResultReported = 502,
4783    AtomAdServicesSettingsUsageReported = 493,
4784    AtomBackgroundFetchProcessReported = 496,
4785    AtomUpdateCustomAudienceProcessReported = 497,
4786    AtomRunAdBiddingProcessReported = 498,
4787    AtomRunAdScoringProcessReported = 499,
4788    AtomRunAdSelectionProcessReported = 500,
4789    AtomRunAdBiddingPerCaProcessReported = 501,
4790    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
4791    AtomAdServicesMeasurementRegistrations = 512,
4792    AtomAdServicesGetTopicsReported = 535,
4793    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
4794    AtomAdServicesEpochComputationClassifierReported = 537,
4795    AtomAdServicesBackCompatGetTopicsReported = 598,
4796    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
4797    AtomAdServicesMeasurementDebugKeys = 640,
4798    AtomAdServicesErrorReported = 662,
4799    AtomAdServicesBackgroundJobsExecutionReported = 663,
4800    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
4801    AtomAdServicesMeasurementAttribution = 674,
4802    AtomAdServicesMeasurementJobs = 675,
4803    AtomAdServicesMeasurementWipeout = 676,
4804    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
4805    AtomAdServicesEnrollmentDataStored = 697,
4806    AtomAdServicesEnrollmentFileDownloaded = 698,
4807    AtomAdServicesEnrollmentMatched = 699,
4808    AtomAdServicesConsentMigrated = 702,
4809    AtomAdServicesEnrollmentFailed = 714,
4810    AtomAdServicesMeasurementClickVerification = 756,
4811    AtomAdServicesEncryptionKeyFetched = 765,
4812    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
4813    AtomDestinationRegisteredBeacons = 767,
4814    AtomReportInteractionApiCalled = 768,
4815    AtomInteractionReportingTableCleared = 769,
4816    AtomAppManifestConfigHelperCalled = 788,
4817    AtomAdFilteringProcessJoinCaReported = 793,
4818    AtomAdFilteringProcessAdSelectionReported = 794,
4819    AtomAdCounterHistogramUpdaterReported = 795,
4820    AtomSignatureVerification = 807,
4821    AtomKAnonImmediateSignJoinStatusReported = 808,
4822    AtomKAnonBackgroundJobStatusReported = 809,
4823    AtomKAnonInitializeStatusReported = 810,
4824    AtomKAnonSignStatusReported = 811,
4825    AtomKAnonJoinStatusReported = 812,
4826    AtomKAnonKeyAttestationStatusReported = 813,
4827    AtomGetAdSelectionDataApiCalled = 814,
4828    AtomGetAdSelectionDataBuyerInputGenerated = 815,
4829    AtomBackgroundJobSchedulingReported = 834,
4830    AtomTopicsEncryptionEpochComputationReported = 840,
4831    AtomTopicsEncryptionGetTopicsReported = 841,
4832    AtomAdservicesShellCommandCalled = 842,
4833    AtomUpdateSignalsApiCalled = 843,
4834    AtomEncodingJobRun = 844,
4835    AtomEncodingJsFetch = 845,
4836    AtomEncodingJsExecution = 846,
4837    AtomPersistAdSelectionResultCalled = 847,
4838    AtomServerAuctionKeyFetchCalled = 848,
4839    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
4840    AtomAdServicesMeasurementProcessOdpRegistration = 864,
4841    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
4842    AtomSelectAdsFromOutcomesApiCalled = 876,
4843    AtomReportImpressionApiCalled = 877,
4844    AtomAdServicesEnrollmentTransactionStats = 885,
4845    AtomAdServicesCobaltLoggerEventReported = 902,
4846    AtomAdServicesCobaltPeriodicJobEventReported = 903,
4847    AtomUpdateSignalsProcessReported = 905,
4848    AtomTopicsScheduleEpochJobSettingReported = 930,
4849    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
4850    AtomScheduledCustomAudienceUpdatePerformed = 968,
4851    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
4852    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
4853    AtomThermalStatusCalled = 772,
4854    AtomThermalHeadroomCalled = 773,
4855    AtomThermalHeadroomThresholdsCalled = 774,
4856    AtomAdpfHintSessionTidCleanup = 839,
4857    AtomThermalHeadroomThresholds = 10201,
4858    AtomAdpfSessionSnapshot = 10218,
4859    AtomAdaptiveAuthUnlockAfterLockReported = 820,
4860    AtomAccountManagerEvent = 951,
4861    AtomAccessibilityCheckResultReported = 910,
4862}
4863impl AtomId {
4864    /// String value of the enum field names used in the ProtoBuf definition.
4865    ///
4866    /// The values are not transformed in any way and thus are considered stable
4867    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4868    pub fn as_str_name(&self) -> &'static str {
4869        match self {
4870            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
4871            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
4872            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
4873            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
4874            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
4875            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
4876            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
4877            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
4878            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
4879            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
4880            Self::AtomLongPartialWakelockStateChanged => {
4881                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
4882            }
4883            Self::AtomMobileRadioPowerStateChanged => {
4884                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
4885            }
4886            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
4887            Self::AtomActivityManagerSleepStateChanged => {
4888                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
4889            }
4890            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
4891            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
4892            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
4893            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
4894            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
4895            Self::AtomBatterySaverModeStateChanged => {
4896                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
4897            }
4898            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
4899            Self::AtomDeviceIdlingModeStateChanged => {
4900                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
4901            }
4902            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
4903            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
4904            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
4905            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
4906            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
4907            Self::AtomProcessLifeCycleStateChanged => {
4908                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
4909            }
4910            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
4911            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
4912            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
4913            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
4914            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
4915            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
4916            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
4917            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
4918            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
4919            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
4920            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
4921            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
4922            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
4923            Self::AtomActivityForegroundStateChanged => {
4924                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
4925            }
4926            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
4927            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
4928            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
4929            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
4930            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
4931            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
4932            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
4933            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
4934            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
4935            Self::AtomPictureInPictureStateChanged => {
4936                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
4937            }
4938            Self::AtomWifiMulticastLockStateChanged => {
4939                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
4940            }
4941            Self::AtomAppStartMemoryStateCaptured => {
4942                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
4943            }
4944            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
4945            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
4946            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
4947            Self::AtomForegroundServiceStateChanged => {
4948                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
4949            }
4950            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
4951            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
4952            Self::AtomKeyguardBouncerStateChanged => {
4953                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
4954            }
4955            Self::AtomKeyguardBouncerPasswordEntered => {
4956                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
4957            }
4958            Self::AtomAppDied => "ATOM_APP_DIED",
4959            Self::AtomResourceConfigurationChanged => {
4960                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
4961            }
4962            Self::AtomBluetoothEnabledStateChanged => {
4963                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
4964            }
4965            Self::AtomBluetoothConnectionStateChanged => {
4966                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
4967            }
4968            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
4969            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
4970            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
4971            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
4972            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
4973            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
4974            Self::AtomMobileConnectionStateChanged => {
4975                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
4976            }
4977            Self::AtomMobileRadioTechnologyChanged => {
4978                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
4979            }
4980            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
4981            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
4982            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
4983            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
4984            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
4985            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
4986            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
4987            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
4988            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
4989            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
4990            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
4991            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
4992            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
4993            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
4994            Self::AtomSlowIo => "ATOM_SLOW_IO",
4995            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
4996            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
4997            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
4998            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
4999            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
5000            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
5001            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
5002            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
5003            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
5004            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
5005            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
5006            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
5007            Self::AtomDocsUiFileOpCopyMoveModeReported => {
5008                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
5009            }
5010            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
5011            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
5012            Self::AtomDocsUiInvalidScopedAccessRequest => {
5013                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
5014            }
5015            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
5016            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
5017            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
5018            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
5019            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
5020            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
5021            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
5022            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
5023            Self::AtomDocsUiPickerLaunchedFromReported => {
5024                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
5025            }
5026            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
5027            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
5028            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
5029            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
5030            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
5031            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
5032            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
5033            Self::AtomBluetoothLinkLayerConnectionEvent => {
5034                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
5035            }
5036            Self::AtomBluetoothAclConnectionStateChanged => {
5037                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
5038            }
5039            Self::AtomBluetoothScoConnectionStateChanged => {
5040                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
5041            }
5042            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
5043            Self::AtomAppOptimizedAfterDowngraded => {
5044                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
5045            }
5046            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
5047            Self::AtomGnssNfwNotificationReported => {
5048                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
5049            }
5050            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
5051            Self::AtomUsbPortOverheatEventReported => {
5052                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
5053            }
5054            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
5055            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
5056            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
5057            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
5058            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
5059            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
5060            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
5061            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
5062            Self::AtomBroadcastDispatchLatencyReported => {
5063                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
5064            }
5065            Self::AtomAttentionManagerServiceResultReported => {
5066                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
5067            }
5068            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
5069            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
5070            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
5071            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
5072            Self::AtomBiometricSystemHealthIssueDetected => {
5073                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
5074            }
5075            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
5076            Self::AtomScheduledJobConstraintChanged => {
5077                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
5078            }
5079            Self::AtomBluetoothActiveDeviceChanged => {
5080                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
5081            }
5082            Self::AtomBluetoothA2dpPlaybackStateChanged => {
5083                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
5084            }
5085            Self::AtomBluetoothA2dpCodecConfigChanged => {
5086                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
5087            }
5088            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
5089                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
5090            }
5091            Self::AtomBluetoothA2dpAudioUnderrunReported => {
5092                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
5093            }
5094            Self::AtomBluetoothA2dpAudioOverrunReported => {
5095                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
5096            }
5097            Self::AtomBluetoothDeviceRssiReported => {
5098                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
5099            }
5100            Self::AtomBluetoothDeviceFailedContactCounterReported => {
5101                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
5102            }
5103            Self::AtomBluetoothDeviceTxPowerLevelReported => {
5104                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
5105            }
5106            Self::AtomBluetoothHciTimeoutReported => {
5107                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
5108            }
5109            Self::AtomBluetoothQualityReportReported => {
5110                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
5111            }
5112            Self::AtomBluetoothDeviceInfoReported => {
5113                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
5114            }
5115            Self::AtomBluetoothRemoteVersionInfoReported => {
5116                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
5117            }
5118            Self::AtomBluetoothSdpAttributeReported => {
5119                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
5120            }
5121            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
5122            Self::AtomBluetoothClassicPairingEventReported => {
5123                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
5124            }
5125            Self::AtomBluetoothSmpPairingEventReported => {
5126                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
5127            }
5128            Self::AtomScreenTimeoutExtensionReported => {
5129                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
5130            }
5131            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
5132            Self::AtomPermissionGrantRequestResultReported => {
5133                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
5134            }
5135            Self::AtomBluetoothSocketConnectionStateChanged => {
5136                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
5137            }
5138            Self::AtomDeviceIdentifierAccessDenied => {
5139                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
5140            }
5141            Self::AtomBubbleDeveloperErrorReported => {
5142                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
5143            }
5144            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
5145            Self::AtomAssistGestureFeedbackReported => {
5146                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
5147            }
5148            Self::AtomAssistGestureProgressReported => {
5149                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
5150            }
5151            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
5152            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
5153            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
5154            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
5155            Self::AtomAppInstallOnExternalStorageReported => {
5156                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
5157            }
5158            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
5159            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
5160            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
5161            Self::AtomSystemServerWatchdogOccurred => {
5162                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
5163            }
5164            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
5165            Self::AtomBluetoothClassOfDeviceReported => {
5166                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
5167            }
5168            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
5169            Self::AtomThermalThrottlingSeverityStateChanged => {
5170                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
5171            }
5172            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
5173            Self::AtomMediametricsAudiopolicyReported => {
5174                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
5175            }
5176            Self::AtomMediametricsAudiorecordReported => {
5177                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
5178            }
5179            Self::AtomMediametricsAudiothreadReported => {
5180                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
5181            }
5182            Self::AtomMediametricsAudiotrackReported => {
5183                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
5184            }
5185            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
5186            Self::AtomMediametricsDrmWidevineReported => {
5187                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
5188            }
5189            Self::AtomMediametricsExtractorReported => {
5190                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
5191            }
5192            Self::AtomMediametricsMediadrmReported => {
5193                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
5194            }
5195            Self::AtomMediametricsNuplayerReported => {
5196                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
5197            }
5198            Self::AtomMediametricsRecorderReported => {
5199                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
5200            }
5201            Self::AtomMediametricsDrmmanagerReported => {
5202                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
5203            }
5204            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
5205            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
5206            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
5207            Self::AtomContentCaptureCallerMismatchReported => {
5208                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
5209            }
5210            Self::AtomContentCaptureServiceEvents => {
5211                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
5212            }
5213            Self::AtomContentCaptureSessionEvents => {
5214                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
5215            }
5216            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
5217            Self::AtomLocationManagerApiUsageReported => {
5218                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
5219            }
5220            Self::AtomReviewPermissionsFragmentResultReported => {
5221                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
5222            }
5223            Self::AtomRuntimePermissionsUpgradeResult => {
5224                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
5225            }
5226            Self::AtomGrantPermissionsActivityButtonActions => {
5227                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
5228            }
5229            Self::AtomLocationAccessCheckNotificationAction => {
5230                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
5231            }
5232            Self::AtomAppPermissionFragmentActionReported => {
5233                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
5234            }
5235            Self::AtomAppPermissionFragmentViewed => {
5236                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
5237            }
5238            Self::AtomAppPermissionsFragmentViewed => {
5239                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
5240            }
5241            Self::AtomPermissionAppsFragmentViewed => {
5242                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
5243            }
5244            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
5245            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
5246            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
5247            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
5248            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
5249            Self::AtomBackGestureReportedReported => {
5250                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
5251            }
5252            Self::AtomUpdateEngineUpdateAttemptReported => {
5253                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
5254            }
5255            Self::AtomUpdateEngineSuccessfulUpdateReported => {
5256                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
5257            }
5258            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
5259            Self::AtomAppCompatibilityChangeReported => {
5260                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
5261            }
5262            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
5263            Self::AtomVmsClientConnectionStateChanged => {
5264                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
5265            }
5266            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
5267            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
5268            Self::AtomMediaProviderPermissionRequested => {
5269                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
5270            }
5271            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
5272            Self::AtomMediaProviderIdleMaintenanceFinished => {
5273                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
5274            }
5275            Self::AtomRebootEscrowRecoveryReported => {
5276                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
5277            }
5278            Self::AtomBootTimeEventDurationReported => {
5279                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
5280            }
5281            Self::AtomBootTimeEventElapsedTimeReported => {
5282                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
5283            }
5284            Self::AtomBootTimeEventUtcTimeReported => {
5285                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
5286            }
5287            Self::AtomBootTimeEventErrorCodeReported => {
5288                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
5289            }
5290            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
5291            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
5292            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
5293            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
5294            Self::AtomIntegrityCheckResultReported => {
5295                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
5296            }
5297            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
5298            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
5299            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
5300            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
5301            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
5302            Self::AtomWifiConnectionResultReported => {
5303                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
5304            }
5305            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
5306            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
5307            Self::AtomForegroundServiceAppOpSessionEnded => {
5308                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
5309            }
5310            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
5311            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
5312            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
5313            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
5314            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
5315            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
5316            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
5317            Self::AtomUserLifecycleJourneyReported => {
5318                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
5319            }
5320            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
5321            Self::AtomAccessibilityShortcutReported => {
5322                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
5323            }
5324            Self::AtomAccessibilityServiceReported => {
5325                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
5326            }
5327            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
5328            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
5329            Self::AtomAutoRevokeNotificationClicked => {
5330                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
5331            }
5332            Self::AtomAutoRevokeFragmentAppViewed => {
5333                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
5334            }
5335            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
5336            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
5337                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
5338            }
5339            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
5340            Self::AtomAudioPowerUsageDataReported => {
5341                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
5342            }
5343            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
5344            Self::AtomMediaoutputOpSwitchReported => {
5345                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
5346            }
5347            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
5348            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
5349            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
5350            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
5351            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
5352            Self::AtomCarUserHalModifyUserRequestReported => {
5353                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
5354            }
5355            Self::AtomCarUserHalModifyUserResponseReported => {
5356                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
5357            }
5358            Self::AtomCarUserHalPostSwitchResponseReported => {
5359                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
5360            }
5361            Self::AtomCarUserHalInitialUserInfoRequestReported => {
5362                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
5363            }
5364            Self::AtomCarUserHalInitialUserInfoResponseReported => {
5365                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
5366            }
5367            Self::AtomCarUserHalUserAssociationRequestReported => {
5368                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
5369            }
5370            Self::AtomCarUserHalSetUserAssociationResponseReported => {
5371                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
5372            }
5373            Self::AtomNetworkIpProvisioningReported => {
5374                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
5375            }
5376            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
5377            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
5378            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
5379            Self::AtomMediametricsAudiorecorddeviceusageReported => {
5380                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
5381            }
5382            Self::AtomMediametricsAudiothreaddeviceusageReported => {
5383                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
5384            }
5385            Self::AtomMediametricsAudiotrackdeviceusageReported => {
5386                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
5387            }
5388            Self::AtomMediametricsAudiodeviceconnectionReported => {
5389                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
5390            }
5391            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
5392            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
5393            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
5394            Self::AtomContactsProviderStatusReported => {
5395                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
5396            }
5397            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
5398            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
5399            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
5400            Self::AtomUiInteractionFrameInfoReported => {
5401                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
5402            }
5403            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
5404            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
5405            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
5406            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
5407            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
5408            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
5409            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
5410            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
5411            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
5412            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
5413            Self::AtomMediametricsMediaparserReported => {
5414                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
5415            }
5416            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
5417            Self::AtomTextClassifierApiUsageReported => {
5418                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
5419            }
5420            Self::AtomCarWatchdogKillStatsReported => {
5421                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
5422            }
5423            Self::AtomMediametricsPlaybackReported => {
5424                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
5425            }
5426            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
5427            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
5428            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
5429            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
5430            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
5431            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
5432            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
5433            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
5434            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
5435            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
5436            Self::AtomImsServiceEntitlementUpdated => {
5437                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
5438            }
5439            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
5440            Self::AtomSimSpecificSettingsRestored => {
5441                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
5442            }
5443            Self::AtomTextClassifierDownloadReported => {
5444                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
5445            }
5446            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
5447            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
5448            Self::AtomBluetoothHalCrashReasonReported => {
5449                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
5450            }
5451            Self::AtomRebootEscrowPreparationReported => {
5452                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
5453            }
5454            Self::AtomRebootEscrowLskfCaptureReported => {
5455                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
5456            }
5457            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
5458            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
5459            Self::AtomMediametricsAaudiostreamReported => {
5460                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
5461            }
5462            Self::AtomMediaTranscodingSessionEnded => {
5463                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
5464            }
5465            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
5466            Self::AtomMagnificationModeWithImeOnReported => {
5467                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
5468            }
5469            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
5470            Self::AtomAppSearchPutDocumentStatsReported => {
5471                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
5472            }
5473            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
5474            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
5475            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
5476            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
5477            Self::AtomAuthPromptAuthenticateInvoked => {
5478                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
5479            }
5480            Self::AtomAuthManagerCanAuthenticateInvoked => {
5481                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
5482            }
5483            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
5484            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
5485            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
5486            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
5487            Self::AtomLocationTimeZoneProviderStateChanged => {
5488                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
5489            }
5490            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
5491            Self::AtomTimeoutAutoExtendedReported => {
5492                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
5493            }
5494            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
5495            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
5496            Self::AtomCarWatchdogIoOveruseStatsReported => {
5497                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
5498            }
5499            Self::AtomUserLevelHibernationStateChanged => {
5500                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
5501            }
5502            Self::AtomAppSearchInitializeStatsReported => {
5503                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
5504            }
5505            Self::AtomAppSearchQueryStatsReported => {
5506                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
5507            }
5508            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
5509            Self::AtomNetworkIpReachabilityMonitorReported => {
5510                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
5511            }
5512            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
5513            Self::AtomAnrOccurredProcessingStarted => {
5514                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
5515            }
5516            Self::AtomAppSearchRemoveStatsReported => {
5517                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
5518            }
5519            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
5520            Self::AtomPermissionUsageFragmentInteraction => {
5521                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
5522            }
5523            Self::AtomPermissionDetailsInteraction => {
5524                "ATOM_PERMISSION_DETAILS_INTERACTION"
5525            }
5526            Self::AtomPrivacySensorToggleInteraction => {
5527                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
5528            }
5529            Self::AtomPrivacyToggleDialogInteraction => {
5530                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
5531            }
5532            Self::AtomAppSearchOptimizeStatsReported => {
5533                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
5534            }
5535            Self::AtomNonA11yToolServiceWarningReport => {
5536                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
5537            }
5538            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
5539            Self::AtomSizeCompatRestartButtonEventReported => {
5540                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
5541            }
5542            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
5543            Self::AtomNetworkDnsHandshakeReported => {
5544                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
5545            }
5546            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
5547            Self::AtomBluetoothLeBatchScanReportDelay => {
5548                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
5549            }
5550            Self::AtomAccessibilityFloatingMenuUiChanged => {
5551                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
5552            }
5553            Self::AtomNeuralnetworksCompilationCompleted => {
5554                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
5555            }
5556            Self::AtomNeuralnetworksExecutionCompleted => {
5557                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
5558            }
5559            Self::AtomNeuralnetworksCompilationFailed => {
5560                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
5561            }
5562            Self::AtomNeuralnetworksExecutionFailed => {
5563                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
5564            }
5565            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
5566            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
5567            Self::AtomContextHubLoadedNanoappSnapshotReported => {
5568                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
5569            }
5570            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
5571            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
5572            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
5573            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
5574            Self::AtomUwbRangingMeasurementReceived => {
5575                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
5576            }
5577            Self::AtomTextClassifierDownloadWorkScheduled => {
5578                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
5579            }
5580            Self::AtomTextClassifierDownloadWorkCompleted => {
5581                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
5582            }
5583            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
5584            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
5585            Self::AtomNearbyDeviceScanStateChanged => {
5586                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
5587            }
5588            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
5589            Self::AtomMediametricsAudiotrackstatusReported => {
5590                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
5591            }
5592            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
5593            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
5594                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
5595            }
5596            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
5597            Self::AtomDisplayHbmBrightnessChanged => {
5598                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
5599            }
5600            Self::AtomPersistentUriPermissionsFlushed => {
5601                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
5602            }
5603            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
5604                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
5605            }
5606            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
5607            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
5608            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
5609            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
5610            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
5611            Self::AtomMediametricsAudiorecordstatusReported => {
5612                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
5613            }
5614            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
5615            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
5616            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
5617            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
5618            Self::AtomHotwordDetectorCreateRequested => {
5619                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
5620            }
5621            Self::AtomHotwordDetectionServiceInitResultReported => {
5622                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
5623            }
5624            Self::AtomHotwordDetectionServiceRestarted => {
5625                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
5626            }
5627            Self::AtomHotwordDetectorKeyphraseTriggered => {
5628                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
5629            }
5630            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
5631            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
5632                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
5633            }
5634            Self::AtomContactsIndexerUpdateStatsReported => {
5635                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
5636            }
5637            Self::AtomAppBackgroundRestrictionsInfo => {
5638                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
5639            }
5640            Self::AtomMmsSmsProviderGetThreadIdFailed => {
5641                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
5642            }
5643            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
5644                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
5645            }
5646            Self::AtomPermissionReminderNotificationInteracted => {
5647                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
5648            }
5649            Self::AtomRecentPermissionDecisionsInteracted => {
5650                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
5651            }
5652            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
5653            Self::AtomLeAudioConnectionSessionReported => {
5654                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
5655            }
5656            Self::AtomLeAudioBroadcastSessionReported => {
5657                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
5658            }
5659            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
5660            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
5661            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
5662            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
5663                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
5664            }
5665            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
5666                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
5667            }
5668            Self::AtomAccessibilityTextReadingOptionsChanged => {
5669                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
5670            }
5671            Self::AtomWifiSetupFailureCrashReported => {
5672                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
5673            }
5674            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
5675            Self::AtomIsolatedCompilationScheduled => {
5676                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
5677            }
5678            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
5679            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
5680                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
5681            }
5682            Self::AtomSystemServerPreWatchdogOccurred => {
5683                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
5684            }
5685            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
5686            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
5687            Self::AtomRemoteKeyProvisioningAttempt => {
5688                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
5689            }
5690            Self::AtomRemoteKeyProvisioningNetworkInfo => {
5691                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
5692            }
5693            Self::AtomRemoteKeyProvisioningTiming => {
5694                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
5695            }
5696            Self::AtomMediaoutputOpInteractionReport => {
5697                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
5698            }
5699            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
5700            Self::AtomAutofillPresentationEventReported => {
5701                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
5702            }
5703            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
5704            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
5705            Self::AtomSafetyCenterSystemEventReported => {
5706                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
5707            }
5708            Self::AtomSafetyCenterInteractionReported => {
5709                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
5710            }
5711            Self::AtomSettingsProviderSettingChanged => {
5712                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
5713            }
5714            Self::AtomBroadcastDeliveryEventReported => {
5715                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
5716            }
5717            Self::AtomServiceRequestEventReported => {
5718                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
5719            }
5720            Self::AtomProviderAcquisitionEventReported => {
5721                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
5722            }
5723            Self::AtomBluetoothDeviceNameReported => {
5724                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
5725            }
5726            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
5727            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
5728            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
5729            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
5730            Self::AtomPrivacySignalNotificationInteraction => {
5731                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
5732            }
5733            Self::AtomPrivacySignalIssueCardInteraction => {
5734                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
5735            }
5736            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
5737            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
5738            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
5739            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
5740            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
5741            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
5742            Self::AtomNetworkDnsServerSupportReported => {
5743                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
5744            }
5745            Self::AtomVmBooted => "ATOM_VM_BOOTED",
5746            Self::AtomVmExited => "ATOM_VM_EXITED",
5747            Self::AtomAmbientBrightnessStatsReported => {
5748                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
5749            }
5750            Self::AtomMediametricsSpatializercapabilitiesReported => {
5751                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
5752            }
5753            Self::AtomMediametricsSpatializerdeviceenabledReported => {
5754                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
5755            }
5756            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
5757                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
5758            }
5759            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
5760                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
5761            }
5762            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
5763            Self::AtomDeviceWideJobConstraintChanged => {
5764                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
5765            }
5766            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
5767            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
5768            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
5769            Self::AtomSystemDefaultNetworkChanged => {
5770                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
5771            }
5772            Self::AtomIwlanSetupDataCallResultReported => {
5773                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
5774            }
5775            Self::AtomIwlanPdnDisconnectedReasonReported => {
5776                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
5777            }
5778            Self::AtomAirplaneModeSessionReported => {
5779                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
5780            }
5781            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
5782            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
5783            Self::AtomPackageInstallationSessionReported => {
5784                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
5785            }
5786            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
5787            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
5788            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
5789            Self::AtomBluetoothDisconnectionReasonReported => {
5790                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
5791            }
5792            Self::AtomBluetoothLocalVersionsReported => {
5793                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
5794            }
5795            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
5796                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
5797            }
5798            Self::AtomBluetoothLocalSupportedFeaturesReported => {
5799                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
5800            }
5801            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
5802            Self::AtomBrightnessConfigurationUpdated => {
5803                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
5804            }
5805            Self::AtomWearMediaOutputSwitcherLaunched => {
5806                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
5807            }
5808            Self::AtomWearMediaOutputSwitcherFinished => {
5809                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
5810            }
5811            Self::AtomWearMediaOutputSwitcherConnectionReported => {
5812                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
5813            }
5814            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
5815                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
5816            }
5817            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
5818                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
5819            }
5820            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
5821                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
5822            }
5823            Self::AtomPackageManagerSnapshotReported => {
5824                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
5825            }
5826            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
5827                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
5828            }
5829            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
5830                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
5831            }
5832            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
5833            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
5834                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
5835            }
5836            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
5837            Self::AtomWsWatchFaceFavoriteActionReported => {
5838                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
5839            }
5840            Self::AtomWsWatchFaceSetActionReported => {
5841                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
5842            }
5843            Self::AtomPackageUninstallationReported => {
5844                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
5845            }
5846            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
5847            Self::AtomGameModeConfigurationChanged => {
5848                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
5849            }
5850            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
5851            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
5852            Self::AtomNetworkSliceDailyDataUsageReported => {
5853                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
5854            }
5855            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
5856            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
5857            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
5858            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
5859            Self::AtomGetTypeAccessedWithoutPermission => {
5860                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
5861            }
5862            Self::AtomMobileBundledAppInfoGathered => {
5863                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
5864            }
5865            Self::AtomWsWatchFaceComplicationSetChanged => {
5866                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
5867            }
5868            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
5869            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
5870            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
5871            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
5872            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
5873            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
5874            Self::AtomPerformanceHintSessionReported => {
5875                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
5876            }
5877            Self::AtomMediametricsMidiDeviceCloseReported => {
5878                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
5879            }
5880            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
5881            Self::AtomHotwordAudioEgressEventReported => {
5882                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
5883            }
5884            Self::AtomLocationEnabledStateChanged => {
5885                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
5886            }
5887            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
5888            Self::AtomUsbComplianceWarningsReported => {
5889                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
5890            }
5891            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
5892            Self::AtomMediaProviderVolumeRecoveryReported => {
5893                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
5894            }
5895            Self::AtomBiometricPropertiesCollected => {
5896                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
5897            }
5898            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
5899            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
5900            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
5901            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
5902            Self::AtomDeviceLogAccessEventReported => {
5903                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
5904            }
5905            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
5906            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
5907            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
5908            Self::AtomNetworkValidationFailureStatsDailyReported => {
5909                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
5910            }
5911            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
5912            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
5913            Self::AtomWsNotificationBridgemodeUpdated => {
5914                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
5915            }
5916            Self::AtomWsNotificationDismissalActioned => {
5917                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
5918            }
5919            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
5920            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
5921            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
5922            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
5923            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
5924            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
5925            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
5926            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
5927            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
5928            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
5929            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
5930            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
5931            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
5932            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
5933            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
5934            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
5935            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
5936            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
5937            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
5938            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
5939            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
5940            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
5941            Self::AtomTemperature => "ATOM_TEMPERATURE",
5942            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
5943            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
5944            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
5945            Self::AtomDiskStats => "ATOM_DISK_STATS",
5946            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
5947            Self::AtomAppSize => "ATOM_APP_SIZE",
5948            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
5949            Self::AtomProcStats => "ATOM_PROC_STATS",
5950            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
5951            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
5952            Self::AtomDiskIo => "ATOM_DISK_IO",
5953            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
5954            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
5955            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
5956            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
5957            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
5958            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
5959            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
5960            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
5961            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
5962            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
5963            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
5964            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
5965            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
5966            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
5967            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
5968            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
5969            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
5970            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
5971            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
5972            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
5973            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
5974            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
5975            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
5976            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
5977            Self::AtomAppOps => "ATOM_APP_OPS",
5978            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
5979            Self::AtomSurfaceflingerStatsGlobalInfo => {
5980                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
5981            }
5982            Self::AtomSurfaceflingerStatsLayerInfo => {
5983                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
5984            }
5985            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
5986            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
5987            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
5988            Self::AtomDangerousPermissionStateSampled => {
5989                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
5990            }
5991            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
5992            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
5993            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
5994            Self::AtomPackageNotificationPreferences => {
5995                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
5996            }
5997            Self::AtomPackageNotificationChannelPreferences => {
5998                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
5999            }
6000            Self::AtomPackageNotificationChannelGroupPreferences => {
6001                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
6002            }
6003            Self::AtomGnssStats => "ATOM_GNSS_STATS",
6004            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
6005            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
6006            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
6007            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
6008            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
6009            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
6010            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
6011            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
6012            Self::AtomBytesTransferByTagAndMetered => {
6013                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
6014            }
6015            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
6016            Self::AtomGeneralExternalStorageAccessStats => {
6017                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
6018            }
6019            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
6020            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
6021            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
6022            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
6023            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
6024            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
6025            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
6026            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
6027            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
6028            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
6029            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
6030            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
6031            Self::AtomCpuCyclesPerThreadGroupCluster => {
6032                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
6033            }
6034            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
6035            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
6036            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
6037            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
6038            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
6039            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
6040            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
6041            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
6042            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
6043            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
6044            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
6045            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
6046            Self::AtomBatteryUsageStatsBeforeReset => {
6047                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
6048            }
6049            Self::AtomBatteryUsageStatsSinceReset => {
6050                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
6051            }
6052            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
6053                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
6054            }
6055            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
6056            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
6057            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
6058            Self::AtomVmstat => "ATOM_VMSTAT",
6059            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
6060                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
6061            }
6062            Self::AtomKeystore2KeyCreationWithAuthInfo => {
6063                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
6064            }
6065            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
6066                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
6067            }
6068            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
6069            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
6070                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
6071            }
6072            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
6073                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
6074            }
6075            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
6076            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
6077            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
6078            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
6079            Self::AtomAccessibilityFloatingMenuStats => {
6080                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
6081            }
6082            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
6083            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
6084            Self::AtomCarWatchdogSystemIoUsageSummary => {
6085                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
6086            }
6087            Self::AtomCarWatchdogUidIoUsageSummary => {
6088                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
6089            }
6090            Self::AtomImsRegistrationFeatureTagStats => {
6091                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
6092            }
6093            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
6094            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
6095            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
6096            Self::AtomSipTransportFeatureTagStats => {
6097                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
6098            }
6099            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
6100            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
6101            Self::AtomImsDedicatedBearerListenerEvent => {
6102                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
6103            }
6104            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
6105            Self::AtomImsRegistrationServiceDescStats => {
6106                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
6107            }
6108            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
6109            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
6110            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
6111            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
6112            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
6113            Self::AtomPersistentUriPermissionsAmountPerPackage => {
6114                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
6115            }
6116            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
6117            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
6118            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
6119            Self::AtomUserInfo => "ATOM_USER_INFO",
6120            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
6121            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
6122            Self::AtomRemoteKeyProvisioningErrorCounts => {
6123                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
6124            }
6125            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
6126            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
6127            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
6128            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
6129            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
6130            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
6131            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
6132            Self::AtomNetworkSelectionRematchReasonsInfo => {
6133                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
6134            }
6135            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
6136            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
6137            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
6138            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
6139            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
6140            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
6141                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
6142            }
6143            Self::AtomProcessState => "ATOM_PROCESS_STATE",
6144            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
6145            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
6146            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
6147            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
6148            Self::AtomWsFavouriteWatchFaceListSnapshot => {
6149                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
6150            }
6151            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
6152            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
6153            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
6154            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
6155            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
6156            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
6157            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
6158            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
6159            Self::AtomWifiAwareResourceUsingChanged => {
6160                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
6161            }
6162            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
6163            Self::AtomWifiLocalOnlyRequestReceived => {
6164                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
6165            }
6166            Self::AtomWifiLocalOnlyRequestScanTriggered => {
6167                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
6168            }
6169            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
6170            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
6171            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
6172            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
6173            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
6174            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
6175            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
6176            Self::AtomScorerPredictionResultReported => {
6177                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
6178            }
6179            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
6180            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
6181            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
6182            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
6183            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
6184            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
6185            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
6186            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
6187            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
6188            Self::AtomWsIncomingCallActionReported => {
6189                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
6190            }
6191            Self::AtomWsCallDisconnectionReported => {
6192                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
6193            }
6194            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
6195            Self::AtomWsCallUserExperienceLatencyReported => {
6196                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
6197            }
6198            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
6199            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
6200            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
6201                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
6202            }
6203            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
6204                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
6205            }
6206            Self::AtomWsComplicationsImpactedNotificationEventReported => {
6207                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
6208            }
6209            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
6210            Self::AtomWsNotificationManagedDismissalSync => {
6211                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
6212            }
6213            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
6214            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
6215            Self::AtomWsFavoriteWatchFaceSnapshot => {
6216                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
6217            }
6218            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
6219                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
6220            }
6221            Self::AtomWsWatchFaceCustomizationSnapshot => {
6222                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
6223            }
6224            Self::AtomWearAdaptiveSuspendStatsReported => {
6225                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
6226            }
6227            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
6228                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
6229            }
6230            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
6231                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
6232            }
6233            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
6234            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
6235            Self::AtomWearTimeSyncAttemptCompleted => {
6236                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
6237            }
6238            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
6239            Self::AtomWearSetupWizardDeviceStatusReported => {
6240                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
6241            }
6242            Self::AtomWearSetupWizardPairingCompleted => {
6243                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
6244            }
6245            Self::AtomWearSetupWizardConnectionEstablished => {
6246                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
6247            }
6248            Self::AtomWearSetupWizardCheckinCompleted => {
6249                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
6250            }
6251            Self::AtomWearSetupWizardCompanionTimeReported => {
6252                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
6253            }
6254            Self::AtomWearSetupWizardStatusReported => {
6255                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
6256            }
6257            Self::AtomWearSetupWizardHeartbeatReported => {
6258                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
6259            }
6260            Self::AtomWearSetupWizardFrpTriggered => {
6261                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
6262            }
6263            Self::AtomWearSetupWizardSystemUpdateTriggered => {
6264                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
6265            }
6266            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
6267                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
6268            }
6269            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
6270            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
6271            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
6272            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
6273            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
6274            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
6275            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
6276            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
6277            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
6278            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
6279            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
6280            Self::AtomIgnoredInflationFailuresReported => {
6281                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
6282            }
6283            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
6284            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
6285            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
6286            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
6287            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
6288            Self::AtomMediaControlApiUsageReported => {
6289                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
6290            }
6291            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
6292            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
6293                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
6294            }
6295            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
6296                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
6297            }
6298            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
6299                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
6300            }
6301            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
6302            Self::AtomSysproxyBluetoothBytesTransfer => {
6303                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
6304            }
6305            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
6306            Self::AtomWearCompanionConnectionState => {
6307                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
6308            }
6309            Self::AtomSysproxyServiceStateUpdated => {
6310                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
6311            }
6312            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
6313            Self::AtomTestUprobestatsAtomReported => {
6314                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
6315            }
6316            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
6317            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
6318            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
6319            Self::AtomThreadnetworkTelemetryDataReported => {
6320                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
6321            }
6322            Self::AtomThreadnetworkTopoEntryRepeated => {
6323                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
6324            }
6325            Self::AtomThreadnetworkDeviceInfoReported => {
6326                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
6327            }
6328            Self::AtomCellularRadioPowerStateChanged => {
6329                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
6330            }
6331            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
6332            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
6333            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
6334            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
6335            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
6336            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
6337            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
6338            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
6339            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
6340            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
6341            Self::AtomSatelliteSosMessageRecommender => {
6342                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
6343            }
6344            Self::AtomCarrierRoamingSatelliteSession => {
6345                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
6346            }
6347            Self::AtomCarrierRoamingSatelliteControllerStats => {
6348                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
6349            }
6350            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
6351            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
6352            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
6353            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
6354            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
6355            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
6356            Self::AtomQnsFallbackRestrictionChanged => {
6357                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
6358            }
6359            Self::AtomQnsRatPreferenceMismatchInfo => {
6360                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
6361            }
6362            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
6363            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
6364            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
6365                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
6366            }
6367            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
6368            Self::AtomCallStats => "ATOM_CALL_STATS",
6369            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
6370            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
6371            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
6372            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
6373            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
6374            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
6375            Self::AtomDisplaySwitchLatencyTracked => {
6376                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
6377            }
6378            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
6379            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
6380            Self::AtomCommunalHubWidgetEventReported => {
6381                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
6382            }
6383            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
6384            Self::AtomContextualEducationTriggered => {
6385                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
6386            }
6387            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
6388            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
6389            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
6390            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
6391            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
6392            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
6393            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
6394            Self::AtomSandboxActivityEventOccurred => {
6395                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
6396            }
6397            Self::AtomSdkSandboxRestrictedAccessInSession => {
6398                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
6399            }
6400            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
6401            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
6402            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
6403            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
6404            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
6405            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
6406            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
6407            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
6408            Self::AtomMediaProviderDatabaseRollbackReported => {
6409                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
6410            }
6411            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
6412            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
6413            Self::AtomScreenTimeoutOverrideReported => {
6414                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
6415            }
6416            Self::AtomScreenInteractiveSessionReported => {
6417                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
6418            }
6419            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
6420            Self::AtomAtom9999 => "ATOM_ATOM_9999",
6421            Self::AtomAtom99999 => "ATOM_ATOM_99999",
6422            Self::AtomPhotopickerSessionInfoReported => {
6423                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
6424            }
6425            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
6426            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
6427            Self::AtomPhotopickerMediaItemStatusReported => {
6428                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
6429            }
6430            Self::AtomPhotopickerPreviewInfoLogged => {
6431                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
6432            }
6433            Self::AtomPhotopickerMenuInteractionLogged => {
6434                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
6435            }
6436            Self::AtomPhotopickerBannerInteractionLogged => {
6437                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
6438            }
6439            Self::AtomPhotopickerMediaLibraryInfoLogged => {
6440                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
6441            }
6442            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
6443            Self::AtomPhotopickerMediaGridSyncInfoReported => {
6444                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
6445            }
6446            Self::AtomPhotopickerAlbumSyncInfoReported => {
6447                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
6448            }
6449            Self::AtomPhotopickerSearchInfoReported => {
6450                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
6451            }
6452            Self::AtomSearchDataExtractionDetailsReported => {
6453                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
6454            }
6455            Self::AtomEmbeddedPhotopickerInfoReported => {
6456                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
6457            }
6458            Self::AtomPermissionRationaleDialogViewed => {
6459                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
6460            }
6461            Self::AtomPermissionRationaleDialogActionReported => {
6462                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
6463            }
6464            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
6465                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
6466            }
6467            Self::AtomAppDataSharingUpdatesFragmentViewed => {
6468                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
6469            }
6470            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
6471                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
6472            }
6473            Self::AtomEnhancedConfirmationDialogResultReported => {
6474                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
6475            }
6476            Self::AtomEnhancedConfirmationRestrictionCleared => {
6477                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
6478            }
6479            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
6480            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
6481            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
6482            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
6483            Self::AtomComponentStateChangedReported => {
6484                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
6485            }
6486            Self::AtomOndevicepersonalizationApiCalled => {
6487                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
6488            }
6489            Self::AtomOndevicepersonalizationTraceEvent => {
6490                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
6491            }
6492            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
6493            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
6494            Self::AtomNfcPollingLoopNotificationReported => {
6495                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
6496            }
6497            Self::AtomNfcProprietaryCapabilitiesReported => {
6498                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
6499            }
6500            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
6501            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
6502            Self::AtomMicroxrDeviceBootCompleteReported => {
6503                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
6504            }
6505            Self::AtomMteState => "ATOM_MTE_STATE",
6506            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
6507            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
6508            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
6509            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
6510            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
6511            Self::AtomMediaCodecReclaimRequestCompleted => {
6512                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
6513            }
6514            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
6515            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
6516            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
6517            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
6518            Self::AtomChreSignificantMotionStateChanged => {
6519                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
6520            }
6521            Self::AtomPopulationDensityProviderLoadingReported => {
6522                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
6523            }
6524            Self::AtomDensityBasedCoarseLocationsUsageReported => {
6525                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
6526            }
6527            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
6528                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
6529            }
6530            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
6531            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
6532            Self::AtomKeyboardSystemsEventReported => {
6533                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
6534            }
6535            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
6536            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
6537            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
6538            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
6539            Self::AtomIkeLivenessCheckSessionValidated => {
6540                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
6541            }
6542            Self::AtomNegotiatedSecurityAssociation => {
6543                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
6544            }
6545            Self::AtomHotwordEgressSizeAtomReported => {
6546                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
6547            }
6548            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
6549            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
6550            Self::AtomHealthConnectAppOpenedReported => {
6551                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
6552            }
6553            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
6554            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
6555            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
6556            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
6557            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
6558            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
6559            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
6560            Self::AtomHealthConnectExportImportStatsReported => {
6561                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
6562            }
6563            Self::AtomHealthConnectPermissionStats => {
6564                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
6565            }
6566            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
6567            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
6568            Self::AtomHealthConnectPhrStorageStats => {
6569                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
6570            }
6571            Self::AtomHealthConnectRestrictedEcosystemStats => {
6572                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
6573            }
6574            Self::AtomHealthConnectEcosystemStats => {
6575                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
6576            }
6577            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
6578            Self::AtomHdmiSoundbarModeStatusReported => {
6579                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
6580            }
6581            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
6582                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
6583            }
6584            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
6585            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
6586            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
6587            Self::AtomApplicationGrammaticalInflectionChanged => {
6588                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
6589            }
6590            Self::AtomSystemGrammaticalInflectionChanged => {
6591                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
6592            }
6593            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
6594            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
6595            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
6596            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
6597            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
6598            Self::AtomStylusPredictionMetricsReported => {
6599                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
6600            }
6601            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
6602            Self::AtomMediaProjectionStateChanged => {
6603                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
6604            }
6605            Self::AtomMediaProjectionTargetChanged => {
6606                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
6607            }
6608            Self::AtomExcessiveBinderProxyCountReported => {
6609                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
6610            }
6611            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
6612            Self::AtomMobileBytesTransferByProcState => {
6613                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
6614            }
6615            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
6616            Self::AtomSensitiveContentMediaProjectionSession => {
6617                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
6618            }
6619            Self::AtomSensitiveNotificationAppProtectionSession => {
6620                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
6621            }
6622            Self::AtomSensitiveNotificationAppProtectionApplied => {
6623                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
6624            }
6625            Self::AtomSensitiveNotificationRedaction => {
6626                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
6627            }
6628            Self::AtomSensitiveContentAppProtection => {
6629                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
6630            }
6631            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
6632            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
6633            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
6634            Self::AtomPowerSaveTempAllowlistChanged => {
6635                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
6636            }
6637            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
6638            Self::AtomContentOrFileUriEventReported => {
6639                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
6640            }
6641            Self::AtomDeviceIdleTempAllowlistUpdated => {
6642                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
6643            }
6644            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
6645                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
6646            }
6647            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
6648            Self::AtomJankFrameCountByWidgetReported => {
6649                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
6650            }
6651            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
6652            Self::AtomNotificationChannelClassification => {
6653                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
6654            }
6655            Self::AtomCameraStatusForCompatibilityChanged => {
6656                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
6657            }
6658            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
6659            Self::AtomFederatedComputeTrainingEventReported => {
6660                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
6661            }
6662            Self::AtomExampleIteratorNextLatencyReported => {
6663                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
6664            }
6665            Self::AtomFederatedComputeTraceEventReported => {
6666                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
6667            }
6668            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
6669            Self::AtomExpressHistogramSampleReported => {
6670                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
6671            }
6672            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
6673            Self::AtomExpressUidHistogramSampleReported => {
6674                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
6675            }
6676            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
6677            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
6678            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
6679            Self::AtomExternalDisplayStateChanged => {
6680                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
6681            }
6682            Self::AtomDisplayModeDirectorVoteChanged => {
6683                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
6684            }
6685            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
6686            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
6687            Self::AtomDeviceLockCheckInRequestReported => {
6688                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
6689            }
6690            Self::AtomDeviceLockProvisioningCompleteReported => {
6691                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
6692            }
6693            Self::AtomDeviceLockKioskAppRequestReported => {
6694                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
6695            }
6696            Self::AtomDeviceLockCheckInRetryReported => {
6697                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
6698            }
6699            Self::AtomDeviceLockProvisionFailureReported => {
6700                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
6701            }
6702            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
6703                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
6704            }
6705            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
6706            Self::AtomDesktopModeSessionTaskUpdate => {
6707                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
6708            }
6709            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
6710            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
6711            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
6712            Self::AtomCronetEngineBuilderInitialized => {
6713                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
6714            }
6715            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
6716            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
6717            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
6718            Self::AtomCredentialManagerInitPhaseReported => {
6719                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
6720            }
6721            Self::AtomCredentialManagerCandidatePhaseReported => {
6722                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
6723            }
6724            Self::AtomCredentialManagerFinalPhaseReported => {
6725                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
6726            }
6727            Self::AtomCredentialManagerTotalReported => {
6728                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
6729            }
6730            Self::AtomCredentialManagerFinalnouidReported => {
6731                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
6732            }
6733            Self::AtomCredentialManagerGetReported => {
6734                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
6735            }
6736            Self::AtomCredentialManagerAuthClickReported => {
6737                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
6738            }
6739            Self::AtomCredentialManagerApiv2Called => {
6740                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
6741            }
6742            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
6743            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
6744            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
6745            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
6746            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
6747            Self::AtomCoreNetworkingTerribleErrorOccurred => {
6748                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
6749            }
6750            Self::AtomNetworkStatsRecorderFileOperated => {
6751                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
6752            }
6753            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
6754            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
6755            Self::AtomTetheringActiveSessionsReported => {
6756                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
6757            }
6758            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
6759                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
6760            }
6761            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
6762            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
6763            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
6764            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
6765            Self::AtomCertificateTransparencyLogListStateChanged => {
6766                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
6767            }
6768            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
6769            Self::AtomCertificateTransparencyVerificationReported => {
6770                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
6771            }
6772            Self::AtomCameraFeatureCombinationQueryEvent => {
6773                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
6774            }
6775            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
6776            Self::AtomBluetoothHashedDeviceNameReported => {
6777                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
6778            }
6779            Self::AtomBluetoothL2capCocClientConnection => {
6780                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
6781            }
6782            Self::AtomBluetoothL2capCocServerConnection => {
6783                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
6784            }
6785            Self::AtomBluetoothLeSessionConnected => {
6786                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
6787            }
6788            Self::AtomRestrictedBluetoothDeviceNameReported => {
6789                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
6790            }
6791            Self::AtomBluetoothProfileConnectionAttempted => {
6792                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
6793            }
6794            Self::AtomBluetoothContentProfileErrorReported => {
6795                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
6796            }
6797            Self::AtomBluetoothRfcommConnectionAttempted => {
6798                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
6799            }
6800            Self::AtomRemoteDeviceInformationWithMetricId => {
6801                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
6802            }
6803            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
6804            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
6805            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
6806            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
6807            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
6808            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
6809            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
6810            Self::AtomBluetoothCrossLayerEventReported => {
6811                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
6812            }
6813            Self::AtomBroadcastAudioSessionReported => {
6814                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
6815            }
6816            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
6817            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
6818                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
6819            }
6820            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
6821            Self::AtomHearingDeviceActiveEventReported => {
6822                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
6823            }
6824            Self::AtomBackportedFixStatusReported => {
6825                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
6826            }
6827            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
6828            Self::AtomCarSystemUiDataSubscriptionEventReported => {
6829                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
6830            }
6831            Self::AtomCarSettingsDataSubscriptionEventReported => {
6832                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
6833            }
6834            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
6835            Self::AtomCarWakeupFromSuspendReported => {
6836                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
6837            }
6838            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
6839            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
6840            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
6841            Self::AtomAutofillFillRequestReported => {
6842                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
6843            }
6844            Self::AtomAutofillFillResponseReported => {
6845                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
6846            }
6847            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
6848            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
6849            Self::AtomAutofillFieldClassificationEventReported => {
6850                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
6851            }
6852            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
6853            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
6854            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
6855            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
6856            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
6857            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
6858            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
6859            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
6860            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
6861            Self::AtomAppSearchSetSchemaStatsReported => {
6862                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
6863            }
6864            Self::AtomAppSearchSchemaMigrationStatsReported => {
6865                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
6866            }
6867            Self::AtomAppSearchUsageSearchIntentStatsReported => {
6868                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
6869            }
6870            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
6871                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
6872            }
6873            Self::AtomAppSearchAppsIndexerStatsReported => {
6874                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
6875            }
6876            Self::AtomAppFunctionsRequestReported => {
6877                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
6878            }
6879            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
6880            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
6881            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
6882            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
6883            Self::AtomAiWallpapersTemplateSelected => {
6884                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
6885            }
6886            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
6887            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
6888            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
6889            Self::AtomJsscriptengineLatencyReported => {
6890                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
6891            }
6892            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
6893            Self::AtomAdServicesMesurementReportsUploaded => {
6894                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
6895            }
6896            Self::AtomMobileDataDownloadFileGroupStatusReported => {
6897                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
6898            }
6899            Self::AtomMobileDataDownloadDownloadResultReported => {
6900                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
6901            }
6902            Self::AtomAdServicesSettingsUsageReported => {
6903                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
6904            }
6905            Self::AtomBackgroundFetchProcessReported => {
6906                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
6907            }
6908            Self::AtomUpdateCustomAudienceProcessReported => {
6909                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
6910            }
6911            Self::AtomRunAdBiddingProcessReported => {
6912                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
6913            }
6914            Self::AtomRunAdScoringProcessReported => {
6915                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
6916            }
6917            Self::AtomRunAdSelectionProcessReported => {
6918                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
6919            }
6920            Self::AtomRunAdBiddingPerCaProcessReported => {
6921                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
6922            }
6923            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
6924                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
6925            }
6926            Self::AtomAdServicesMeasurementRegistrations => {
6927                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
6928            }
6929            Self::AtomAdServicesGetTopicsReported => {
6930                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
6931            }
6932            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
6933                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
6934            }
6935            Self::AtomAdServicesEpochComputationClassifierReported => {
6936                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6937            }
6938            Self::AtomAdServicesBackCompatGetTopicsReported => {
6939                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
6940            }
6941            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
6942                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6943            }
6944            Self::AtomAdServicesMeasurementDebugKeys => {
6945                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
6946            }
6947            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
6948            Self::AtomAdServicesBackgroundJobsExecutionReported => {
6949                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
6950            }
6951            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
6952                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
6953            }
6954            Self::AtomAdServicesMeasurementAttribution => {
6955                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
6956            }
6957            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
6958            Self::AtomAdServicesMeasurementWipeout => {
6959                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
6960            }
6961            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
6962                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
6963            }
6964            Self::AtomAdServicesEnrollmentDataStored => {
6965                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
6966            }
6967            Self::AtomAdServicesEnrollmentFileDownloaded => {
6968                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
6969            }
6970            Self::AtomAdServicesEnrollmentMatched => {
6971                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
6972            }
6973            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
6974            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
6975            Self::AtomAdServicesMeasurementClickVerification => {
6976                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
6977            }
6978            Self::AtomAdServicesEncryptionKeyFetched => {
6979                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
6980            }
6981            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
6982                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
6983            }
6984            Self::AtomDestinationRegisteredBeacons => {
6985                "ATOM_DESTINATION_REGISTERED_BEACONS"
6986            }
6987            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
6988            Self::AtomInteractionReportingTableCleared => {
6989                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
6990            }
6991            Self::AtomAppManifestConfigHelperCalled => {
6992                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
6993            }
6994            Self::AtomAdFilteringProcessJoinCaReported => {
6995                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
6996            }
6997            Self::AtomAdFilteringProcessAdSelectionReported => {
6998                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
6999            }
7000            Self::AtomAdCounterHistogramUpdaterReported => {
7001                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
7002            }
7003            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
7004            Self::AtomKAnonImmediateSignJoinStatusReported => {
7005                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
7006            }
7007            Self::AtomKAnonBackgroundJobStatusReported => {
7008                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
7009            }
7010            Self::AtomKAnonInitializeStatusReported => {
7011                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
7012            }
7013            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
7014            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
7015            Self::AtomKAnonKeyAttestationStatusReported => {
7016                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
7017            }
7018            Self::AtomGetAdSelectionDataApiCalled => {
7019                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
7020            }
7021            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
7022                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
7023            }
7024            Self::AtomBackgroundJobSchedulingReported => {
7025                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
7026            }
7027            Self::AtomTopicsEncryptionEpochComputationReported => {
7028                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
7029            }
7030            Self::AtomTopicsEncryptionGetTopicsReported => {
7031                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
7032            }
7033            Self::AtomAdservicesShellCommandCalled => {
7034                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
7035            }
7036            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
7037            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
7038            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
7039            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
7040            Self::AtomPersistAdSelectionResultCalled => {
7041                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
7042            }
7043            Self::AtomServerAuctionKeyFetchCalled => {
7044                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
7045            }
7046            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
7047                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
7048            }
7049            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
7050                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
7051            }
7052            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
7053                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
7054            }
7055            Self::AtomSelectAdsFromOutcomesApiCalled => {
7056                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
7057            }
7058            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
7059            Self::AtomAdServicesEnrollmentTransactionStats => {
7060                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
7061            }
7062            Self::AtomAdServicesCobaltLoggerEventReported => {
7063                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
7064            }
7065            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
7066                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
7067            }
7068            Self::AtomUpdateSignalsProcessReported => {
7069                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
7070            }
7071            Self::AtomTopicsScheduleEpochJobSettingReported => {
7072                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
7073            }
7074            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
7075                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
7076            }
7077            Self::AtomScheduledCustomAudienceUpdatePerformed => {
7078                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
7079            }
7080            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
7081                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
7082            }
7083            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
7084                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
7085            }
7086            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
7087            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
7088            Self::AtomThermalHeadroomThresholdsCalled => {
7089                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
7090            }
7091            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
7092            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
7093            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
7094            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
7095                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
7096            }
7097            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
7098            Self::AtomAccessibilityCheckResultReported => {
7099                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
7100            }
7101        }
7102    }
7103    /// Creates an enum from field names used in the ProtoBuf definition.
7104    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7105        match value {
7106            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
7107            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
7108            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
7109            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
7110            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
7111            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
7112            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
7113            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
7114                Some(Self::AtomScheduledJobStateChanged)
7115            }
7116            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
7117            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
7118            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
7119                Some(Self::AtomLongPartialWakelockStateChanged)
7120            }
7121            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
7122                Some(Self::AtomMobileRadioPowerStateChanged)
7123            }
7124            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
7125                Some(Self::AtomWifiRadioPowerStateChanged)
7126            }
7127            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
7128                Some(Self::AtomActivityManagerSleepStateChanged)
7129            }
7130            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
7131                Some(Self::AtomMemoryFactorStateChanged)
7132            }
7133            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
7134                Some(Self::AtomExcessiveCpuUsageReported)
7135            }
7136            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
7137            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
7138                Some(Self::AtomProcessMemoryStatReported)
7139            }
7140            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
7141            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
7142                Some(Self::AtomBatterySaverModeStateChanged)
7143            }
7144            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
7145                Some(Self::AtomDeviceIdleModeStateChanged)
7146            }
7147            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
7148                Some(Self::AtomDeviceIdlingModeStateChanged)
7149            }
7150            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
7151            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
7152            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
7153            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
7154            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
7155            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
7156                Some(Self::AtomProcessLifeCycleStateChanged)
7157            }
7158            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
7159            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
7160            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
7161            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
7162            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
7163            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
7164            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
7165            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
7166            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
7167            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
7168                Some(Self::AtomWifiSignalStrengthChanged)
7169            }
7170            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
7171            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
7172                Some(Self::AtomPhoneSignalStrengthChanged)
7173            }
7174            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
7175            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
7176                Some(Self::AtomActivityForegroundStateChanged)
7177            }
7178            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
7179            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
7180            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
7181            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
7182            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
7183            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
7184            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
7185            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
7186            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
7187            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
7188                Some(Self::AtomPictureInPictureStateChanged)
7189            }
7190            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
7191                Some(Self::AtomWifiMulticastLockStateChanged)
7192            }
7193            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
7194                Some(Self::AtomAppStartMemoryStateCaptured)
7195            }
7196            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
7197            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
7198            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
7199            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
7200                Some(Self::AtomForegroundServiceStateChanged)
7201            }
7202            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
7203            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
7204            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
7205                Some(Self::AtomKeyguardBouncerStateChanged)
7206            }
7207            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
7208                Some(Self::AtomKeyguardBouncerPasswordEntered)
7209            }
7210            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
7211            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
7212                Some(Self::AtomResourceConfigurationChanged)
7213            }
7214            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
7215                Some(Self::AtomBluetoothEnabledStateChanged)
7216            }
7217            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
7218                Some(Self::AtomBluetoothConnectionStateChanged)
7219            }
7220            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
7221            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
7222                Some(Self::AtomUsbConnectorStateChanged)
7223            }
7224            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
7225            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
7226            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
7227            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
7228            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
7229                Some(Self::AtomMobileConnectionStateChanged)
7230            }
7231            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
7232                Some(Self::AtomMobileRadioTechnologyChanged)
7233            }
7234            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
7235            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
7236            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
7237            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
7238            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
7239            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
7240            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
7241            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
7242                Some(Self::AtomDeferredJobStatsReported)
7243            }
7244            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
7245            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
7246            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
7247            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
7248            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
7249            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
7250            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
7251            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
7252            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
7253                Some(Self::AtomPhoneServiceStateChanged)
7254            }
7255            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
7256            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
7257            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
7258            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
7259            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
7260            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
7261            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
7262            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
7263            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
7264            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
7265            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
7266                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
7267            }
7268            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
7269            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
7270            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
7271                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
7272            }
7273            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
7274            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
7275            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
7276            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
7277                Some(Self::AtomDocsUiUserActionReported)
7278            }
7279            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
7280            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
7281            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
7282            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
7283            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
7284                Some(Self::AtomDocsUiPickerLaunchedFromReported)
7285            }
7286            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
7287                Some(Self::AtomDocsUiPickResultReported)
7288            }
7289            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
7290                Some(Self::AtomDocsUiSearchModeReported)
7291            }
7292            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
7293                Some(Self::AtomDocsUiSearchTypeReported)
7294            }
7295            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
7296            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
7297                Some(Self::AtomRescuePartyResetReported)
7298            }
7299            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
7300            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
7301            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
7302                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
7303            }
7304            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
7305                Some(Self::AtomBluetoothAclConnectionStateChanged)
7306            }
7307            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
7308                Some(Self::AtomBluetoothScoConnectionStateChanged)
7309            }
7310            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
7311            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
7312                Some(Self::AtomAppOptimizedAfterDowngraded)
7313            }
7314            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
7315            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
7316                Some(Self::AtomGnssNfwNotificationReported)
7317            }
7318            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
7319                Some(Self::AtomGnssConfigurationReported)
7320            }
7321            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
7322                Some(Self::AtomUsbPortOverheatEventReported)
7323            }
7324            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
7325            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
7326            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
7327            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
7328            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
7329            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
7330                Some(Self::AtomNfcHceTransactionOccurred)
7331            }
7332            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
7333            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
7334            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
7335                Some(Self::AtomBroadcastDispatchLatencyReported)
7336            }
7337            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
7338                Some(Self::AtomAttentionManagerServiceResultReported)
7339            }
7340            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
7341            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
7342            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
7343            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
7344            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
7345                Some(Self::AtomBiometricSystemHealthIssueDetected)
7346            }
7347            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
7348            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
7349                Some(Self::AtomScheduledJobConstraintChanged)
7350            }
7351            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
7352                Some(Self::AtomBluetoothActiveDeviceChanged)
7353            }
7354            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
7355                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
7356            }
7357            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
7358                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
7359            }
7360            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
7361                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
7362            }
7363            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
7364                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
7365            }
7366            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
7367                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
7368            }
7369            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
7370                Some(Self::AtomBluetoothDeviceRssiReported)
7371            }
7372            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
7373                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
7374            }
7375            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
7376                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
7377            }
7378            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
7379                Some(Self::AtomBluetoothHciTimeoutReported)
7380            }
7381            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
7382                Some(Self::AtomBluetoothQualityReportReported)
7383            }
7384            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
7385                Some(Self::AtomBluetoothDeviceInfoReported)
7386            }
7387            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
7388                Some(Self::AtomBluetoothRemoteVersionInfoReported)
7389            }
7390            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
7391                Some(Self::AtomBluetoothSdpAttributeReported)
7392            }
7393            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
7394                Some(Self::AtomBluetoothBondStateChanged)
7395            }
7396            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
7397                Some(Self::AtomBluetoothClassicPairingEventReported)
7398            }
7399            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
7400                Some(Self::AtomBluetoothSmpPairingEventReported)
7401            }
7402            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
7403                Some(Self::AtomScreenTimeoutExtensionReported)
7404            }
7405            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
7406            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
7407                Some(Self::AtomPermissionGrantRequestResultReported)
7408            }
7409            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
7410                Some(Self::AtomBluetoothSocketConnectionStateChanged)
7411            }
7412            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
7413                Some(Self::AtomDeviceIdentifierAccessDenied)
7414            }
7415            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
7416                Some(Self::AtomBubbleDeveloperErrorReported)
7417            }
7418            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
7419                Some(Self::AtomAssistGestureStageReported)
7420            }
7421            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
7422                Some(Self::AtomAssistGestureFeedbackReported)
7423            }
7424            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
7425                Some(Self::AtomAssistGestureProgressReported)
7426            }
7427            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
7428            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
7429            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
7430            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
7431                Some(Self::AtomPrivacyIndicatorsInteracted)
7432            }
7433            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
7434                Some(Self::AtomAppInstallOnExternalStorageReported)
7435            }
7436            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
7437            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
7438            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
7439            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
7440                Some(Self::AtomSystemServerWatchdogOccurred)
7441            }
7442            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
7443            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
7444                Some(Self::AtomBluetoothClassOfDeviceReported)
7445            }
7446            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
7447                Some(Self::AtomIntelligenceEventReported)
7448            }
7449            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
7450                Some(Self::AtomThermalThrottlingSeverityStateChanged)
7451            }
7452            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
7453                Some(Self::AtomRoleRequestResultReported)
7454            }
7455            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
7456                Some(Self::AtomMediametricsAudiopolicyReported)
7457            }
7458            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
7459                Some(Self::AtomMediametricsAudiorecordReported)
7460            }
7461            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
7462                Some(Self::AtomMediametricsAudiothreadReported)
7463            }
7464            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
7465                Some(Self::AtomMediametricsAudiotrackReported)
7466            }
7467            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
7468                Some(Self::AtomMediametricsCodecReported)
7469            }
7470            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
7471                Some(Self::AtomMediametricsDrmWidevineReported)
7472            }
7473            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
7474                Some(Self::AtomMediametricsExtractorReported)
7475            }
7476            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
7477                Some(Self::AtomMediametricsMediadrmReported)
7478            }
7479            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
7480                Some(Self::AtomMediametricsNuplayerReported)
7481            }
7482            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
7483                Some(Self::AtomMediametricsRecorderReported)
7484            }
7485            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
7486                Some(Self::AtomMediametricsDrmmanagerReported)
7487            }
7488            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
7489            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
7490            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
7491            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
7492                Some(Self::AtomContentCaptureCallerMismatchReported)
7493            }
7494            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
7495                Some(Self::AtomContentCaptureServiceEvents)
7496            }
7497            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
7498                Some(Self::AtomContentCaptureSessionEvents)
7499            }
7500            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
7501            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
7502                Some(Self::AtomLocationManagerApiUsageReported)
7503            }
7504            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
7505                Some(Self::AtomReviewPermissionsFragmentResultReported)
7506            }
7507            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
7508                Some(Self::AtomRuntimePermissionsUpgradeResult)
7509            }
7510            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
7511                Some(Self::AtomGrantPermissionsActivityButtonActions)
7512            }
7513            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
7514                Some(Self::AtomLocationAccessCheckNotificationAction)
7515            }
7516            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
7517                Some(Self::AtomAppPermissionFragmentActionReported)
7518            }
7519            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
7520                Some(Self::AtomAppPermissionFragmentViewed)
7521            }
7522            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
7523                Some(Self::AtomAppPermissionsFragmentViewed)
7524            }
7525            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
7526                Some(Self::AtomPermissionAppsFragmentViewed)
7527            }
7528            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
7529            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
7530            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
7531            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
7532            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
7533                Some(Self::AtomExclusionRectStateChanged)
7534            }
7535            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
7536                Some(Self::AtomBackGestureReportedReported)
7537            }
7538            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
7539                Some(Self::AtomUpdateEngineUpdateAttemptReported)
7540            }
7541            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
7542                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
7543            }
7544            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
7545            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
7546                Some(Self::AtomAppCompatibilityChangeReported)
7547            }
7548            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
7549            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
7550                Some(Self::AtomVmsClientConnectionStateChanged)
7551            }
7552            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
7553                Some(Self::AtomMediaProviderScanOccurred)
7554            }
7555            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
7556            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
7557                Some(Self::AtomMediaProviderPermissionRequested)
7558            }
7559            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
7560                Some(Self::AtomMediaProviderSchemaChanged)
7561            }
7562            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
7563                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
7564            }
7565            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
7566                Some(Self::AtomRebootEscrowRecoveryReported)
7567            }
7568            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
7569                Some(Self::AtomBootTimeEventDurationReported)
7570            }
7571            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
7572                Some(Self::AtomBootTimeEventElapsedTimeReported)
7573            }
7574            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
7575                Some(Self::AtomBootTimeEventUtcTimeReported)
7576            }
7577            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
7578                Some(Self::AtomBootTimeEventErrorCodeReported)
7579            }
7580            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
7581            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
7582            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
7583                Some(Self::AtomNotificationPanelReported)
7584            }
7585            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
7586                Some(Self::AtomNotificationChannelModified)
7587            }
7588            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
7589                Some(Self::AtomIntegrityCheckResultReported)
7590            }
7591            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
7592            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
7593            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
7594            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
7595            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
7596            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
7597                Some(Self::AtomWifiConnectionResultReported)
7598            }
7599            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
7600            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
7601            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
7602                Some(Self::AtomForegroundServiceAppOpSessionEnded)
7603            }
7604            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
7605            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
7606            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
7607            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
7608            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
7609            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
7610            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
7611                Some(Self::AtomPackageInstallerV2Reported)
7612            }
7613            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
7614                Some(Self::AtomUserLifecycleJourneyReported)
7615            }
7616            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
7617                Some(Self::AtomUserLifecycleEventOccurred)
7618            }
7619            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
7620                Some(Self::AtomAccessibilityShortcutReported)
7621            }
7622            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
7623                Some(Self::AtomAccessibilityServiceReported)
7624            }
7625            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
7626                Some(Self::AtomDocsUiDragAndDropReported)
7627            }
7628            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
7629            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
7630                Some(Self::AtomAutoRevokeNotificationClicked)
7631            }
7632            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
7633                Some(Self::AtomAutoRevokeFragmentAppViewed)
7634            }
7635            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
7636                Some(Self::AtomAutoRevokedAppInteraction)
7637            }
7638            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
7639                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
7640            }
7641            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
7642            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
7643                Some(Self::AtomAudioPowerUsageDataReported)
7644            }
7645            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
7646            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
7647                Some(Self::AtomMediaoutputOpSwitchReported)
7648            }
7649            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
7650            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
7651            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
7652            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
7653                Some(Self::AtomAssistantInvocationReported)
7654            }
7655            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
7656            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
7657                Some(Self::AtomCarUserHalModifyUserRequestReported)
7658            }
7659            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
7660                Some(Self::AtomCarUserHalModifyUserResponseReported)
7661            }
7662            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
7663                Some(Self::AtomCarUserHalPostSwitchResponseReported)
7664            }
7665            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
7666                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
7667            }
7668            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
7669                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
7670            }
7671            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
7672                Some(Self::AtomCarUserHalUserAssociationRequestReported)
7673            }
7674            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
7675                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
7676            }
7677            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
7678                Some(Self::AtomNetworkIpProvisioningReported)
7679            }
7680            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
7681                Some(Self::AtomNetworkDhcpRenewReported)
7682            }
7683            "ATOM_NETWORK_VALIDATION_REPORTED" => {
7684                Some(Self::AtomNetworkValidationReported)
7685            }
7686            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
7687                Some(Self::AtomNetworkStackQuirkReported)
7688            }
7689            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
7690                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
7691            }
7692            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
7693                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
7694            }
7695            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
7696                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
7697            }
7698            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
7699                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
7700            }
7701            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
7702            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
7703            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
7704            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
7705                Some(Self::AtomContactsProviderStatusReported)
7706            }
7707            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
7708                Some(Self::AtomKeystoreKeyEventReported)
7709            }
7710            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
7711            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
7712            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
7713                Some(Self::AtomUiInteractionFrameInfoReported)
7714            }
7715            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
7716            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
7717            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
7718                Some(Self::AtomWifiConnectionStateChanged)
7719            }
7720            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
7721                Some(Self::AtomHdmiCecActiveSourceChanged)
7722            }
7723            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
7724            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
7725            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
7726            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
7727                Some(Self::AtomCarrierIdMismatchReported)
7728            }
7729            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
7730            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
7731                Some(Self::AtomDataStallRecoveryReported)
7732            }
7733            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
7734                Some(Self::AtomMediametricsMediaparserReported)
7735            }
7736            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
7737            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
7738                Some(Self::AtomTextClassifierApiUsageReported)
7739            }
7740            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
7741                Some(Self::AtomCarWatchdogKillStatsReported)
7742            }
7743            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
7744                Some(Self::AtomMediametricsPlaybackReported)
7745            }
7746            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
7747            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
7748                Some(Self::AtomMediaPlaybackStateChanged)
7749            }
7750            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
7751                Some(Self::AtomMediaPlaybackErrorReported)
7752            }
7753            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
7754                Some(Self::AtomMediaPlaybackTrackChanged)
7755            }
7756            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
7757            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
7758            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
7759            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
7760            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
7761            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
7762            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
7763                Some(Self::AtomImsServiceEntitlementUpdated)
7764            }
7765            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
7766            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
7767                Some(Self::AtomSimSpecificSettingsRestored)
7768            }
7769            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
7770                Some(Self::AtomTextClassifierDownloadReported)
7771            }
7772            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
7773            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
7774            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
7775                Some(Self::AtomBluetoothHalCrashReasonReported)
7776            }
7777            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
7778                Some(Self::AtomRebootEscrowPreparationReported)
7779            }
7780            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
7781                Some(Self::AtomRebootEscrowLskfCaptureReported)
7782            }
7783            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
7784                Some(Self::AtomRebootEscrowRebootReported)
7785            }
7786            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
7787            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
7788                Some(Self::AtomMediametricsAaudiostreamReported)
7789            }
7790            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
7791                Some(Self::AtomMediaTranscodingSessionEnded)
7792            }
7793            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
7794                Some(Self::AtomMagnificationUsageReported)
7795            }
7796            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
7797                Some(Self::AtomMagnificationModeWithImeOnReported)
7798            }
7799            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
7800                Some(Self::AtomAppSearchCallStatsReported)
7801            }
7802            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
7803                Some(Self::AtomAppSearchPutDocumentStatsReported)
7804            }
7805            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
7806            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
7807            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
7808            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
7809            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
7810                Some(Self::AtomAuthPromptAuthenticateInvoked)
7811            }
7812            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
7813                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
7814            }
7815            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
7816            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
7817            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
7818            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
7819                Some(Self::AtomLongRebootBlockingReported)
7820            }
7821            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
7822                Some(Self::AtomLocationTimeZoneProviderStateChanged)
7823            }
7824            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
7825            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
7826                Some(Self::AtomTimeoutAutoExtendedReported)
7827            }
7828            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
7829            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
7830            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
7831                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
7832            }
7833            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
7834                Some(Self::AtomUserLevelHibernationStateChanged)
7835            }
7836            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
7837                Some(Self::AtomAppSearchInitializeStatsReported)
7838            }
7839            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
7840                Some(Self::AtomAppSearchQueryStatsReported)
7841            }
7842            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
7843            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
7844                Some(Self::AtomNetworkIpReachabilityMonitorReported)
7845            }
7846            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
7847            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
7848                Some(Self::AtomAnrOccurredProcessingStarted)
7849            }
7850            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
7851                Some(Self::AtomAppSearchRemoveStatsReported)
7852            }
7853            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
7854            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
7855                Some(Self::AtomPermissionUsageFragmentInteraction)
7856            }
7857            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
7858                Some(Self::AtomPermissionDetailsInteraction)
7859            }
7860            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
7861                Some(Self::AtomPrivacySensorToggleInteraction)
7862            }
7863            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
7864                Some(Self::AtomPrivacyToggleDialogInteraction)
7865            }
7866            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
7867                Some(Self::AtomAppSearchOptimizeStatsReported)
7868            }
7869            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
7870                Some(Self::AtomNonA11yToolServiceWarningReport)
7871            }
7872            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
7873            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
7874                Some(Self::AtomSizeCompatRestartButtonEventReported)
7875            }
7876            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
7877            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
7878                Some(Self::AtomNetworkDnsHandshakeReported)
7879            }
7880            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
7881                Some(Self::AtomBluetoothCodePathCounter)
7882            }
7883            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
7884                Some(Self::AtomBluetoothLeBatchScanReportDelay)
7885            }
7886            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
7887                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
7888            }
7889            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
7890                Some(Self::AtomNeuralnetworksCompilationCompleted)
7891            }
7892            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
7893                Some(Self::AtomNeuralnetworksExecutionCompleted)
7894            }
7895            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
7896                Some(Self::AtomNeuralnetworksCompilationFailed)
7897            }
7898            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
7899                Some(Self::AtomNeuralnetworksExecutionFailed)
7900            }
7901            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
7902            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
7903            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
7904                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
7905            }
7906            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
7907                Some(Self::AtomChreCodeDownloadTransacted)
7908            }
7909            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
7910            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
7911            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
7912            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
7913                Some(Self::AtomUwbRangingMeasurementReceived)
7914            }
7915            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
7916                Some(Self::AtomTextClassifierDownloadWorkScheduled)
7917            }
7918            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
7919                Some(Self::AtomTextClassifierDownloadWorkCompleted)
7920            }
7921            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
7922            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
7923            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
7924                Some(Self::AtomNearbyDeviceScanStateChanged)
7925            }
7926            "ATOM_APPLICATION_LOCALES_CHANGED" => {
7927                Some(Self::AtomApplicationLocalesChanged)
7928            }
7929            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
7930                Some(Self::AtomMediametricsAudiotrackstatusReported)
7931            }
7932            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
7933                Some(Self::AtomFoldStateDurationReported)
7934            }
7935            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
7936                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
7937            }
7938            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
7939            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
7940                Some(Self::AtomDisplayHbmBrightnessChanged)
7941            }
7942            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
7943                Some(Self::AtomPersistentUriPermissionsFlushed)
7944            }
7945            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
7946                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
7947            }
7948            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
7949            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
7950            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
7951            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
7952                Some(Self::AtomWearSettingsUiInteracted)
7953            }
7954            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
7955                Some(Self::AtomTracingServiceReportEvent)
7956            }
7957            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
7958                Some(Self::AtomMediametricsAudiorecordstatusReported)
7959            }
7960            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
7961            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
7962            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
7963                Some(Self::AtomWifiP2pConnectionReported)
7964            }
7965            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
7966            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
7967                Some(Self::AtomHotwordDetectorCreateRequested)
7968            }
7969            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
7970                Some(Self::AtomHotwordDetectionServiceInitResultReported)
7971            }
7972            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
7973                Some(Self::AtomHotwordDetectionServiceRestarted)
7974            }
7975            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
7976                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
7977            }
7978            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
7979            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
7980                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
7981            }
7982            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
7983                Some(Self::AtomContactsIndexerUpdateStatsReported)
7984            }
7985            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
7986                Some(Self::AtomAppBackgroundRestrictionsInfo)
7987            }
7988            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
7989                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
7990            }
7991            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
7992                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
7993            }
7994            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
7995                Some(Self::AtomPermissionReminderNotificationInteracted)
7996            }
7997            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
7998                Some(Self::AtomRecentPermissionDecisionsInteracted)
7999            }
8000            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
8001                Some(Self::AtomGnssPsdsDownloadReported)
8002            }
8003            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
8004                Some(Self::AtomLeAudioConnectionSessionReported)
8005            }
8006            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
8007                Some(Self::AtomLeAudioBroadcastSessionReported)
8008            }
8009            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
8010            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
8011                Some(Self::AtomTaskManagerEventReported)
8012            }
8013            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
8014            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
8015                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
8016            }
8017            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
8018                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
8019            }
8020            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
8021                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
8022            }
8023            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
8024                Some(Self::AtomWifiSetupFailureCrashReported)
8025            }
8026            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
8027            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
8028                Some(Self::AtomIsolatedCompilationScheduled)
8029            }
8030            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
8031            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
8032                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
8033            }
8034            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
8035                Some(Self::AtomSystemServerPreWatchdogOccurred)
8036            }
8037            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
8038            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
8039            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
8040                Some(Self::AtomRemoteKeyProvisioningAttempt)
8041            }
8042            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
8043                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
8044            }
8045            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
8046                Some(Self::AtomRemoteKeyProvisioningTiming)
8047            }
8048            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
8049                Some(Self::AtomMediaoutputOpInteractionReport)
8050            }
8051            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
8052            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
8053                Some(Self::AtomAutofillPresentationEventReported)
8054            }
8055            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
8056            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
8057                Some(Self::AtomSafetySourceStateCollected)
8058            }
8059            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
8060                Some(Self::AtomSafetyCenterSystemEventReported)
8061            }
8062            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
8063                Some(Self::AtomSafetyCenterInteractionReported)
8064            }
8065            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
8066                Some(Self::AtomSettingsProviderSettingChanged)
8067            }
8068            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
8069                Some(Self::AtomBroadcastDeliveryEventReported)
8070            }
8071            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
8072                Some(Self::AtomServiceRequestEventReported)
8073            }
8074            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
8075                Some(Self::AtomProviderAcquisitionEventReported)
8076            }
8077            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
8078                Some(Self::AtomBluetoothDeviceNameReported)
8079            }
8080            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
8081            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
8082            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
8083            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
8084                Some(Self::AtomCbReceiverFeatureChanged)
8085            }
8086            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
8087                Some(Self::AtomPrivacySignalNotificationInteraction)
8088            }
8089            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
8090                Some(Self::AtomPrivacySignalIssueCardInteraction)
8091            }
8092            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
8093                Some(Self::AtomPrivacySignalsJobFailure)
8094            }
8095            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
8096            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
8097            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
8098            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
8099            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
8100            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
8101                Some(Self::AtomNetworkDnsServerSupportReported)
8102            }
8103            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
8104            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
8105            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
8106                Some(Self::AtomAmbientBrightnessStatsReported)
8107            }
8108            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
8109                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
8110            }
8111            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
8112                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
8113            }
8114            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
8115                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
8116            }
8117            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
8118                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
8119            }
8120            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
8121            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
8122                Some(Self::AtomDeviceWideJobConstraintChanged)
8123            }
8124            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
8125            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
8126            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
8127            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
8128                Some(Self::AtomSystemDefaultNetworkChanged)
8129            }
8130            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
8131                Some(Self::AtomIwlanSetupDataCallResultReported)
8132            }
8133            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
8134                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
8135            }
8136            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
8137                Some(Self::AtomAirplaneModeSessionReported)
8138            }
8139            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
8140            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
8141            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
8142                Some(Self::AtomPackageInstallationSessionReported)
8143            }
8144            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
8145                Some(Self::AtomDefaultNetworkRematchInfo)
8146            }
8147            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
8148                Some(Self::AtomNetworkSelectionPerformance)
8149            }
8150            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
8151            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
8152                Some(Self::AtomBluetoothDisconnectionReasonReported)
8153            }
8154            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
8155                Some(Self::AtomBluetoothLocalVersionsReported)
8156            }
8157            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
8158                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
8159            }
8160            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
8161                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
8162            }
8163            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
8164            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
8165                Some(Self::AtomBrightnessConfigurationUpdated)
8166            }
8167            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
8168                Some(Self::AtomWearMediaOutputSwitcherLaunched)
8169            }
8170            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
8171                Some(Self::AtomWearMediaOutputSwitcherFinished)
8172            }
8173            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
8174                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
8175            }
8176            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
8177                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
8178            }
8179            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
8180                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
8181            }
8182            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
8183                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
8184            }
8185            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
8186                Some(Self::AtomPackageManagerSnapshotReported)
8187            }
8188            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
8189                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
8190            }
8191            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
8192                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
8193            }
8194            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
8195            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
8196                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
8197            }
8198            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
8199            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
8200                Some(Self::AtomWsWatchFaceFavoriteActionReported)
8201            }
8202            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
8203                Some(Self::AtomWsWatchFaceSetActionReported)
8204            }
8205            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
8206                Some(Self::AtomPackageUninstallationReported)
8207            }
8208            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
8209            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
8210                Some(Self::AtomGameModeConfigurationChanged)
8211            }
8212            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
8213            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
8214                Some(Self::AtomNetworkSliceSessionEnded)
8215            }
8216            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
8217                Some(Self::AtomNetworkSliceDailyDataUsageReported)
8218            }
8219            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
8220            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
8221            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
8222                Some(Self::AtomNfcReaderConflictOccurred)
8223            }
8224            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
8225            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
8226                Some(Self::AtomGetTypeAccessedWithoutPermission)
8227            }
8228            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
8229                Some(Self::AtomMobileBundledAppInfoGathered)
8230            }
8231            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
8232                Some(Self::AtomWsWatchFaceComplicationSetChanged)
8233            }
8234            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
8235            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
8236            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
8237            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
8238            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
8239            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
8240                Some(Self::AtomUnsafeIntentEventReported)
8241            }
8242            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
8243                Some(Self::AtomPerformanceHintSessionReported)
8244            }
8245            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
8246                Some(Self::AtomMediametricsMidiDeviceCloseReported)
8247            }
8248            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
8249            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
8250                Some(Self::AtomHotwordAudioEgressEventReported)
8251            }
8252            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
8253                Some(Self::AtomLocationEnabledStateChanged)
8254            }
8255            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
8256            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
8257                Some(Self::AtomUsbComplianceWarningsReported)
8258            }
8259            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
8260                Some(Self::AtomAppSupportedLocalesChanged)
8261            }
8262            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
8263                Some(Self::AtomMediaProviderVolumeRecoveryReported)
8264            }
8265            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
8266                Some(Self::AtomBiometricPropertiesCollected)
8267            }
8268            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
8269            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
8270            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
8271            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
8272            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
8273                Some(Self::AtomDeviceLogAccessEventReported)
8274            }
8275            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
8276            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
8277            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
8278            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
8279                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
8280            }
8281            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
8282            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
8283            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
8284                Some(Self::AtomWsNotificationBridgemodeUpdated)
8285            }
8286            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
8287                Some(Self::AtomWsNotificationDismissalActioned)
8288            }
8289            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
8290            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
8291            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
8292            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
8293                Some(Self::AtomWifiBytesTransferByFgBg)
8294            }
8295            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
8296            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
8297                Some(Self::AtomMobileBytesTransferByFgBg)
8298            }
8299            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
8300            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
8301            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
8302            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
8303            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
8304            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
8305            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
8306            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
8307            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
8308            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
8309            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
8310            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
8311            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
8312            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
8313            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
8314            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
8315            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
8316            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
8317            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
8318            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
8319            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
8320            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
8321            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
8322            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
8323            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
8324            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
8325            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
8326            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
8327            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
8328            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
8329            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
8330            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
8331            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
8332                Some(Self::AtomOnDevicePowerMeasurement)
8333            }
8334            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
8335                Some(Self::AtomDeviceCalculatedPowerUse)
8336            }
8337            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
8338                Some(Self::AtomProcessMemoryHighWaterMark)
8339            }
8340            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
8341            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
8342            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
8343            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
8344            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
8345                Some(Self::AtomDebugFailingElapsedClock)
8346            }
8347            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
8348            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
8349            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
8350            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
8351            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
8352            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
8353            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
8354            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
8355            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
8356            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
8357                Some(Self::AtomAppsOnExternalStorageInfo)
8358            }
8359            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
8360            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
8361            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
8362            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
8363                Some(Self::AtomProcessSystemIonHeapSize)
8364            }
8365            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
8366                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
8367            }
8368            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
8369                Some(Self::AtomSurfaceflingerStatsLayerInfo)
8370            }
8371            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
8372            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
8373            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
8374            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
8375                Some(Self::AtomDangerousPermissionStateSampled)
8376            }
8377            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
8378            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
8379            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
8380            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
8381                Some(Self::AtomPackageNotificationPreferences)
8382            }
8383            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
8384                Some(Self::AtomPackageNotificationChannelPreferences)
8385            }
8386            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
8387                Some(Self::AtomPackageNotificationChannelGroupPreferences)
8388            }
8389            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
8390            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
8391            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
8392            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
8393            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
8394            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
8395                Some(Self::AtomSupportedRadioAccessFamily)
8396            }
8397            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
8398            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
8399            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
8400            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
8401                Some(Self::AtomBytesTransferByTagAndMetered)
8402            }
8403            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
8404            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
8405                Some(Self::AtomGeneralExternalStorageAccessStats)
8406            }
8407            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
8408            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
8409            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
8410            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
8411            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
8412            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
8413                Some(Self::AtomCellularDataServiceSwitch)
8414            }
8415            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
8416            "ATOM_IMS_REGISTRATION_TERMINATION" => {
8417                Some(Self::AtomImsRegistrationTermination)
8418            }
8419            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
8420            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
8421            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
8422            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
8423            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
8424                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
8425            }
8426            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
8427            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
8428            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
8429            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
8430            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
8431            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
8432            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
8433            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
8434            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
8435            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
8436            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
8437            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
8438            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
8439                Some(Self::AtomBatteryUsageStatsBeforeReset)
8440            }
8441            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
8442                Some(Self::AtomBatteryUsageStatsSinceReset)
8443            }
8444            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
8445                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
8446            }
8447            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
8448                Some(Self::AtomInstalledIncrementalPackage)
8449            }
8450            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
8451            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
8452            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
8453            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
8454                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
8455            }
8456            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
8457                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
8458            }
8459            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
8460                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
8461            }
8462            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
8463                Some(Self::AtomKeystore2AtomWithOverflow)
8464            }
8465            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
8466                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
8467            }
8468            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
8469                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
8470            }
8471            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
8472            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
8473            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
8474            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
8475                Some(Self::AtomAccessibilityShortcutStats)
8476            }
8477            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
8478                Some(Self::AtomAccessibilityFloatingMenuStats)
8479            }
8480            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
8481                Some(Self::AtomDataUsageBytesTransferV2)
8482            }
8483            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
8484            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
8485                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
8486            }
8487            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
8488                Some(Self::AtomCarWatchdogUidIoUsageSummary)
8489            }
8490            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
8491                Some(Self::AtomImsRegistrationFeatureTagStats)
8492            }
8493            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
8494                Some(Self::AtomRcsClientProvisioningStats)
8495            }
8496            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
8497            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
8498            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
8499                Some(Self::AtomSipTransportFeatureTagStats)
8500            }
8501            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
8502            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
8503            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
8504                Some(Self::AtomImsDedicatedBearerListenerEvent)
8505            }
8506            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
8507            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
8508                Some(Self::AtomImsRegistrationServiceDescStats)
8509            }
8510            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
8511            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
8512            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
8513            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
8514            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
8515            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
8516                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
8517            }
8518            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
8519            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
8520                Some(Self::AtomPinnedFileSizesPerPackage)
8521            }
8522            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
8523                Some(Self::AtomPendingIntentsPerPackage)
8524            }
8525            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
8526            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
8527                Some(Self::AtomTelephonyNetworkRequestsV2)
8528            }
8529            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
8530                Some(Self::AtomDeviceTelephonyProperties)
8531            }
8532            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
8533                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
8534            }
8535            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
8536            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
8537            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
8538            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
8539            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
8540            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
8541            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
8542            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
8543                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
8544            }
8545            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
8546            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
8547            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
8548            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
8549                Some(Self::AtomNetworkSliceRequestCount)
8550            }
8551            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
8552            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
8553                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
8554            }
8555            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
8556            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
8557            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
8558            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
8559            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
8560            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
8561                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
8562            }
8563            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
8564            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
8565            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
8566                Some(Self::AtomWifiSelfRecoveryTriggered)
8567            }
8568            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
8569            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
8570            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
8571            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
8572            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
8573            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
8574                Some(Self::AtomWifiAwareResourceUsingChanged)
8575            }
8576            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
8577            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
8578                Some(Self::AtomWifiLocalOnlyRequestReceived)
8579            }
8580            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
8581                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
8582            }
8583            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
8584            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
8585            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
8586            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
8587            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
8588            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
8589                Some(Self::AtomWifiApCapabilitiesReported)
8590            }
8591            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
8592            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
8593                Some(Self::AtomScorerPredictionResultReported)
8594            }
8595            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
8596            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
8597            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
8598            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
8599            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
8600                Some(Self::AtomWifiConfiguredNetworkInfo)
8601            }
8602            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
8603            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
8604            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
8605                Some(Self::AtomFirstOverlayStateChanged)
8606            }
8607            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
8608            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
8609                Some(Self::AtomWsIncomingCallActionReported)
8610            }
8611            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
8612                Some(Self::AtomWsCallDisconnectionReported)
8613            }
8614            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
8615            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
8616                Some(Self::AtomWsCallUserExperienceLatencyReported)
8617            }
8618            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
8619                Some(Self::AtomWsCallInteractionReported)
8620            }
8621            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
8622            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
8623                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
8624            }
8625            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
8626                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
8627            }
8628            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
8629                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
8630            }
8631            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
8632                Some(Self::AtomWsRemoteEventUsageReported)
8633            }
8634            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
8635                Some(Self::AtomWsNotificationManagedDismissalSync)
8636            }
8637            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
8638                Some(Self::AtomWsBugreportEventReported)
8639            }
8640            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
8641                Some(Self::AtomWsStandaloneModeSnapshot)
8642            }
8643            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
8644                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
8645            }
8646            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
8647                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
8648            }
8649            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
8650                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
8651            }
8652            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
8653                Some(Self::AtomWearAdaptiveSuspendStatsReported)
8654            }
8655            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
8656                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
8657            }
8658            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
8659                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
8660            }
8661            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
8662            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
8663            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
8664                Some(Self::AtomWearTimeSyncAttemptCompleted)
8665            }
8666            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
8667            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
8668                Some(Self::AtomWearSetupWizardDeviceStatusReported)
8669            }
8670            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
8671                Some(Self::AtomWearSetupWizardPairingCompleted)
8672            }
8673            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
8674                Some(Self::AtomWearSetupWizardConnectionEstablished)
8675            }
8676            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
8677                Some(Self::AtomWearSetupWizardCheckinCompleted)
8678            }
8679            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
8680                Some(Self::AtomWearSetupWizardCompanionTimeReported)
8681            }
8682            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
8683                Some(Self::AtomWearSetupWizardStatusReported)
8684            }
8685            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
8686                Some(Self::AtomWearSetupWizardHeartbeatReported)
8687            }
8688            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
8689                Some(Self::AtomWearSetupWizardFrpTriggered)
8690            }
8691            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
8692                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
8693            }
8694            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
8695                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
8696            }
8697            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
8698            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
8699            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
8700            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
8701                Some(Self::AtomLayoutExpressionInspected)
8702            }
8703            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
8704                Some(Self::AtomLayoutAnimationsInspected)
8705            }
8706            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
8707                Some(Self::AtomMaterialComponentsInspected)
8708            }
8709            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
8710            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
8711            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
8712            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
8713            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
8714            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
8715                Some(Self::AtomIgnoredInflationFailuresReported)
8716            }
8717            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
8718            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
8719            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
8720            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
8721            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
8722                Some(Self::AtomMediaSessionStateChanged)
8723            }
8724            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
8725                Some(Self::AtomMediaControlApiUsageReported)
8726            }
8727            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
8728            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
8729                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
8730            }
8731            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
8732                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
8733            }
8734            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
8735                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
8736            }
8737            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
8738            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
8739                Some(Self::AtomSysproxyBluetoothBytesTransfer)
8740            }
8741            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
8742                Some(Self::AtomSysproxyConnectionUpdated)
8743            }
8744            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
8745                Some(Self::AtomWearCompanionConnectionState)
8746            }
8747            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
8748                Some(Self::AtomSysproxyServiceStateUpdated)
8749            }
8750            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
8751            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
8752                Some(Self::AtomTestUprobestatsAtomReported)
8753            }
8754            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
8755            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
8756            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
8757                Some(Self::AtomBootIntegrityInfoReported)
8758            }
8759            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
8760                Some(Self::AtomThreadnetworkTelemetryDataReported)
8761            }
8762            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
8763                Some(Self::AtomThreadnetworkTopoEntryRepeated)
8764            }
8765            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
8766                Some(Self::AtomThreadnetworkDeviceInfoReported)
8767            }
8768            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
8769                Some(Self::AtomCellularRadioPowerStateChanged)
8770            }
8771            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
8772            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
8773            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
8774            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
8775            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
8776                Some(Self::AtomCellularIdentifierDisclosed)
8777            }
8778            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
8779            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
8780            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
8781                Some(Self::AtomSatelliteIncomingDatagram)
8782            }
8783            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
8784                Some(Self::AtomSatelliteOutgoingDatagram)
8785            }
8786            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
8787            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
8788                Some(Self::AtomSatelliteSosMessageRecommender)
8789            }
8790            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
8791                Some(Self::AtomCarrierRoamingSatelliteSession)
8792            }
8793            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
8794                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
8795            }
8796            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
8797                Some(Self::AtomControllerStatsPerPackage)
8798            }
8799            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
8800            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
8801            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
8802                Some(Self::AtomSatelliteAccessController)
8803            }
8804            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
8805            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
8806            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
8807                Some(Self::AtomQnsFallbackRestrictionChanged)
8808            }
8809            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
8810                Some(Self::AtomQnsRatPreferenceMismatchInfo)
8811            }
8812            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
8813            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
8814            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
8815                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
8816            }
8817            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
8818            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
8819            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
8820            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
8821            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
8822            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
8823                Some(Self::AtomLockscreenShortcutSelected)
8824            }
8825            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
8826                Some(Self::AtomLockscreenShortcutTriggered)
8827            }
8828            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
8829                Some(Self::AtomLauncherImpressionEventV2)
8830            }
8831            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
8832                Some(Self::AtomDisplaySwitchLatencyTracked)
8833            }
8834            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
8835                Some(Self::AtomNotificationListenerService)
8836            }
8837            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
8838            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
8839                Some(Self::AtomCommunalHubWidgetEventReported)
8840            }
8841            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
8842                Some(Self::AtomPeripheralTutorialLaunched)
8843            }
8844            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
8845                Some(Self::AtomContextualEducationTriggered)
8846            }
8847            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
8848            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
8849                Some(Self::AtomTestExtensionAtomReported)
8850            }
8851            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
8852                Some(Self::AtomTestRestrictedAtomReported)
8853            }
8854            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
8855            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
8856            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
8857            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
8858            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
8859                Some(Self::AtomSandboxActivityEventOccurred)
8860            }
8861            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
8862                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
8863            }
8864            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
8865            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
8866            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
8867            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
8868            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
8869            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
8870            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
8871            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
8872            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
8873                Some(Self::AtomMediaProviderDatabaseRollbackReported)
8874            }
8875            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
8876                Some(Self::AtomBackupSetupStatusReported)
8877            }
8878            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
8879            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
8880                Some(Self::AtomScreenTimeoutOverrideReported)
8881            }
8882            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
8883                Some(Self::AtomScreenInteractiveSessionReported)
8884            }
8885            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
8886            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
8887            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
8888            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
8889                Some(Self::AtomPhotopickerSessionInfoReported)
8890            }
8891            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
8892                Some(Self::AtomPhotopickerApiInfoReported)
8893            }
8894            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
8895                Some(Self::AtomPhotopickerUiEventLogged)
8896            }
8897            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
8898                Some(Self::AtomPhotopickerMediaItemStatusReported)
8899            }
8900            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
8901                Some(Self::AtomPhotopickerPreviewInfoLogged)
8902            }
8903            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
8904                Some(Self::AtomPhotopickerMenuInteractionLogged)
8905            }
8906            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
8907                Some(Self::AtomPhotopickerBannerInteractionLogged)
8908            }
8909            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
8910                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
8911            }
8912            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
8913                Some(Self::AtomPhotopickerPageInfoLogged)
8914            }
8915            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
8916                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
8917            }
8918            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
8919                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
8920            }
8921            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
8922                Some(Self::AtomPhotopickerSearchInfoReported)
8923            }
8924            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
8925                Some(Self::AtomSearchDataExtractionDetailsReported)
8926            }
8927            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
8928                Some(Self::AtomEmbeddedPhotopickerInfoReported)
8929            }
8930            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
8931                Some(Self::AtomPermissionRationaleDialogViewed)
8932            }
8933            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
8934                Some(Self::AtomPermissionRationaleDialogActionReported)
8935            }
8936            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
8937                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
8938            }
8939            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
8940                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
8941            }
8942            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
8943                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
8944            }
8945            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
8946                Some(Self::AtomEnhancedConfirmationDialogResultReported)
8947            }
8948            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
8949                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
8950            }
8951            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
8952            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
8953            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
8954            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
8955            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
8956                Some(Self::AtomComponentStateChangedReported)
8957            }
8958            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
8959                Some(Self::AtomOndevicepersonalizationApiCalled)
8960            }
8961            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
8962                Some(Self::AtomOndevicepersonalizationTraceEvent)
8963            }
8964            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
8965                Some(Self::AtomNfcObserveModeStateChanged)
8966            }
8967            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
8968            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
8969                Some(Self::AtomNfcPollingLoopNotificationReported)
8970            }
8971            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
8972                Some(Self::AtomNfcProprietaryCapabilitiesReported)
8973            }
8974            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
8975                Some(Self::AtomNfcExitFrameTableChanged)
8976            }
8977            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
8978            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
8979                Some(Self::AtomMicroxrDeviceBootCompleteReported)
8980            }
8981            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
8982            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
8983            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
8984            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
8985            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
8986            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
8987                Some(Self::AtomMediaEditingEndedReported)
8988            }
8989            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
8990                Some(Self::AtomMediaCodecReclaimRequestCompleted)
8991            }
8992            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
8993            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
8994            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
8995            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
8996            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
8997                Some(Self::AtomChreSignificantMotionStateChanged)
8998            }
8999            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
9000                Some(Self::AtomPopulationDensityProviderLoadingReported)
9001            }
9002            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
9003                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
9004            }
9005            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
9006                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
9007            }
9008            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
9009            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
9010            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
9011                Some(Self::AtomKeyboardSystemsEventReported)
9012            }
9013            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
9014            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
9015                Some(Self::AtomInputEventLatencyReported)
9016            }
9017            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
9018            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
9019            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
9020                Some(Self::AtomIkeLivenessCheckSessionValidated)
9021            }
9022            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
9023                Some(Self::AtomNegotiatedSecurityAssociation)
9024            }
9025            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
9026                Some(Self::AtomHotwordEgressSizeAtomReported)
9027            }
9028            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
9029                Some(Self::AtomHealthConnectUiImpression)
9030            }
9031            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
9032                Some(Self::AtomHealthConnectUiInteraction)
9033            }
9034            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
9035                Some(Self::AtomHealthConnectAppOpenedReported)
9036            }
9037            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
9038            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
9039            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
9040                Some(Self::AtomHealthConnectStorageStats)
9041            }
9042            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
9043            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
9044            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
9045                Some(Self::AtomHealthConnectExportInvoked)
9046            }
9047            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
9048                Some(Self::AtomHealthConnectImportInvoked)
9049            }
9050            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
9051                Some(Self::AtomHealthConnectExportImportStatsReported)
9052            }
9053            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
9054                Some(Self::AtomHealthConnectPermissionStats)
9055            }
9056            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
9057                Some(Self::AtomHealthConnectPhrApiInvoked)
9058            }
9059            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
9060                Some(Self::AtomHealthConnectPhrUsageStats)
9061            }
9062            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
9063                Some(Self::AtomHealthConnectPhrStorageStats)
9064            }
9065            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
9066                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
9067            }
9068            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
9069                Some(Self::AtomHealthConnectEcosystemStats)
9070            }
9071            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
9072            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
9073                Some(Self::AtomHdmiSoundbarModeStatusReported)
9074            }
9075            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
9076                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
9077            }
9078            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
9079            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
9080            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
9081            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
9082                Some(Self::AtomApplicationGrammaticalInflectionChanged)
9083            }
9084            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
9085                Some(Self::AtomSystemGrammaticalInflectionChanged)
9086            }
9087            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
9088                Some(Self::AtomFullScreenIntentLaunched)
9089            }
9090            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
9091            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
9092            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
9093            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
9094            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
9095                Some(Self::AtomStylusPredictionMetricsReported)
9096            }
9097            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
9098            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
9099                Some(Self::AtomMediaProjectionStateChanged)
9100            }
9101            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
9102                Some(Self::AtomMediaProjectionTargetChanged)
9103            }
9104            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
9105                Some(Self::AtomExcessiveBinderProxyCountReported)
9106            }
9107            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
9108                Some(Self::AtomProxyBytesTransferByFgBg)
9109            }
9110            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
9111                Some(Self::AtomMobileBytesTransferByProcState)
9112            }
9113            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
9114            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
9115                Some(Self::AtomSensitiveContentMediaProjectionSession)
9116            }
9117            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
9118                Some(Self::AtomSensitiveNotificationAppProtectionSession)
9119            }
9120            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
9121                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
9122            }
9123            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
9124                Some(Self::AtomSensitiveNotificationRedaction)
9125            }
9126            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
9127                Some(Self::AtomSensitiveContentAppProtection)
9128            }
9129            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
9130                Some(Self::AtomAppRestrictionStateChanged)
9131            }
9132            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
9133            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
9134            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
9135                Some(Self::AtomPowerSaveTempAllowlistChanged)
9136            }
9137            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
9138            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
9139                Some(Self::AtomContentOrFileUriEventReported)
9140            }
9141            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
9142                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
9143            }
9144            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
9145                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
9146            }
9147            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
9148            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
9149                Some(Self::AtomJankFrameCountByWidgetReported)
9150            }
9151            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
9152            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
9153                Some(Self::AtomNotificationChannelClassification)
9154            }
9155            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
9156                Some(Self::AtomCameraStatusForCompatibilityChanged)
9157            }
9158            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
9159                Some(Self::AtomFederatedComputeApiCalled)
9160            }
9161            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
9162                Some(Self::AtomFederatedComputeTrainingEventReported)
9163            }
9164            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
9165                Some(Self::AtomExampleIteratorNextLatencyReported)
9166            }
9167            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
9168                Some(Self::AtomFederatedComputeTraceEventReported)
9169            }
9170            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
9171            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
9172                Some(Self::AtomExpressHistogramSampleReported)
9173            }
9174            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
9175            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
9176                Some(Self::AtomExpressUidHistogramSampleReported)
9177            }
9178            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
9179            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
9180            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
9181            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
9182                Some(Self::AtomExternalDisplayStateChanged)
9183            }
9184            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
9185                Some(Self::AtomDisplayModeDirectorVoteChanged)
9186            }
9187            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
9188                Some(Self::AtomDevicePolicyManagementMode)
9189            }
9190            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
9191            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
9192                Some(Self::AtomDeviceLockCheckInRequestReported)
9193            }
9194            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
9195                Some(Self::AtomDeviceLockProvisioningCompleteReported)
9196            }
9197            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
9198                Some(Self::AtomDeviceLockKioskAppRequestReported)
9199            }
9200            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
9201                Some(Self::AtomDeviceLockCheckInRetryReported)
9202            }
9203            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
9204                Some(Self::AtomDeviceLockProvisionFailureReported)
9205            }
9206            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
9207                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
9208            }
9209            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
9210            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
9211                Some(Self::AtomDesktopModeSessionTaskUpdate)
9212            }
9213            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
9214                Some(Self::AtomDesktopModeTaskSizeUpdated)
9215            }
9216            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
9217            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
9218            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
9219                Some(Self::AtomCronetEngineBuilderInitialized)
9220            }
9221            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
9222                Some(Self::AtomCronetHttpFlagsInitialized)
9223            }
9224            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
9225            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
9226                Some(Self::AtomCredentialManagerApiCalled)
9227            }
9228            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
9229                Some(Self::AtomCredentialManagerInitPhaseReported)
9230            }
9231            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
9232                Some(Self::AtomCredentialManagerCandidatePhaseReported)
9233            }
9234            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
9235                Some(Self::AtomCredentialManagerFinalPhaseReported)
9236            }
9237            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
9238                Some(Self::AtomCredentialManagerTotalReported)
9239            }
9240            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
9241                Some(Self::AtomCredentialManagerFinalnouidReported)
9242            }
9243            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
9244                Some(Self::AtomCredentialManagerGetReported)
9245            }
9246            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
9247                Some(Self::AtomCredentialManagerAuthClickReported)
9248            }
9249            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
9250                Some(Self::AtomCredentialManagerApiv2Called)
9251            }
9252            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
9253            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
9254                Some(Self::AtomVpnConnectionStateChanged)
9255            }
9256            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
9257            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
9258            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
9259            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
9260                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
9261            }
9262            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
9263                Some(Self::AtomNetworkStatsRecorderFileOperated)
9264            }
9265            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
9266                Some(Self::AtomDailyKeepaliveInfoReported)
9267            }
9268            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
9269                Some(Self::AtomNetworkRequestStateChanged)
9270            }
9271            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
9272                Some(Self::AtomTetheringActiveSessionsReported)
9273            }
9274            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
9275                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
9276            }
9277            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
9278            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
9279            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
9280            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
9281            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
9282                Some(Self::AtomCertificateTransparencyLogListStateChanged)
9283            }
9284            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
9285            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
9286                Some(Self::AtomCertificateTransparencyVerificationReported)
9287            }
9288            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
9289                Some(Self::AtomCameraFeatureCombinationQueryEvent)
9290            }
9291            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
9292            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
9293                Some(Self::AtomBluetoothHashedDeviceNameReported)
9294            }
9295            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
9296                Some(Self::AtomBluetoothL2capCocClientConnection)
9297            }
9298            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
9299                Some(Self::AtomBluetoothL2capCocServerConnection)
9300            }
9301            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
9302                Some(Self::AtomBluetoothLeSessionConnected)
9303            }
9304            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
9305                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
9306            }
9307            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
9308                Some(Self::AtomBluetoothProfileConnectionAttempted)
9309            }
9310            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
9311                Some(Self::AtomBluetoothContentProfileErrorReported)
9312            }
9313            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
9314                Some(Self::AtomBluetoothRfcommConnectionAttempted)
9315            }
9316            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
9317                Some(Self::AtomRemoteDeviceInformationWithMetricId)
9318            }
9319            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
9320            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
9321            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
9322            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
9323            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
9324            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
9325            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
9326            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
9327                Some(Self::AtomBluetoothCrossLayerEventReported)
9328            }
9329            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
9330                Some(Self::AtomBroadcastAudioSessionReported)
9331            }
9332            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
9333                Some(Self::AtomBroadcastAudioSyncReported)
9334            }
9335            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
9336                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
9337            }
9338            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
9339            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
9340                Some(Self::AtomHearingDeviceActiveEventReported)
9341            }
9342            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
9343                Some(Self::AtomBackportedFixStatusReported)
9344            }
9345            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
9346            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9347                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
9348            }
9349            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9350                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
9351            }
9352            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
9353            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
9354                Some(Self::AtomCarWakeupFromSuspendReported)
9355            }
9356            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
9357            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
9358                Some(Self::AtomCarCalmModeEventReported)
9359            }
9360            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
9361            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
9362                Some(Self::AtomAutofillFillRequestReported)
9363            }
9364            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
9365                Some(Self::AtomAutofillFillResponseReported)
9366            }
9367            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
9368                Some(Self::AtomAutofillSaveEventReported)
9369            }
9370            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
9371            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
9372                Some(Self::AtomAutofillFieldClassificationEventReported)
9373            }
9374            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
9375            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
9376            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
9377                Some(Self::AtomBackgroundDexoptJobEnded)
9378            }
9379            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
9380            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
9381            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
9382            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
9383            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
9384            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
9385            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
9386                Some(Self::AtomAppSearchSetSchemaStatsReported)
9387            }
9388            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
9389                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
9390            }
9391            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
9392                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
9393            }
9394            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
9395                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
9396            }
9397            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
9398                Some(Self::AtomAppSearchAppsIndexerStatsReported)
9399            }
9400            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
9401                Some(Self::AtomAppFunctionsRequestReported)
9402            }
9403            "ATOM_APEX_INSTALLATION_REQUESTED" => {
9404                Some(Self::AtomApexInstallationRequested)
9405            }
9406            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
9407            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
9408            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
9409                Some(Self::AtomAiWallpapersButtonPressed)
9410            }
9411            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
9412                Some(Self::AtomAiWallpapersTemplateSelected)
9413            }
9414            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
9415                Some(Self::AtomAiWallpapersTermSelected)
9416            }
9417            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
9418                Some(Self::AtomAiWallpapersWallpaperSet)
9419            }
9420            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
9421                Some(Self::AtomAiWallpapersSessionSummary)
9422            }
9423            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
9424                Some(Self::AtomJsscriptengineLatencyReported)
9425            }
9426            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
9427            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
9428                Some(Self::AtomAdServicesMesurementReportsUploaded)
9429            }
9430            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
9431                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
9432            }
9433            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
9434                Some(Self::AtomMobileDataDownloadDownloadResultReported)
9435            }
9436            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
9437                Some(Self::AtomAdServicesSettingsUsageReported)
9438            }
9439            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
9440                Some(Self::AtomBackgroundFetchProcessReported)
9441            }
9442            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
9443                Some(Self::AtomUpdateCustomAudienceProcessReported)
9444            }
9445            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
9446                Some(Self::AtomRunAdBiddingProcessReported)
9447            }
9448            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
9449                Some(Self::AtomRunAdScoringProcessReported)
9450            }
9451            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
9452                Some(Self::AtomRunAdSelectionProcessReported)
9453            }
9454            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
9455                Some(Self::AtomRunAdBiddingPerCaProcessReported)
9456            }
9457            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
9458                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
9459            }
9460            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
9461                Some(Self::AtomAdServicesMeasurementRegistrations)
9462            }
9463            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
9464                Some(Self::AtomAdServicesGetTopicsReported)
9465            }
9466            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
9467                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
9468            }
9469            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9470                Some(Self::AtomAdServicesEpochComputationClassifierReported)
9471            }
9472            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
9473                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
9474            }
9475            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9476                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
9477            }
9478            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
9479                Some(Self::AtomAdServicesMeasurementDebugKeys)
9480            }
9481            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
9482            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
9483                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
9484            }
9485            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
9486                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
9487            }
9488            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
9489                Some(Self::AtomAdServicesMeasurementAttribution)
9490            }
9491            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
9492                Some(Self::AtomAdServicesMeasurementJobs)
9493            }
9494            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
9495                Some(Self::AtomAdServicesMeasurementWipeout)
9496            }
9497            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
9498                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
9499            }
9500            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
9501                Some(Self::AtomAdServicesEnrollmentDataStored)
9502            }
9503            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
9504                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
9505            }
9506            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
9507                Some(Self::AtomAdServicesEnrollmentMatched)
9508            }
9509            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
9510                Some(Self::AtomAdServicesConsentMigrated)
9511            }
9512            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
9513                Some(Self::AtomAdServicesEnrollmentFailed)
9514            }
9515            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
9516                Some(Self::AtomAdServicesMeasurementClickVerification)
9517            }
9518            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
9519                Some(Self::AtomAdServicesEncryptionKeyFetched)
9520            }
9521            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
9522                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
9523            }
9524            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
9525                Some(Self::AtomDestinationRegisteredBeacons)
9526            }
9527            "ATOM_REPORT_INTERACTION_API_CALLED" => {
9528                Some(Self::AtomReportInteractionApiCalled)
9529            }
9530            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
9531                Some(Self::AtomInteractionReportingTableCleared)
9532            }
9533            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
9534                Some(Self::AtomAppManifestConfigHelperCalled)
9535            }
9536            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
9537                Some(Self::AtomAdFilteringProcessJoinCaReported)
9538            }
9539            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
9540                Some(Self::AtomAdFilteringProcessAdSelectionReported)
9541            }
9542            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
9543                Some(Self::AtomAdCounterHistogramUpdaterReported)
9544            }
9545            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
9546            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
9547                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
9548            }
9549            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
9550                Some(Self::AtomKAnonBackgroundJobStatusReported)
9551            }
9552            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
9553                Some(Self::AtomKAnonInitializeStatusReported)
9554            }
9555            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
9556            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
9557            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
9558                Some(Self::AtomKAnonKeyAttestationStatusReported)
9559            }
9560            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
9561                Some(Self::AtomGetAdSelectionDataApiCalled)
9562            }
9563            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
9564                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
9565            }
9566            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
9567                Some(Self::AtomBackgroundJobSchedulingReported)
9568            }
9569            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
9570                Some(Self::AtomTopicsEncryptionEpochComputationReported)
9571            }
9572            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
9573                Some(Self::AtomTopicsEncryptionGetTopicsReported)
9574            }
9575            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
9576                Some(Self::AtomAdservicesShellCommandCalled)
9577            }
9578            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
9579            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
9580            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
9581            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
9582            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
9583                Some(Self::AtomPersistAdSelectionResultCalled)
9584            }
9585            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
9586                Some(Self::AtomServerAuctionKeyFetchCalled)
9587            }
9588            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
9589                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
9590            }
9591            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
9592                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
9593            }
9594            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
9595                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
9596            }
9597            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
9598                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
9599            }
9600            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
9601                Some(Self::AtomReportImpressionApiCalled)
9602            }
9603            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
9604                Some(Self::AtomAdServicesEnrollmentTransactionStats)
9605            }
9606            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
9607                Some(Self::AtomAdServicesCobaltLoggerEventReported)
9608            }
9609            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
9610                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
9611            }
9612            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
9613                Some(Self::AtomUpdateSignalsProcessReported)
9614            }
9615            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
9616                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
9617            }
9618            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
9619                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
9620            }
9621            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
9622                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
9623            }
9624            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
9625                Some(
9626                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
9627                )
9628            }
9629            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
9630                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
9631            }
9632            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
9633            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
9634            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
9635                Some(Self::AtomThermalHeadroomThresholdsCalled)
9636            }
9637            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
9638                Some(Self::AtomAdpfHintSessionTidCleanup)
9639            }
9640            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
9641                Some(Self::AtomThermalHeadroomThresholds)
9642            }
9643            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
9644            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
9645                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
9646            }
9647            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
9648            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
9649                Some(Self::AtomAccessibilityCheckResultReported)
9650            }
9651            _ => None,
9652        }
9653    }
9654}
9655/// This file is named 'statsd_tracing_config.proto' rather than
9656/// 'statsd_config.proto' (which would be more consistent with the other
9657/// config protos) so it doesn't show up and confuse folks looking for
9658/// the existing statsd_config.proto for configuring statsd itself.
9659/// Same for the config proto itself.
9660#[derive(Clone, PartialEq, ::prost::Message)]
9661pub struct StatsdTracingConfig {
9662    /// This is for the common case of the atom id being known in the enum AtomId.
9663    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9664    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
9665    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
9666    /// (e.g. non-upstream atoms that don't exist in AOSP).
9667    #[prost(int32, repeated, packed = "false", tag = "2")]
9668    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
9669    #[prost(message, repeated, tag = "3")]
9670    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
9671}
9672#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9673pub struct StatsdPullAtomConfig {
9674    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9675    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9676    #[prost(int32, repeated, packed = "false", tag = "2")]
9677    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9678    #[prost(int32, optional, tag = "3")]
9679    pub pull_frequency_ms: ::core::option::Option<i32>,
9680    #[prost(string, repeated, tag = "4")]
9681    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9682}
9683/// Configuration that allows to boost the priority of the 'traced' or
9684/// 'traced_probs' processes, by changing the scheduler configuration.
9685/// Only supported on Linux and Android the boosted process must have
9686/// 'CAP_SYS_NICE' capability.
9687#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9688pub struct PriorityBoostConfig {
9689    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
9690    pub policy: ::core::option::Option<i32>,
9691    #[prost(uint32, optional, tag = "2")]
9692    pub priority: ::core::option::Option<u32>,
9693}
9694/// Nested message and enum types in `PriorityBoostConfig`.
9695pub mod priority_boost_config {
9696    #[derive(
9697        Clone,
9698        Copy,
9699        Debug,
9700        PartialEq,
9701        Eq,
9702        Hash,
9703        PartialOrd,
9704        Ord,
9705        ::prost::Enumeration
9706    )]
9707    #[repr(i32)]
9708    pub enum BoostPolicy {
9709        PolicyUnspecified = 0,
9710        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
9711        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
9712        /// than default 0, 20 is the highest priority.
9713        /// Note: this is the opposite semantic of the cmdline nice, and is done for
9714        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
9715        PolicySchedOther = 1,
9716        /// The Real-time policy, Priority range: \[1; 99\]
9717        PolicySchedFifo = 2,
9718    }
9719    impl BoostPolicy {
9720        /// String value of the enum field names used in the ProtoBuf definition.
9721        ///
9722        /// The values are not transformed in any way and thus are considered stable
9723        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9724        pub fn as_str_name(&self) -> &'static str {
9725            match self {
9726                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
9727                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
9728                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
9729            }
9730        }
9731        /// Creates an enum from field names used in the ProtoBuf definition.
9732        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9733            match value {
9734                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
9735                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
9736                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
9737                _ => None,
9738            }
9739        }
9740    }
9741}
9742/// Config for polling process-related information from /proc/pid/status and
9743/// related files on Linux.
9744///
9745/// Data source name: "linux.process_stats".
9746#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9747pub struct ProcessStatsConfig {
9748    #[prost(
9749        enumeration = "process_stats_config::Quirks",
9750        repeated,
9751        packed = "false",
9752        tag = "1"
9753    )]
9754    pub quirks: ::prost::alloc::vec::Vec<i32>,
9755    /// If enabled all processes will be scanned and dumped when the trace starts.
9756    #[prost(bool, optional, tag = "2")]
9757    pub scan_all_processes_on_start: ::core::option::Option<bool>,
9758    /// If enabled thread names are also recoded (this is redundant if sched_switch
9759    /// is enabled).
9760    #[prost(bool, optional, tag = "3")]
9761    pub record_thread_names: ::core::option::Option<bool>,
9762    /// If > 0 samples counters (see process_stats.proto) from
9763    /// /proc/pid/status and oom_score_adj every X ms.
9764    /// This is required to be > 100ms to avoid excessive CPU usage.
9765    #[prost(uint32, optional, tag = "4")]
9766    pub proc_stats_poll_ms: ::core::option::Option<u32>,
9767    /// Explicit caching period during which the polling won't re-emit identical
9768    /// counter values. This is required to be either = 0 or a multiple of
9769    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
9770    /// rounded down to the nearest multiple.
9771    #[prost(uint32, optional, tag = "6")]
9772    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
9773    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
9774    /// /proc/pid/smaps_rollup.
9775    ///
9776    /// Android: does NOT work with the system daemons by default, as it requires
9777    /// running the recording process (traced_probes or tracebox) as root. It is
9778    /// possible to avoid the root requirement, but the exact steps depend on the
9779    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
9780    /// check, and might be further covered by the procfs "hidepid" mount option.
9781    #[prost(bool, optional, tag = "10")]
9782    pub scan_smaps_rollup: ::core::option::Option<bool>,
9783    /// If true: process descriptions will include process age (starttime in
9784    /// /proc/pid/stat).
9785    /// Introduced in: perfetto v44.
9786    #[prost(bool, optional, tag = "11")]
9787    pub record_process_age: ::core::option::Option<bool>,
9788    /// If true and |proc_stats_poll_ms| is set, process stats will include time
9789    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
9790    /// Introduced in: perfetto v44.
9791    #[prost(bool, optional, tag = "12")]
9792    pub record_process_runtime: ::core::option::Option<bool>,
9793    /// If true obtain per-process dmabuf resident set size from
9794    /// /proc/pid/dmabuf_rss.
9795    /// This feature is not in upstream linux, and is available only on some
9796    /// Android kernels.
9797    #[prost(bool, optional, tag = "13")]
9798    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
9799    /// WARNING: unmaintained and deprecated. If true this will resolve file
9800    /// descriptors for each process so these can be mapped to their actual device
9801    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
9802    /// or new fds opened after initially scanning a process will not be
9803    /// recognized.
9804    #[prost(bool, optional, tag = "9")]
9805    pub resolve_process_fds: ::core::option::Option<bool>,
9806    /// If true, do *not* write a ProcessTree::Thread message for the main thread
9807    /// of a process. This was the default behaviour before perfetto v58.
9808    ///
9809    /// Added in perfetto v58.
9810    #[prost(bool, optional, tag = "14")]
9811    pub skip_main_thread_message: ::core::option::Option<bool>,
9812}
9813/// Nested message and enum types in `ProcessStatsConfig`.
9814pub mod process_stats_config {
9815    #[derive(
9816        Clone,
9817        Copy,
9818        Debug,
9819        PartialEq,
9820        Eq,
9821        Hash,
9822        PartialOrd,
9823        Ord,
9824        ::prost::Enumeration
9825    )]
9826    #[repr(i32)]
9827    pub enum Quirks {
9828        Unspecified = 0,
9829        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
9830        /// startup is now disabled by default and can be re-enabled using the
9831        /// |scan_all_processes_on_start| arg.
9832        #[deprecated]
9833        DisableInitialDump = 1,
9834        /// If set, disables the special interaction with "linux.ftrace" data source,
9835        /// where the process stats rescrapes any thread id seen in the ftrace
9836        /// stream.
9837        DisableOnDemand = 2,
9838    }
9839    impl Quirks {
9840        /// String value of the enum field names used in the ProtoBuf definition.
9841        ///
9842        /// The values are not transformed in any way and thus are considered stable
9843        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9844        pub fn as_str_name(&self) -> &'static str {
9845            match self {
9846                Self::Unspecified => "QUIRKS_UNSPECIFIED",
9847                #[allow(deprecated)]
9848                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
9849                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
9850            }
9851        }
9852        /// Creates an enum from field names used in the ProtoBuf definition.
9853        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9854            match value {
9855                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
9856                "DISABLE_INITIAL_DUMP" => {
9857                    Some(#[allow(deprecated)] Self::DisableInitialDump)
9858                }
9859                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
9860                _ => None,
9861            }
9862        }
9863    }
9864}
9865/// Configuration for go/heapprofd.
9866/// Next id: 28
9867#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9868pub struct HeapprofdConfig {
9869    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
9870    ///
9871    /// These are:
9872    /// * All heaps if heap_sampling_intervals is empty.
9873    /// * Those profiled due to all_heaps and not named in heaps if
9874    ///    heap_sampling_intervals is not empty.
9875    /// * The implicit libc.malloc heap if heaps is empty.
9876    ///
9877    /// Set to 1 for perfect accuracy.
9878    /// Otherwise, sample every sample_interval_bytes on average.
9879    ///
9880    /// See
9881    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
9882    /// for more details.
9883    ///
9884    /// BUGS
9885    /// Before Android 12, setting this to 0 would crash the target process.
9886    ///
9887    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
9888    /// this field or with heap_sampling_intervals), otherwise the producer will
9889    /// not start.
9890    #[prost(uint64, optional, tag = "1")]
9891    pub sampling_interval_bytes: ::core::option::Option<u64>,
9892    /// If less than the given numbers of bytes are left free in the shared
9893    /// memory buffer, increase sampling interval by a factor of two.
9894    /// Adaptive sampling is disabled when set to 0.
9895    #[prost(uint64, optional, tag = "24")]
9896    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
9897    /// Stop doubling the sampling_interval once the sampling interval has reached
9898    /// this value.
9899    #[prost(uint64, optional, tag = "25")]
9900    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
9901    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
9902    /// as the following section (A), and on newer versions are both (A) and (B):
9903    ///
9904    /// (A) E.g. surfaceflinger, com.android.phone
9905    /// This input is normalized in the following way: if it contains slashes,
9906    /// everything up to the last slash is discarded. If it contains "@",
9907    /// everything after the first @ is discared.
9908    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
9909    /// This transformation is also applied to the processes' command lines when
9910    /// matching.
9911    ///
9912    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
9913    /// case it is matched against running processes' command lines using glob
9914    /// semantics. If the pattern starts with '/' it is matched against the full
9915    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
9916    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
9917    /// normalized as described above.
9918    /// Wildcard patterns are supported only for profiling already-running
9919    /// processes. A config must set no_startup=true if using wildcards, or it will
9920    /// be rejected.
9921    #[prost(string, repeated, tag = "2")]
9922    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9923    /// For watermark based triggering or local debugging.
9924    #[prost(uint64, repeated, packed = "false", tag = "4")]
9925    pub pid: ::prost::alloc::vec::Vec<u64>,
9926    /// Only profile target if it was installed by one of the packages given.
9927    /// Special values are:
9928    /// * @system: installed on the system partition
9929    /// * @product: installed on the product partition
9930    /// * @null: sideloaded
9931    /// Supported on Android 12+.
9932    #[prost(string, repeated, tag = "26")]
9933    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9934    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
9935    /// "malloc".
9936    ///
9937    /// Introduced in Android 12.
9938    #[prost(string, repeated, tag = "20")]
9939    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9940    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
9941    /// combination with all_heaps;
9942    ///
9943    /// Introduced in Android 12.
9944    #[prost(string, repeated, tag = "27")]
9945    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9946    #[prost(bool, optional, tag = "23")]
9947    pub stream_allocations: ::core::option::Option<bool>,
9948    /// If given, needs to be the same length as heaps and gives the sampling
9949    /// interval for the respective entry in heaps.
9950    ///
9951    /// Otherwise, sampling_interval_bytes is used.
9952    ///
9953    /// It is recommended to set sampling_interval_bytes to a reasonable default
9954    /// value when using this, as a value of 0 for sampling_interval_bytes will
9955    /// crash the target process before Android 12.
9956    ///
9957    /// Introduced in Android 12.
9958    ///
9959    /// All values must be non-zero or the producer will not start.
9960    #[prost(uint64, repeated, packed = "false", tag = "22")]
9961    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
9962    /// Sample all heaps registered by target process. Introduced in Android 12.
9963    #[prost(bool, optional, tag = "21")]
9964    pub all_heaps: ::core::option::Option<bool>,
9965    /// Profile all processes eligible for profiling on the system.
9966    /// See
9967    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
9968    /// for which processes are eligible.
9969    ///
9970    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
9971    /// will crash when trying to launch a new process as it will have an
9972    /// unexpected open socket to heapprofd.
9973    ///
9974    /// heapprofd will likely be overloaded by the amount of data for low
9975    /// sampling intervals.
9976    #[prost(bool, optional, tag = "5")]
9977    pub all: ::core::option::Option<bool>,
9978    /// Do not profile processes whose anon RSS + swap < given value.
9979    /// Introduced in Android 11.
9980    #[prost(uint32, optional, tag = "15")]
9981    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
9982    /// Stop profile if heapprofd memory usage goes beyond the given value.
9983    /// Introduced in Android 11.
9984    #[prost(uint32, optional, tag = "16")]
9985    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
9986    /// Stop profile if heapprofd CPU time since start of this data-source
9987    /// goes beyond given value.
9988    /// Introduced in Android 11.
9989    #[prost(uint64, optional, tag = "17")]
9990    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
9991    /// Do not emit function names for mappings starting with this prefix.
9992    /// E.g. /system to not emit symbols for any system libraries.
9993    #[prost(string, repeated, tag = "7")]
9994    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9995    /// Dump at a predefined interval.
9996    #[prost(message, optional, tag = "6")]
9997    pub continuous_dump_config: ::core::option::Option<
9998        heapprofd_config::ContinuousDumpConfig,
9999    >,
10000    /// Size of the shared memory buffer between the profiled processes and
10001    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
10002    /// MiB.
10003    ///
10004    /// Needs to be:
10005    /// * at least 8192,
10006    /// * a power of two,
10007    /// * a multiple of 4096.
10008    #[prost(uint64, optional, tag = "8")]
10009    pub shmem_size_bytes: ::core::option::Option<u64>,
10010    /// When the shmem buffer is full, block the client instead of ending the
10011    /// trace. Use with caution as this will significantly slow down the target
10012    /// process.
10013    #[prost(bool, optional, tag = "9")]
10014    pub block_client: ::core::option::Option<bool>,
10015    /// If set, stop the trace session after blocking the client for this
10016    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
10017    /// Introduced in Android 11.
10018    #[prost(uint32, optional, tag = "14")]
10019    pub block_client_timeout_us: ::core::option::Option<u32>,
10020    /// Do not profile processes from startup, only match already running
10021    /// processes.
10022    ///
10023    /// Can not be set at the same time as no_running.
10024    /// Introduced in Android 11.
10025    #[prost(bool, optional, tag = "10")]
10026    pub no_startup: ::core::option::Option<bool>,
10027    /// Do not profile running processes. Only match processes on startup.
10028    ///
10029    /// Can not be set at the same time as no_startup.
10030    /// Introduced in Android 11.
10031    #[prost(bool, optional, tag = "11")]
10032    pub no_running: ::core::option::Option<bool>,
10033    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
10034    /// at the point in time when the sampled heap usage of the process was at its
10035    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
10036    /// self_allocated and self_freed to not be set.
10037    /// Introduced in Android 11.
10038    #[prost(bool, optional, tag = "13")]
10039    pub dump_at_max: ::core::option::Option<bool>,
10040    /// Escape hatch if the session is being torn down because of a forked child
10041    /// that shares memory space, but is not correctly identified as a vforked
10042    /// child.
10043    /// Introduced in Android 11.
10044    #[prost(bool, optional, tag = "18")]
10045    pub disable_fork_teardown: ::core::option::Option<bool>,
10046    /// We try to automatically detect when a target applicatation vforks but then
10047    /// does a memory allocation (or free). This auto-detection can be disabled
10048    /// with this.
10049    /// Introduced in Android 11.
10050    #[prost(bool, optional, tag = "19")]
10051    pub disable_vfork_detection: ::core::option::Option<bool>,
10052}
10053/// Nested message and enum types in `HeapprofdConfig`.
10054pub mod heapprofd_config {
10055    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10056    pub struct ContinuousDumpConfig {
10057        /// ms to wait before first dump.
10058        #[prost(uint32, optional, tag = "5")]
10059        pub dump_phase_ms: ::core::option::Option<u32>,
10060        /// ms to wait between following dumps.
10061        #[prost(uint32, optional, tag = "6")]
10062        pub dump_interval_ms: ::core::option::Option<u32>,
10063    }
10064}
10065/// Config for the "linux.smaps" data source, describes one-shot or periodic
10066/// /proc/pid/smaps collection.
10067///
10068/// A valid config must specify at least one |target_cmdline| or |target_uid|.
10069/// Example:
10070///
10071/// data_sources {
10072///    config {
10073///      name: "linux.smaps"
10074///      process_smaps_config {
10075///        scope {
10076///          target_cmdline: "top"
10077///          target_cmdline: "tmux"
10078///        }
10079///      }
10080///    }
10081/// }
10082#[derive(Clone, PartialEq, ::prost::Message)]
10083pub struct ProcessSmapsConfig {
10084    /// Which fields to record per process.
10085    /// If unset, defaults to {size, rss, anon, swap}, aggregated by path name.
10086    #[prost(message, optional, tag = "1")]
10087    pub smaps_config: ::core::option::Option<SmapsConfig>,
10088    #[prost(message, optional, tag = "2")]
10089    pub scope: ::core::option::Option<process_smaps_config::Scope>,
10090    /// How often to recapture the smaps, including re-evaluating which processes
10091    /// match the |scope|. May be overridden by the implementation (at the time of
10092    /// writing, \[1s, 24hr\] range).
10093    /// If zero or unset, each process is captured only once at start.
10094    #[prost(uint32, optional, tag = "3")]
10095    pub read_period_ms: ::core::option::Option<u32>,
10096    /// Caps the number of processes handled per |read_period_ms|, or overall if
10097    /// the config is one-shot (period = 0). The immediate use case is to limit
10098    /// work if too many processes match the |scope|.
10099    /// Additionally, this option can be used for sampling, since the
10100    /// implementation inspects processes in a shuffled order (not in numeric pid
10101    /// order), and successive periods cover separate subsets of pids.
10102    /// So a config with scope=*, period=10s, and max_processes=5 would
10103    /// progressively scan all processes on the machine by parsing 5 processes at
10104    /// a time with 10s breaks in between.
10105    /// If zero or unset, there is no limit.
10106    #[prost(uint32, optional, tag = "4")]
10107    pub max_processes_per_period: ::core::option::Option<u32>,
10108}
10109/// Nested message and enum types in `ProcessSmapsConfig`.
10110pub mod process_smaps_config {
10111    /// Which processes to record. At least one field must be set.
10112    /// Multiples of the same option (e.g. target_cmdline) are ORed.
10113    /// Different options are ANDed, skipping fields that are unset.
10114    #[derive(Clone, PartialEq, ::prost::Message)]
10115    pub struct Scope {
10116        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10117        /// comm string).
10118        ///
10119        /// This field can specify a single wildcard (*), and the profiler will
10120        /// attempt to match it in two possible ways:
10121        /// * if the pattern starts with a '/', then it is matched against the first
10122        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10123        ///    "/bin/echo".
10124        /// * otherwise the pattern is matched against the part of argv0
10125        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10126        ///    For example "echo" would match "/bin/echo".
10127        ///
10128        /// Implementation note: at most 511 characters of cmdline are considered.
10129        #[prost(string, repeated, tag = "1")]
10130        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10131        #[prost(message, repeated, tag = "2")]
10132        pub target_uid: ::prost::alloc::vec::Vec<scope::UidRange>,
10133    }
10134    /// Nested message and enum types in `Scope`.
10135    pub mod scope {
10136        /// Range of UIDs.
10137        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10138        pub struct UidRange {
10139            /// inclusive, must be set
10140            #[prost(uint32, optional, tag = "1")]
10141            pub min_uid: ::core::option::Option<u32>,
10142            /// inclusive, must be set
10143            #[prost(uint32, optional, tag = "2")]
10144            pub max_uid: ::core::option::Option<u32>,
10145            /// Android: if true, compare the UID modulo the per-user/profile offset
10146            /// (AID_USER_OFFSET, 100000).
10147            #[prost(bool, optional, tag = "3")]
10148            pub android_match_across_profiles: ::core::option::Option<bool>,
10149        }
10150    }
10151}
10152/// Describes what to record from /proc/pid/smaps.
10153#[derive(Clone, PartialEq, ::prost::Message)]
10154pub struct SmapsConfig {
10155    /// Set of fields to collect.
10156    /// If unset, defaults to: size, rss, anonymous, swap.
10157    #[prost(
10158        enumeration = "smaps_config::VmaField",
10159        repeated,
10160        packed = "false",
10161        tag = "1"
10162    )]
10163    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
10164    /// If false, mappings are aggregated by their path name.
10165    /// If true, each mapping is serialised separately.
10166    #[prost(bool, optional, tag = "2")]
10167    pub unaggregated: ::core::option::Option<bool>,
10168    /// Optional ordered list of redaction rules for the name of the mapping.
10169    /// Note that all mappings will still be emitted, these rules only affect the
10170    /// emitted name.
10171    /// If unset, all names are written as is.
10172    /// If set, the first matching rule decides on the action.
10173    /// If no rules match, the name is written as is.
10174    #[prost(message, repeated, tag = "3")]
10175    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
10176}
10177/// Nested message and enum types in `SmapsConfig`.
10178pub mod smaps_config {
10179    #[derive(
10180        Clone,
10181        Copy,
10182        Debug,
10183        PartialEq,
10184        Eq,
10185        Hash,
10186        PartialOrd,
10187        Ord,
10188        ::prost::Enumeration
10189    )]
10190    #[repr(i32)]
10191    pub enum VmaField {
10192        Unknown = 0,
10193        Size = 1,
10194        Rss = 2,
10195        Anonymous = 3,
10196        Swap = 4,
10197        SharedClean = 5,
10198        SharedDirty = 6,
10199        PrivateClean = 7,
10200        PrivateDirty = 8,
10201        Locked = 9,
10202        Pss = 10,
10203        PssDirty = 11,
10204        SwapPss = 12,
10205    }
10206    impl VmaField {
10207        /// String value of the enum field names used in the ProtoBuf definition.
10208        ///
10209        /// The values are not transformed in any way and thus are considered stable
10210        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10211        pub fn as_str_name(&self) -> &'static str {
10212            match self {
10213                Self::Unknown => "VMA_FIELD_UNKNOWN",
10214                Self::Size => "VMA_FIELD_SIZE",
10215                Self::Rss => "VMA_FIELD_RSS",
10216                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
10217                Self::Swap => "VMA_FIELD_SWAP",
10218                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
10219                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
10220                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
10221                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
10222                Self::Locked => "VMA_FIELD_LOCKED",
10223                Self::Pss => "VMA_FIELD_PSS",
10224                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
10225                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
10226            }
10227        }
10228        /// Creates an enum from field names used in the ProtoBuf definition.
10229        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10230            match value {
10231                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
10232                "VMA_FIELD_SIZE" => Some(Self::Size),
10233                "VMA_FIELD_RSS" => Some(Self::Rss),
10234                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
10235                "VMA_FIELD_SWAP" => Some(Self::Swap),
10236                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
10237                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
10238                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
10239                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
10240                "VMA_FIELD_LOCKED" => Some(Self::Locked),
10241                "VMA_FIELD_PSS" => Some(Self::Pss),
10242                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
10243                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
10244                _ => None,
10245            }
10246        }
10247    }
10248}
10249#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10250pub struct RedactionRule {
10251    /// The pattern to match against.
10252    #[prost(string, optional, tag = "1")]
10253    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
10254    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
10255    pub match_mode: ::core::option::Option<i32>,
10256    /// If the pattern matches, keep the entire name. In other words, do not
10257    /// redact. This option exists since the rules are evaluated in order, so a
10258    /// more specific allow rule with keep_full can match before a more general
10259    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
10260    /// |keep_path_elements|.
10261    #[prost(bool, optional, tag = "3")]
10262    pub keep_full: ::core::option::Option<bool>,
10263    /// If the pattern matches, replace the name with this string (defaulting to
10264    /// <pf_redacted> if unset). The final emitted name might be further augmented
10265    /// by the options below keeping parts of the original name.
10266    #[prost(string, optional, tag = "4")]
10267    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
10268    /// If the pattern matches, keep the file extension, if any.
10269    /// Can be combined with |keep_path_elements|.
10270    #[prost(bool, optional, tag = "5")]
10271    pub keep_file_extension: ::core::option::Option<bool>,
10272    /// If the pattern matches, keep the first N path elements (as separated by
10273    /// '/'). If the name is not a path, this option does nothing. Can be combined
10274    /// with |keep_file_extension|.
10275    #[prost(uint32, optional, tag = "6")]
10276    pub keep_path_elements: ::core::option::Option<u32>,
10277}
10278/// Nested message and enum types in `RedactionRule`.
10279pub mod redaction_rule {
10280    /// How to match |pattern| against the name of the mapping.
10281    /// Note for future extensions: unrecognised enums are treated as always
10282    /// matching.
10283    #[derive(
10284        Clone,
10285        Copy,
10286        Debug,
10287        PartialEq,
10288        Eq,
10289        Hash,
10290        PartialOrd,
10291        Ord,
10292        ::prost::Enumeration
10293    )]
10294    #[repr(i32)]
10295    pub enum MatchMode {
10296        Unknown = 0,
10297        /// The pattern matches if it is a prefix of the mapping name.
10298        Prefix = 1,
10299        /// The pattern is matched against the mapping name as a pathname glob
10300        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
10301        /// The key distinction is that path separators in the name are *not* matched
10302        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
10303        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
10304        /// Note: any "(deleted)" suffix is excluded before matching.
10305        GlobPath = 2,
10306        /// The pattern is matched against the mapping name without special-casing
10307        /// path separators. So a pattern of the form "/usr/*/llvm" would match
10308        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
10309        /// Note: any "(deleted)" suffix is excluded before matching.
10310        GlobString = 3,
10311    }
10312    impl MatchMode {
10313        /// String value of the enum field names used in the ProtoBuf definition.
10314        ///
10315        /// The values are not transformed in any way and thus are considered stable
10316        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10317        pub fn as_str_name(&self) -> &'static str {
10318            match self {
10319                Self::Unknown => "MATCH_MODE_UNKNOWN",
10320                Self::Prefix => "MATCH_MODE_PREFIX",
10321                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
10322                Self::GlobString => "MATCH_MODE_GLOB_STRING",
10323            }
10324        }
10325        /// Creates an enum from field names used in the ProtoBuf definition.
10326        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10327            match value {
10328                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
10329                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
10330                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
10331                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
10332                _ => None,
10333            }
10334        }
10335    }
10336}
10337/// Configuration for managed app heap graph snapshots.
10338#[derive(Clone, PartialEq, ::prost::Message)]
10339pub struct JavaHprofConfig {
10340    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10341    /// comm string). The semantics of this field were changed since its original
10342    /// introduction.
10343    ///
10344    /// On Android T+ (13+), this field can specify a single wildcard (*), and
10345    /// the profiler will attempt to match it in two possible ways:
10346    /// * if the pattern starts with a '/', then it is matched against the first
10347    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10348    ///    "/bin/echo".
10349    /// * otherwise the pattern is matched against the part of argv0
10350    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10351    ///    For example "echo" would match "/bin/echo".
10352    ///
10353    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10354    /// normalized prior to an exact string comparison. Normalization is as
10355    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10356    /// the string contains forward slashes, trim everything up to and including
10357    /// the last one.
10358    ///
10359    /// Implementation note: in either case, at most 511 characters of cmdline
10360    /// are considered.
10361    #[prost(string, repeated, tag = "1")]
10362    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10363    /// For watermark based triggering or local debugging.
10364    #[prost(uint64, repeated, packed = "false", tag = "2")]
10365    pub pid: ::prost::alloc::vec::Vec<u64>,
10366    /// Only profile target if it was installed by one of the packages given.
10367    /// Special values are:
10368    /// * @system: installed on the system partition
10369    /// * @product: installed on the product partition
10370    /// * @null: sideloaded
10371    /// Supported on Android 12+.
10372    #[prost(string, repeated, tag = "7")]
10373    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10374    /// Dump at a predefined interval.
10375    #[prost(message, optional, tag = "3")]
10376    pub continuous_dump_config: ::core::option::Option<
10377        java_hprof_config::ContinuousDumpConfig,
10378    >,
10379    /// Do not profile processes whose anon RSS + swap < given value.
10380    #[prost(uint32, optional, tag = "4")]
10381    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
10382    /// Do not profile processes whose Java heap size < given value.
10383    #[prost(uint32, optional, tag = "9")]
10384    pub min_java_heap_size_kb: ::core::option::Option<u32>,
10385    /// Include the process' /proc/self/smaps.
10386    /// This only shows maps that:
10387    /// * start with /system
10388    /// * start with /vendor
10389    /// * start with /data/app
10390    /// * contain "extracted in memory from Y", where Y matches any of the above
10391    ///
10392    /// Superseded by |smaps_config| in perfetto v58+.
10393    #[prost(bool, optional, tag = "5")]
10394    pub dump_smaps: ::core::option::Option<bool>,
10395    /// If set, include /proc/self/smaps memory mappings.
10396    ///
10397    /// Added in perfetto v58.
10398    #[prost(message, optional, tag = "8")]
10399    pub smaps_config: ::core::option::Option<SmapsConfig>,
10400    /// Exclude objects of the following types from the profile. This can be
10401    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
10402    #[prost(string, repeated, tag = "6")]
10403    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10404    /// Dump the callsite of the thread triggering the OutOfMemoryError.
10405    /// Only applicable to OutOfMemoryError heap dumps
10406    #[prost(bool, optional, tag = "10")]
10407    pub dump_oome_callstack: ::core::option::Option<bool>,
10408}
10409/// Nested message and enum types in `JavaHprofConfig`.
10410pub mod java_hprof_config {
10411    /// If dump_interval_ms != 0, the following configuration is used.
10412    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10413    pub struct ContinuousDumpConfig {
10414        /// ms to wait before first continuous dump.
10415        /// A dump is always created at the beginning of the trace.
10416        #[prost(uint32, optional, tag = "1")]
10417        pub dump_phase_ms: ::core::option::Option<u32>,
10418        /// ms to wait between following dumps.
10419        #[prost(uint32, optional, tag = "2")]
10420        pub dump_interval_ms: ::core::option::Option<u32>,
10421        /// If true, scans all the processes to find `process_cmdline` and filter by
10422        /// `min_anonymous_memory_kb` only at data source start. Default on Android
10423        /// S-.
10424        ///
10425        /// If false, rescans all the processes to find on every dump. Default on
10426        /// Android T+.
10427        #[prost(bool, optional, tag = "3")]
10428        pub scan_pids_only_on_start: ::core::option::Option<bool>,
10429    }
10430}
10431#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10432pub struct PerfEvents {}
10433/// Nested message and enum types in `PerfEvents`.
10434pub mod perf_events {
10435    /// The primary event to count. If recording multiple events, this
10436    /// counter is the "group leader".
10437    /// Commented from the perspective of its use in |PerfEventConfig|.
10438    /// Next id: 13
10439    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10440    pub struct Timebase {
10441        /// Optional modifiers for the event. Modelled after the perftool's
10442        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
10443        /// Currently supported: count scoping such as :u, :k, :uk, ...
10444        /// Modifiers can differ between the timebase and followers.
10445        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
10446        pub modifiers: ::prost::alloc::vec::Vec<i32>,
10447        /// If set, samples will be timestamped with the given clock.
10448        /// If unset, the clock is chosen by the implementation.
10449        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
10450        /// used for hardware events (due to interrupt safety), for which the
10451        /// recommendation is to use one of the monotonic clocks.
10452        #[prost(enumeration = "PerfClock", optional, tag = "11")]
10453        pub timestamp_clock: ::core::option::Option<i32>,
10454        /// Optional arbitrary name for the event, to identify it in the parsed
10455        /// trace. Does *not* affect the profiling itself. If unset, the trace
10456        /// parser will choose a suitable name.
10457        #[prost(string, optional, tag = "10")]
10458        pub name: ::core::option::Option<::prost::alloc::string::String>,
10459        /// How often to snapshot the counter, along with any follower events and
10460        /// any additional sampled data such as callstacks.
10461        ///
10462        /// This choice also controls how the readings are taken:
10463        /// * With |frequency| or |period|, samples are taken by the kernel
10464        ///    into a ring buffer. Analogous to `perf record`.
10465        /// * With |poll_period_ms|, the userspace periodically snapshots
10466        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10467        /// Prefer the sampling options unless you're recording PMUs whose
10468        /// perf drivers only support the reading mode.
10469        ///
10470        /// If unset, an implementation-defined sampling default is used.
10471        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
10472        pub interval: ::core::option::Option<timebase::Interval>,
10473        /// Counting event to use as the timebase.
10474        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10475        /// which is what you usually want.
10476        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
10477        pub event: ::core::option::Option<timebase::Event>,
10478    }
10479    /// Nested message and enum types in `Timebase`.
10480    pub mod timebase {
10481        /// How often to snapshot the counter, along with any follower events and
10482        /// any additional sampled data such as callstacks.
10483        ///
10484        /// This choice also controls how the readings are taken:
10485        /// * With |frequency| or |period|, samples are taken by the kernel
10486        ///    into a ring buffer. Analogous to `perf record`.
10487        /// * With |poll_period_ms|, the userspace periodically snapshots
10488        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10489        /// Prefer the sampling options unless you're recording PMUs whose
10490        /// perf drivers only support the reading mode.
10491        ///
10492        /// If unset, an implementation-defined sampling default is used.
10493        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
10494        pub enum Interval {
10495            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
10496            /// same as 1/period.
10497            /// Details: the actual sampling will still be based on a period, but the
10498            /// kernel will dynamically adjust it based on the observed event rate, to
10499            /// approximate this frequency. Works best with steady-rate events like
10500            /// timers.
10501            /// Not guaranteed to be honored as the kernel can throttle the sampling
10502            /// rate if it's too high.
10503            #[prost(uint64, tag = "2")]
10504            Frequency(u64),
10505            /// Per-cpu sampling will occur every |period| counts of |event|.
10506            /// Prefer |frequency| by default, as it's easier to oversample with a
10507            /// fixed period.
10508            /// Not guaranteed to be honored as the kernel can throttle the sampling
10509            /// rate if it's too high.
10510            #[prost(uint64, tag = "1")]
10511            Period(u64),
10512            /// Per-cpu values are read by the userspace every interval. If using this
10513            /// mode, only follower events are supported. Options such as
10514            /// |PerfEventConfig.CallstackSampling| are incompatible.
10515            /// The period can't be guaranteed to be exact since the readings are taken
10516            /// by userspace.
10517            #[prost(uint32, tag = "6")]
10518            PollPeriodMs(u32),
10519        }
10520        /// Counting event to use as the timebase.
10521        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10522        /// which is what you usually want.
10523        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10524        pub enum Event {
10525            #[prost(enumeration = "super::Counter", tag = "4")]
10526            Counter(i32),
10527            #[prost(message, tag = "3")]
10528            Tracepoint(super::Tracepoint),
10529            #[prost(message, tag = "5")]
10530            RawEvent(super::RawEvent),
10531        }
10532    }
10533    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10534    pub struct Tracepoint {
10535        /// Group and name for the tracepoint, acceptable forms:
10536        /// * "sched/sched_switch"
10537        /// * "sched:sched_switch"
10538        #[prost(string, optional, tag = "1")]
10539        pub name: ::core::option::Option<::prost::alloc::string::String>,
10540        /// Optional field-level filter for the tracepoint. Only events matching this
10541        /// filter will be counted (and therefore contribute to the sampling period).
10542        /// Example: "prev_pid >= 42 && next_pid == 0".
10543        /// For full syntax, see kernel documentation on "Event filtering":
10544        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
10545        #[prost(string, optional, tag = "2")]
10546        pub filter: ::core::option::Option<::prost::alloc::string::String>,
10547    }
10548    /// Syscall-level description of the event, propagated to the perf_event_attr
10549    /// struct. Primarily for local use-cases, since the event availability and
10550    /// encoding is hardware-specific.
10551    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10552    pub struct RawEvent {
10553        /// Either |type| or |pmu_name| can be set.
10554        #[prost(uint32, optional, tag = "1")]
10555        pub r#type: ::core::option::Option<u32>,
10556        #[prost(uint64, optional, tag = "2")]
10557        pub config: ::core::option::Option<u64>,
10558        #[prost(uint64, optional, tag = "3")]
10559        pub config1: ::core::option::Option<u64>,
10560        #[prost(uint64, optional, tag = "4")]
10561        pub config2: ::core::option::Option<u64>,
10562        /// The name of a dynamic PMU under /sys/bus/event_source/devices
10563        /// (e.g. "armv8_pmuv3").
10564        /// If set, leave |type| unset.
10565        /// Android: the relevant sysfs paths are not allowlisted by default, so
10566        /// this option will require a rooted device with selinux disabled.
10567        #[prost(string, optional, tag = "5")]
10568        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
10569    }
10570    /// Builtin counter names from the uapi header. Commented with their perf tool
10571    /// aliases.
10572    /// TODO(rsavitski): consider generating enums for cache events (should be
10573    /// finite), and generally make this list as extensive as possible. Excluding
10574    /// things like dynamic PMUs since those don't fit into a static enum.
10575    /// Next id: 21
10576    #[derive(
10577        Clone,
10578        Copy,
10579        Debug,
10580        PartialEq,
10581        Eq,
10582        Hash,
10583        PartialOrd,
10584        Ord,
10585        ::prost::Enumeration
10586    )]
10587    #[repr(i32)]
10588    pub enum Counter {
10589        UnknownCounter = 0,
10590        /// cpu-clock
10591        SwCpuClock = 1,
10592        /// page-faults, faults
10593        SwPageFaults = 2,
10594        /// task-clock
10595        SwTaskClock = 3,
10596        /// context-switches, cs
10597        SwContextSwitches = 4,
10598        /// cpu-migrations, migrations
10599        SwCpuMigrations = 5,
10600        /// minor-faults
10601        SwPageFaultsMin = 6,
10602        /// major-faults
10603        SwPageFaultsMaj = 7,
10604        /// alignment-faults
10605        SwAlignmentFaults = 8,
10606        /// emulation-faults
10607        SwEmulationFaults = 9,
10608        /// dummy
10609        SwDummy = 20,
10610        /// cpu-cycles, cycles
10611        HwCpuCycles = 10,
10612        /// instructions
10613        HwInstructions = 11,
10614        /// cache-references
10615        HwCacheReferences = 12,
10616        /// cache-misses
10617        HwCacheMisses = 13,
10618        /// branch-instructions, branches
10619        HwBranchInstructions = 14,
10620        /// branch-misses
10621        HwBranchMisses = 15,
10622        /// bus-cycles
10623        HwBusCycles = 16,
10624        /// stalled-cycles-frontend, idle-cycles-frontend
10625        HwStalledCyclesFrontend = 17,
10626        /// stalled-cycles-backend, idle-cycles-backend
10627        HwStalledCyclesBackend = 18,
10628        /// ref-cycles
10629        HwRefCpuCycles = 19,
10630    }
10631    impl Counter {
10632        /// String value of the enum field names used in the ProtoBuf definition.
10633        ///
10634        /// The values are not transformed in any way and thus are considered stable
10635        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10636        pub fn as_str_name(&self) -> &'static str {
10637            match self {
10638                Self::UnknownCounter => "UNKNOWN_COUNTER",
10639                Self::SwCpuClock => "SW_CPU_CLOCK",
10640                Self::SwPageFaults => "SW_PAGE_FAULTS",
10641                Self::SwTaskClock => "SW_TASK_CLOCK",
10642                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
10643                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
10644                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
10645                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
10646                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
10647                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
10648                Self::SwDummy => "SW_DUMMY",
10649                Self::HwCpuCycles => "HW_CPU_CYCLES",
10650                Self::HwInstructions => "HW_INSTRUCTIONS",
10651                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
10652                Self::HwCacheMisses => "HW_CACHE_MISSES",
10653                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
10654                Self::HwBranchMisses => "HW_BRANCH_MISSES",
10655                Self::HwBusCycles => "HW_BUS_CYCLES",
10656                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
10657                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
10658                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
10659            }
10660        }
10661        /// Creates an enum from field names used in the ProtoBuf definition.
10662        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10663            match value {
10664                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
10665                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
10666                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
10667                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
10668                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
10669                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
10670                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
10671                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
10672                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
10673                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
10674                "SW_DUMMY" => Some(Self::SwDummy),
10675                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
10676                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
10677                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
10678                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
10679                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
10680                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
10681                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
10682                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
10683                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
10684                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
10685                _ => None,
10686            }
10687        }
10688    }
10689    /// Subset of clocks that is supported by perf timestamping.
10690    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
10691    /// would require additions to the trace clock synchronisation logic.
10692    #[derive(
10693        Clone,
10694        Copy,
10695        Debug,
10696        PartialEq,
10697        Eq,
10698        Hash,
10699        PartialOrd,
10700        Ord,
10701        ::prost::Enumeration
10702    )]
10703    #[repr(i32)]
10704    pub enum PerfClock {
10705        UnknownPerfClock = 0,
10706        Realtime = 1,
10707        Monotonic = 2,
10708        MonotonicRaw = 3,
10709        Boottime = 4,
10710    }
10711    impl PerfClock {
10712        /// String value of the enum field names used in the ProtoBuf definition.
10713        ///
10714        /// The values are not transformed in any way and thus are considered stable
10715        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10716        pub fn as_str_name(&self) -> &'static str {
10717            match self {
10718                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
10719                Self::Realtime => "PERF_CLOCK_REALTIME",
10720                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
10721                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
10722                Self::Boottime => "PERF_CLOCK_BOOTTIME",
10723            }
10724        }
10725        /// Creates an enum from field names used in the ProtoBuf definition.
10726        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10727            match value {
10728                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
10729                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
10730                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
10731                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
10732                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
10733                _ => None,
10734            }
10735        }
10736    }
10737    #[derive(
10738        Clone,
10739        Copy,
10740        Debug,
10741        PartialEq,
10742        Eq,
10743        Hash,
10744        PartialOrd,
10745        Ord,
10746        ::prost::Enumeration
10747    )]
10748    #[repr(i32)]
10749    pub enum EventModifier {
10750        UnknownEventModifier = 0,
10751        /// count only while in userspace
10752        CountUserspace = 1,
10753        /// count only while in kernel
10754        CountKernel = 2,
10755        /// count only while in hypervisor
10756        CountHypervisor = 3,
10757    }
10758    impl EventModifier {
10759        /// String value of the enum field names used in the ProtoBuf definition.
10760        ///
10761        /// The values are not transformed in any way and thus are considered stable
10762        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10763        pub fn as_str_name(&self) -> &'static str {
10764            match self {
10765                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
10766                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
10767                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
10768                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
10769            }
10770        }
10771        /// Creates an enum from field names used in the ProtoBuf definition.
10772        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10773            match value {
10774                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
10775                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
10776                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
10777                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
10778                _ => None,
10779            }
10780        }
10781    }
10782}
10783/// Additional events associated with a leader.
10784/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
10785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10786pub struct FollowerEvent {
10787    /// Modifiers can differ between the timebase and followers.
10788    #[prost(
10789        enumeration = "perf_events::EventModifier",
10790        repeated,
10791        packed = "false",
10792        tag = "5"
10793    )]
10794    pub modifiers: ::prost::alloc::vec::Vec<i32>,
10795    /// Optional arbitrary name for the event, to identify it in the parsed
10796    /// trace. Does *not* affect the profiling itself. If unset, the trace
10797    /// parser will choose a suitable name.
10798    #[prost(string, optional, tag = "4")]
10799    pub name: ::core::option::Option<::prost::alloc::string::String>,
10800    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
10801    pub event: ::core::option::Option<follower_event::Event>,
10802}
10803/// Nested message and enum types in `FollowerEvent`.
10804pub mod follower_event {
10805    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10806    pub enum Event {
10807        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
10808        Counter(i32),
10809        #[prost(message, tag = "2")]
10810        Tracepoint(super::perf_events::Tracepoint),
10811        #[prost(message, tag = "3")]
10812        RawEvent(super::perf_events::RawEvent),
10813    }
10814}
10815/// Configuration for the traced_perf profiler.
10816///
10817/// Example config for basic cpu profiling:
10818///    perf_event_config {
10819///      timebase {
10820///        frequency: 80
10821///      }
10822///      callstack_sampling {
10823///        scope {
10824///          target_cmdline: "surfaceflinger"
10825///          target_cmdline: "system_server"
10826///        }
10827///        kernel_frames: true
10828///      }
10829///    }
10830///
10831/// Next id: 23
10832#[derive(Clone, PartialEq, ::prost::Message)]
10833pub struct PerfEventConfig {
10834    /// What event to sample on, and how often.
10835    /// Defined in common/perf_events.proto.
10836    #[prost(message, optional, tag = "15")]
10837    pub timebase: ::core::option::Option<perf_events::Timebase>,
10838    /// Other events associated with the leader described in the timebase.
10839    #[prost(message, repeated, tag = "19")]
10840    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
10841    /// If set, the profiler will sample userspace processes' callstacks at the
10842    /// interval specified by the |timebase|.
10843    /// If unset, the profiler will record only the event counts.
10844    #[prost(message, optional, tag = "16")]
10845    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
10846    /// List of cpu indices for counting. If empty, the default is all cpus.
10847    ///
10848    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
10849    /// counter-only traces. A future change will likely reorganise the options,
10850    /// but this field will continue to be supported.
10851    ///
10852    /// Available since: perfetto v50.
10853    #[prost(uint32, repeated, packed = "false", tag = "20")]
10854    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
10855    /// Allow failure of perf_event_open
10856    #[prost(bool, optional, tag = "21")]
10857    pub ignore_open_failure: ::core::option::Option<bool>,
10858    /// If not empty, consider only CPUs whose CPUID matches one of these values.
10859    #[prost(string, repeated, tag = "22")]
10860    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10861    /// How often the per-cpu ring buffers are read by the producer.
10862    /// If unset, an implementation-defined default is used.
10863    #[prost(uint32, optional, tag = "8")]
10864    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
10865    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
10866    /// kernel. If set, must be a power of two.
10867    /// If unset, an implementation-defined default is used.
10868    #[prost(uint32, optional, tag = "3")]
10869    pub ring_buffer_pages: ::core::option::Option<u32>,
10870    /// Drop samples if the heap memory held by the samples in the unwinder queue
10871    /// is above the given limit. This counts the memory across all concurrent data
10872    /// sources (not just this one's), and there is no fairness guarantee - the
10873    /// whole quota might be used up by a concurrent source.
10874    #[prost(uint64, optional, tag = "17")]
10875    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
10876    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
10877    /// footprint exceeds this value.
10878    #[prost(uint32, optional, tag = "13")]
10879    pub max_daemon_memory_kb: ::core::option::Option<u32>,
10880    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
10881    /// sampled process. This is primarily for Android, where this lookup is
10882    /// asynchronous. As long as the producer is waiting, the associated samples
10883    /// will be kept enqueued (putting pressure on the capacity of the shared
10884    /// unwinding queue). Once a lookup for a process expires, all associated
10885    /// samples are discarded. However, if the lookup still succeeds after the
10886    /// timeout, future samples will be handled normally.
10887    /// If unset, an implementation-defined default is used.
10888    #[prost(uint32, optional, tag = "9")]
10889    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
10890    /// Optional period for clearing state cached by the userspace unwinder. This
10891    /// is a heavy operation that is only necessary for traces that target a wide
10892    /// set of processes, and require the memory footprint to be reset
10893    /// periodically. To effectively disable the cache clearing, set to a value
10894    /// greater than your trace duration.
10895    ///
10896    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
10897    ///
10898    /// If zero or unset:
10899    /// * before perfetto v52: no cache clearing.
10900    /// * perfetto v52+: implementation chooses an infrequent default.
10901    #[prost(uint32, optional, tag = "10")]
10902    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
10903    /// If set, only profile target if it was installed by a package with one of
10904    /// these names. Special values:
10905    /// * "@system": installed on the system partition
10906    /// * "@product": installed on the product partition
10907    /// * "@null": sideloaded
10908    /// Supported on Android 12+.
10909    #[prost(string, repeated, tag = "18")]
10910    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10911    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
10912    /// We rely on this to detect such configs.
10913    #[prost(bool, optional, tag = "1")]
10914    pub all_cpus: ::core::option::Option<bool>,
10915    #[prost(uint32, optional, tag = "2")]
10916    pub sampling_frequency: ::core::option::Option<u32>,
10917    #[prost(bool, optional, tag = "12")]
10918    pub kernel_frames: ::core::option::Option<bool>,
10919    #[prost(int32, repeated, packed = "false", tag = "4")]
10920    pub target_pid: ::prost::alloc::vec::Vec<i32>,
10921    #[prost(string, repeated, tag = "5")]
10922    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10923    #[prost(int32, repeated, packed = "false", tag = "6")]
10924    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10925    #[prost(string, repeated, tag = "7")]
10926    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10927    #[prost(uint32, optional, tag = "11")]
10928    pub additional_cmdline_count: ::core::option::Option<u32>,
10929}
10930/// Nested message and enum types in `PerfEventConfig`.
10931pub mod perf_event_config {
10932    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10933    pub struct CallstackSampling {
10934        /// Defines a set of processes for which samples are retained/skipped. If
10935        /// unset, all samples are kept, but beware that it will be very heavy on the
10936        /// stack unwinder, which might start dropping samples due to overload.
10937        #[prost(message, optional, tag = "1")]
10938        pub scope: ::core::option::Option<Scope>,
10939        /// If true, callstacks will include the kernel-space frames. Such frames can
10940        /// be identified by a magical "kernel" string as their mapping name.
10941        /// Requires traced_perf to be running as root, or kptr_restrict to have been
10942        /// manually unrestricted. On Android, the platform should do the right thing
10943        /// on debug builds.
10944        /// This does *not* disclose KASLR, as only the function names are emitted.
10945        #[prost(bool, optional, tag = "2")]
10946        pub kernel_frames: ::core::option::Option<bool>,
10947        /// Whether to record and unwind userspace callstacks. If unset, defaults to
10948        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
10949        /// as the most common default (this defaulting is only applicable if the
10950        /// outer CallstackSampling message is explicitly set).
10951        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
10952        pub user_frames: ::core::option::Option<i32>,
10953    }
10954    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10955    pub struct Scope {
10956        /// Process ID (TGID) allowlist. If this list is not empty, only matching
10957        /// samples will be retained. If multiple allow/deny-lists are
10958        /// specified by the config, then all of them are evaluated for each sampled
10959        /// process.
10960        #[prost(int32, repeated, packed = "false", tag = "1")]
10961        pub target_pid: ::prost::alloc::vec::Vec<i32>,
10962        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10963        /// comm string). The semantics of this field were changed since its original
10964        /// introduction.
10965        ///
10966        /// On Android T+ (13+), this field can specify a single wildcard (*), and
10967        /// the profiler will attempt to match it in two possible ways:
10968        /// * if the pattern starts with a '/', then it is matched against the first
10969        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10970        ///    "/bin/echo".
10971        /// * otherwise the pattern is matched against the part of argv0
10972        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10973        ///    For example "echo" would match "/bin/echo".
10974        ///
10975        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10976        /// normalized prior to an exact string comparison. Normalization is as
10977        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10978        /// the string contains forward slashes, trim everything up to and including
10979        /// the last one.
10980        ///
10981        /// Implementation note: in either case, at most 511 characters of cmdline
10982        /// are considered.
10983        #[prost(string, repeated, tag = "2")]
10984        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10985        /// List of excluded pids.
10986        #[prost(int32, repeated, packed = "false", tag = "3")]
10987        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10988        /// List of excluded cmdlines. See description of |target_cmdline| for how
10989        /// this is handled.
10990        #[prost(string, repeated, tag = "4")]
10991        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10992        /// Number of additional command lines to sample. Only those which are
10993        /// neither explicitly included nor excluded will be considered. Processes
10994        /// are accepted on a first come, first served basis.
10995        #[prost(uint32, optional, tag = "5")]
10996        pub additional_cmdline_count: ::core::option::Option<u32>,
10997        /// If set to N, all encountered processes will be put into one of the N
10998        /// possible bins, and only one randomly-chosen bin will be selected for
10999        /// unwinding. The binning is simply "pid % N", under the assumption that
11000        /// low-order bits of pids are roughly uniformly distributed. Other explicit
11001        /// inclusions/exclusions in this |Scope| message are still respected.
11002        ///
11003        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
11004        /// values will be queryable in trace processor under the "stats" table as
11005        /// "perf_process_shard_count" and "perf_chosen_process_shard".
11006        ///
11007        /// NB: all data sources in a config that set |process_shard_count| must set
11008        /// it to the same value. The profiler will choose one bin for all those data
11009        /// sources.
11010        #[prost(uint32, optional, tag = "6")]
11011        pub process_shard_count: ::core::option::Option<u32>,
11012    }
11013    /// Userspace unwinding mode.
11014    #[derive(
11015        Clone,
11016        Copy,
11017        Debug,
11018        PartialEq,
11019        Eq,
11020        Hash,
11021        PartialOrd,
11022        Ord,
11023        ::prost::Enumeration
11024    )]
11025    #[repr(i32)]
11026    pub enum UnwindMode {
11027        UnwindUnknown = 0,
11028        /// Do not unwind userspace:
11029        UnwindSkip = 1,
11030        /// Use libunwindstack (default):
11031        UnwindDwarf = 2,
11032        /// Use userspace frame pointer unwinder:
11033        UnwindFramePointer = 3,
11034        /// Ask the kernel to unwind the userspace stack via frame pointers, using
11035        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
11036        /// sample, which avoids the per-sample copy cost and the depth limit
11037        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
11038        /// (including system libraries) is built with frame pointers - the kernel
11039        /// walks the chain and returns instruction addresses, which still need to
11040        /// be symbolized offline using the recorded process mappings.
11041        UnwindKernelFramePointer = 4,
11042    }
11043    impl UnwindMode {
11044        /// String value of the enum field names used in the ProtoBuf definition.
11045        ///
11046        /// The values are not transformed in any way and thus are considered stable
11047        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11048        pub fn as_str_name(&self) -> &'static str {
11049            match self {
11050                Self::UnwindUnknown => "UNWIND_UNKNOWN",
11051                Self::UnwindSkip => "UNWIND_SKIP",
11052                Self::UnwindDwarf => "UNWIND_DWARF",
11053                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
11054                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
11055            }
11056        }
11057        /// Creates an enum from field names used in the ProtoBuf definition.
11058        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11059            match value {
11060                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
11061                "UNWIND_SKIP" => Some(Self::UnwindSkip),
11062                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
11063                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
11064                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
11065                _ => None,
11066            }
11067        }
11068    }
11069}
11070/// When editing entries here remember also to update "sys_stats_counters.h" with
11071/// the corresponding string definitions for the actual /proc files parser.
11072///
11073/// Counter definitions for Linux's /proc/meminfo.
11074#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11075#[repr(i32)]
11076pub enum MeminfoCounters {
11077    MeminfoUnspecified = 0,
11078    MeminfoMemTotal = 1,
11079    MeminfoMemFree = 2,
11080    MeminfoMemAvailable = 3,
11081    MeminfoBuffers = 4,
11082    MeminfoCached = 5,
11083    MeminfoSwapCached = 6,
11084    MeminfoActive = 7,
11085    MeminfoInactive = 8,
11086    MeminfoActiveAnon = 9,
11087    MeminfoInactiveAnon = 10,
11088    MeminfoActiveFile = 11,
11089    MeminfoInactiveFile = 12,
11090    MeminfoUnevictable = 13,
11091    MeminfoMlocked = 14,
11092    MeminfoSwapTotal = 15,
11093    MeminfoSwapFree = 16,
11094    MeminfoDirty = 17,
11095    MeminfoWriteback = 18,
11096    MeminfoAnonPages = 19,
11097    MeminfoMapped = 20,
11098    MeminfoShmem = 21,
11099    MeminfoSlab = 22,
11100    MeminfoSlabReclaimable = 23,
11101    MeminfoSlabUnreclaimable = 24,
11102    MeminfoKernelStack = 25,
11103    MeminfoPageTables = 26,
11104    MeminfoCommitLimit = 27,
11105    MeminfoCommitedAs = 28,
11106    MeminfoVmallocTotal = 29,
11107    MeminfoVmallocUsed = 30,
11108    MeminfoVmallocChunk = 31,
11109    MeminfoCmaTotal = 32,
11110    MeminfoCmaFree = 33,
11111    MeminfoGpu = 34,
11112    MeminfoZram = 35,
11113    MeminfoMisc = 36,
11114    MeminfoIonHeap = 37,
11115    MeminfoIonHeapPool = 38,
11116}
11117impl MeminfoCounters {
11118    /// String value of the enum field names used in the ProtoBuf definition.
11119    ///
11120    /// The values are not transformed in any way and thus are considered stable
11121    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11122    pub fn as_str_name(&self) -> &'static str {
11123        match self {
11124            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
11125            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
11126            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
11127            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
11128            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
11129            Self::MeminfoCached => "MEMINFO_CACHED",
11130            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
11131            Self::MeminfoActive => "MEMINFO_ACTIVE",
11132            Self::MeminfoInactive => "MEMINFO_INACTIVE",
11133            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
11134            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
11135            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
11136            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
11137            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
11138            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
11139            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
11140            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
11141            Self::MeminfoDirty => "MEMINFO_DIRTY",
11142            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
11143            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
11144            Self::MeminfoMapped => "MEMINFO_MAPPED",
11145            Self::MeminfoShmem => "MEMINFO_SHMEM",
11146            Self::MeminfoSlab => "MEMINFO_SLAB",
11147            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
11148            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
11149            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
11150            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
11151            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
11152            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
11153            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
11154            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
11155            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
11156            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
11157            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
11158            Self::MeminfoGpu => "MEMINFO_GPU",
11159            Self::MeminfoZram => "MEMINFO_ZRAM",
11160            Self::MeminfoMisc => "MEMINFO_MISC",
11161            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
11162            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
11163        }
11164    }
11165    /// Creates an enum from field names used in the ProtoBuf definition.
11166    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11167        match value {
11168            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
11169            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
11170            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
11171            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
11172            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
11173            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
11174            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
11175            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
11176            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
11177            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
11178            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
11179            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
11180            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
11181            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
11182            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
11183            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
11184            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
11185            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
11186            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
11187            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
11188            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
11189            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
11190            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
11191            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
11192            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
11193            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
11194            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
11195            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
11196            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
11197            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
11198            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
11199            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
11200            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
11201            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
11202            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
11203            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
11204            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
11205            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
11206            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
11207            _ => None,
11208        }
11209    }
11210}
11211/// Counter definitions for Linux's /proc/vmstat.
11212#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11213#[repr(i32)]
11214pub enum VmstatCounters {
11215    VmstatUnspecified = 0,
11216    VmstatNrFreePages = 1,
11217    VmstatNrAllocBatch = 2,
11218    VmstatNrInactiveAnon = 3,
11219    VmstatNrActiveAnon = 4,
11220    VmstatNrInactiveFile = 5,
11221    VmstatNrActiveFile = 6,
11222    VmstatNrUnevictable = 7,
11223    VmstatNrMlock = 8,
11224    VmstatNrAnonPages = 9,
11225    VmstatNrMapped = 10,
11226    VmstatNrFilePages = 11,
11227    VmstatNrDirty = 12,
11228    VmstatNrWriteback = 13,
11229    VmstatNrSlabReclaimable = 14,
11230    VmstatNrSlabUnreclaimable = 15,
11231    VmstatNrPageTablePages = 16,
11232    VmstatNrKernelStack = 17,
11233    VmstatNrOverhead = 18,
11234    VmstatNrUnstable = 19,
11235    VmstatNrBounce = 20,
11236    VmstatNrVmscanWrite = 21,
11237    VmstatNrVmscanImmediateReclaim = 22,
11238    VmstatNrWritebackTemp = 23,
11239    VmstatNrIsolatedAnon = 24,
11240    VmstatNrIsolatedFile = 25,
11241    VmstatNrShmem = 26,
11242    VmstatNrDirtied = 27,
11243    VmstatNrWritten = 28,
11244    VmstatNrPagesScanned = 29,
11245    VmstatWorkingsetRefault = 30,
11246    VmstatWorkingsetActivate = 31,
11247    VmstatWorkingsetNodereclaim = 32,
11248    VmstatNrAnonTransparentHugepages = 33,
11249    VmstatNrFreeCma = 34,
11250    VmstatNrSwapcache = 35,
11251    VmstatNrDirtyThreshold = 36,
11252    VmstatNrDirtyBackgroundThreshold = 37,
11253    VmstatPgpgin = 38,
11254    VmstatPgpgout = 39,
11255    VmstatPgpgoutclean = 40,
11256    VmstatPswpin = 41,
11257    VmstatPswpout = 42,
11258    VmstatPgallocDma = 43,
11259    VmstatPgallocNormal = 44,
11260    VmstatPgallocMovable = 45,
11261    VmstatPgfree = 46,
11262    VmstatPgactivate = 47,
11263    VmstatPgdeactivate = 48,
11264    VmstatPgfault = 49,
11265    VmstatPgmajfault = 50,
11266    VmstatPgrefillDma = 51,
11267    VmstatPgrefillNormal = 52,
11268    VmstatPgrefillMovable = 53,
11269    VmstatPgstealKswapdDma = 54,
11270    VmstatPgstealKswapdNormal = 55,
11271    VmstatPgstealKswapdMovable = 56,
11272    VmstatPgstealDirectDma = 57,
11273    VmstatPgstealDirectNormal = 58,
11274    VmstatPgstealDirectMovable = 59,
11275    VmstatPgscanKswapdDma = 60,
11276    VmstatPgscanKswapdNormal = 61,
11277    VmstatPgscanKswapdMovable = 62,
11278    VmstatPgscanDirectDma = 63,
11279    VmstatPgscanDirectNormal = 64,
11280    VmstatPgscanDirectMovable = 65,
11281    VmstatPgscanDirectThrottle = 66,
11282    VmstatPginodesteal = 67,
11283    VmstatSlabsScanned = 68,
11284    VmstatKswapdInodesteal = 69,
11285    VmstatKswapdLowWmarkHitQuickly = 70,
11286    VmstatKswapdHighWmarkHitQuickly = 71,
11287    VmstatPageoutrun = 72,
11288    VmstatAllocstall = 73,
11289    VmstatPgrotated = 74,
11290    VmstatDropPagecache = 75,
11291    VmstatDropSlab = 76,
11292    VmstatPgmigrateSuccess = 77,
11293    VmstatPgmigrateFail = 78,
11294    VmstatCompactMigrateScanned = 79,
11295    VmstatCompactFreeScanned = 80,
11296    VmstatCompactIsolated = 81,
11297    VmstatCompactStall = 82,
11298    VmstatCompactFail = 83,
11299    VmstatCompactSuccess = 84,
11300    VmstatCompactDaemonWake = 85,
11301    VmstatUnevictablePgsCulled = 86,
11302    VmstatUnevictablePgsScanned = 87,
11303    VmstatUnevictablePgsRescued = 88,
11304    VmstatUnevictablePgsMlocked = 89,
11305    VmstatUnevictablePgsMunlocked = 90,
11306    VmstatUnevictablePgsCleared = 91,
11307    VmstatUnevictablePgsStranded = 92,
11308    VmstatNrZspages = 93,
11309    VmstatNrIonHeap = 94,
11310    VmstatNrGpuHeap = 95,
11311    VmstatAllocstallDma = 96,
11312    VmstatAllocstallMovable = 97,
11313    VmstatAllocstallNormal = 98,
11314    VmstatCompactDaemonFreeScanned = 99,
11315    VmstatCompactDaemonMigrateScanned = 100,
11316    VmstatNrFastrpc = 101,
11317    VmstatNrIndirectlyReclaimable = 102,
11318    VmstatNrIonHeapPool = 103,
11319    VmstatNrKernelMiscReclaimable = 104,
11320    VmstatNrShadowCallStackBytes = 105,
11321    VmstatNrShmemHugepages = 106,
11322    VmstatNrShmemPmdmapped = 107,
11323    VmstatNrUnreclaimablePages = 108,
11324    VmstatNrZoneActiveAnon = 109,
11325    VmstatNrZoneActiveFile = 110,
11326    VmstatNrZoneInactiveAnon = 111,
11327    VmstatNrZoneInactiveFile = 112,
11328    VmstatNrZoneUnevictable = 113,
11329    VmstatNrZoneWritePending = 114,
11330    VmstatOomKill = 115,
11331    VmstatPglazyfree = 116,
11332    VmstatPglazyfreed = 117,
11333    VmstatPgrefill = 118,
11334    VmstatPgscanDirect = 119,
11335    VmstatPgscanKswapd = 120,
11336    VmstatPgskipDma = 121,
11337    VmstatPgskipMovable = 122,
11338    VmstatPgskipNormal = 123,
11339    VmstatPgstealDirect = 124,
11340    VmstatPgstealKswapd = 125,
11341    VmstatSwapRa = 126,
11342    VmstatSwapRaHit = 127,
11343    VmstatWorkingsetRestore = 128,
11344    VmstatAllocstallDevice = 129,
11345    VmstatAllocstallDma32 = 130,
11346    VmstatBalloonDeflate = 131,
11347    VmstatBalloonInflate = 132,
11348    VmstatBalloonMigrate = 133,
11349    VmstatCmaAllocFail = 134,
11350    VmstatCmaAllocSuccess = 135,
11351    VmstatNrFileHugepages = 136,
11352    VmstatNrFilePmdmapped = 137,
11353    VmstatNrFollPinAcquired = 138,
11354    VmstatNrFollPinReleased = 139,
11355    VmstatNrSecPageTablePages = 140,
11356    VmstatNrShadowCallStack = 141,
11357    VmstatNrSwapcached = 142,
11358    VmstatNrThrottledWritten = 143,
11359    VmstatPgallocDevice = 144,
11360    VmstatPgallocDma32 = 145,
11361    VmstatPgdemoteDirect = 146,
11362    VmstatPgdemoteKswapd = 147,
11363    VmstatPgreuse = 148,
11364    VmstatPgscanAnon = 149,
11365    VmstatPgscanFile = 150,
11366    VmstatPgskipDevice = 151,
11367    VmstatPgskipDma32 = 152,
11368    VmstatPgstealAnon = 153,
11369    VmstatPgstealFile = 154,
11370    VmstatThpCollapseAlloc = 155,
11371    VmstatThpCollapseAllocFailed = 156,
11372    VmstatThpDeferredSplitPage = 157,
11373    VmstatThpFaultAlloc = 158,
11374    VmstatThpFaultFallback = 159,
11375    VmstatThpFaultFallbackCharge = 160,
11376    VmstatThpFileAlloc = 161,
11377    VmstatThpFileFallback = 162,
11378    VmstatThpFileFallbackCharge = 163,
11379    VmstatThpFileMapped = 164,
11380    VmstatThpMigrationFail = 165,
11381    VmstatThpMigrationSplit = 166,
11382    VmstatThpMigrationSuccess = 167,
11383    VmstatThpScanExceedNonePte = 168,
11384    VmstatThpScanExceedSharePte = 169,
11385    VmstatThpScanExceedSwapPte = 170,
11386    VmstatThpSplitPage = 171,
11387    VmstatThpSplitPageFailed = 172,
11388    VmstatThpSplitPmd = 173,
11389    VmstatThpSwpout = 174,
11390    VmstatThpSwpoutFallback = 175,
11391    VmstatThpZeroPageAlloc = 176,
11392    VmstatThpZeroPageAllocFailed = 177,
11393    VmstatVmaLockAbort = 178,
11394    VmstatVmaLockMiss = 179,
11395    VmstatVmaLockRetry = 180,
11396    VmstatVmaLockSuccess = 181,
11397    VmstatWorkingsetActivateAnon = 182,
11398    VmstatWorkingsetActivateFile = 183,
11399    VmstatWorkingsetNodes = 184,
11400    VmstatWorkingsetRefaultAnon = 185,
11401    VmstatWorkingsetRefaultFile = 186,
11402    VmstatWorkingsetRestoreAnon = 187,
11403    VmstatWorkingsetRestoreFile = 188,
11404}
11405impl VmstatCounters {
11406    /// String value of the enum field names used in the ProtoBuf definition.
11407    ///
11408    /// The values are not transformed in any way and thus are considered stable
11409    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11410    pub fn as_str_name(&self) -> &'static str {
11411        match self {
11412            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
11413            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
11414            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
11415            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
11416            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
11417            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
11418            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
11419            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
11420            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
11421            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
11422            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
11423            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
11424            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
11425            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
11426            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
11427            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
11428            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
11429            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
11430            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
11431            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
11432            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
11433            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
11434            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
11435            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
11436            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
11437            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
11438            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
11439            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
11440            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
11441            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
11442            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
11443            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
11444            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
11445            Self::VmstatNrAnonTransparentHugepages => {
11446                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
11447            }
11448            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
11449            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
11450            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
11451            Self::VmstatNrDirtyBackgroundThreshold => {
11452                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
11453            }
11454            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
11455            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
11456            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
11457            Self::VmstatPswpin => "VMSTAT_PSWPIN",
11458            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
11459            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
11460            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
11461            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
11462            Self::VmstatPgfree => "VMSTAT_PGFREE",
11463            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
11464            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
11465            Self::VmstatPgfault => "VMSTAT_PGFAULT",
11466            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
11467            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
11468            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
11469            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
11470            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
11471            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
11472            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
11473            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
11474            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
11475            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
11476            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
11477            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
11478            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
11479            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
11480            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
11481            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
11482            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
11483            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
11484            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
11485            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
11486            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
11487            Self::VmstatKswapdHighWmarkHitQuickly => {
11488                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
11489            }
11490            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
11491            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
11492            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
11493            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
11494            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
11495            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
11496            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
11497            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
11498            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
11499            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
11500            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
11501            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
11502            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
11503            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
11504            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
11505            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
11506            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
11507            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
11508            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
11509            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
11510            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
11511            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
11512            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
11513            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
11514            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
11515            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
11516            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
11517            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
11518            Self::VmstatCompactDaemonMigrateScanned => {
11519                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
11520            }
11521            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
11522            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
11523            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
11524            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
11525            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
11526            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
11527            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
11528            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
11529            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
11530            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
11531            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
11532            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
11533            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
11534            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
11535            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
11536            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
11537            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
11538            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
11539            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
11540            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
11541            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
11542            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
11543            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
11544            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
11545            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
11546            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
11547            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
11548            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
11549            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
11550            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
11551            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
11552            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
11553            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
11554            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
11555            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
11556            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
11557            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
11558            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
11559            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
11560            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
11561            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
11562            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
11563            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
11564            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
11565            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
11566            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
11567            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
11568            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
11569            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
11570            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
11571            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
11572            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
11573            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
11574            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
11575            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
11576            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
11577            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
11578            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
11579            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
11580            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
11581            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
11582            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
11583            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
11584            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
11585            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
11586            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
11587            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
11588            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
11589            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
11590            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
11591            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
11592            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
11593            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
11594            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
11595            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
11596            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
11597            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
11598            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
11599            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
11600            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
11601            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
11602            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
11603            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
11604            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
11605            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
11606            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
11607            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
11608            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
11609        }
11610    }
11611    /// Creates an enum from field names used in the ProtoBuf definition.
11612    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11613        match value {
11614            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
11615            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
11616            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
11617            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
11618            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
11619            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
11620            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
11621            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
11622            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
11623            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
11624            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
11625            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
11626            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
11627            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
11628            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
11629            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
11630            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
11631            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
11632            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
11633            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
11634            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
11635            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
11636            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
11637                Some(Self::VmstatNrVmscanImmediateReclaim)
11638            }
11639            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
11640            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
11641            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
11642            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
11643            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
11644            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
11645            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
11646            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
11647            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
11648            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
11649            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
11650                Some(Self::VmstatNrAnonTransparentHugepages)
11651            }
11652            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
11653            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
11654            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
11655            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
11656                Some(Self::VmstatNrDirtyBackgroundThreshold)
11657            }
11658            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
11659            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
11660            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
11661            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
11662            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
11663            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
11664            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
11665            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
11666            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
11667            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
11668            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
11669            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
11670            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
11671            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
11672            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
11673            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
11674            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
11675            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
11676            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
11677            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
11678            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
11679            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
11680            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
11681            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
11682            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
11683            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
11684            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
11685            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
11686            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
11687            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
11688            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
11689            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
11690            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
11691                Some(Self::VmstatKswapdLowWmarkHitQuickly)
11692            }
11693            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
11694                Some(Self::VmstatKswapdHighWmarkHitQuickly)
11695            }
11696            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
11697            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
11698            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
11699            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
11700            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
11701            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
11702            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
11703            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
11704            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
11705            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
11706            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
11707            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
11708            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
11709            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
11710            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
11711            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
11712            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
11713            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
11714            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
11715                Some(Self::VmstatUnevictablePgsMunlocked)
11716            }
11717            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
11718            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
11719            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
11720            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
11721            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
11722            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
11723            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
11724            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
11725            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
11726                Some(Self::VmstatCompactDaemonFreeScanned)
11727            }
11728            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
11729                Some(Self::VmstatCompactDaemonMigrateScanned)
11730            }
11731            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
11732            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
11733                Some(Self::VmstatNrIndirectlyReclaimable)
11734            }
11735            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
11736            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
11737                Some(Self::VmstatNrKernelMiscReclaimable)
11738            }
11739            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
11740                Some(Self::VmstatNrShadowCallStackBytes)
11741            }
11742            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
11743            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
11744            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
11745            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
11746            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
11747            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
11748            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
11749            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
11750            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
11751            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
11752            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
11753            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
11754            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
11755            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
11756            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
11757            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
11758            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
11759            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
11760            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
11761            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
11762            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
11763            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
11764            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
11765            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
11766            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
11767            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
11768            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
11769            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
11770            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
11771            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
11772            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
11773            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
11774            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
11775            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
11776            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
11777            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
11778            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
11779            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
11780            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
11781            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
11782            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
11783            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
11784            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
11785            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
11786            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
11787            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
11788            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
11789            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
11790            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
11791            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
11792            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
11793                Some(Self::VmstatThpCollapseAllocFailed)
11794            }
11795            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
11796            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
11797            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
11798            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
11799                Some(Self::VmstatThpFaultFallbackCharge)
11800            }
11801            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
11802            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
11803            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
11804            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
11805            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
11806            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
11807            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
11808            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
11809            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
11810            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
11811            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
11812            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
11813            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
11814            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
11815            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
11816            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
11817            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
11818                Some(Self::VmstatThpZeroPageAllocFailed)
11819            }
11820            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
11821            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
11822            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
11823            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
11824            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
11825            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
11826            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
11827            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
11828            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
11829            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
11830            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
11831            _ => None,
11832        }
11833    }
11834}
11835/// This file defines the configuration for the Linux /proc poller data source,
11836/// which injects counters in the trace.
11837/// Counters that are needed in the trace must be explicitly listed in the
11838/// *_counters fields. This is to avoid spamming the trace with all counters
11839/// at all times.
11840/// The sampling rate is configurable. All polling rates (*_period_ms) need
11841/// to be integer multiples of each other.
11842/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
11843/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
11844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11845pub struct SysStatsConfig {
11846    /// Polls /proc/meminfo every X ms, if non-zero.
11847    /// This is required to be > 10ms to avoid excessive CPU usage.
11848    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
11849    #[prost(uint32, optional, tag = "1")]
11850    pub meminfo_period_ms: ::core::option::Option<u32>,
11851    /// If empty all known counters are reported. Otherwise, only the counters
11852    /// specified below are reported.
11853    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
11854    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
11855    /// Polls /proc/vmstat every X ms, if non-zero.
11856    /// This is required to be > 10ms to avoid excessive CPU usage.
11857    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
11858    #[prost(uint32, optional, tag = "3")]
11859    pub vmstat_period_ms: ::core::option::Option<u32>,
11860    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
11861    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
11862    /// Pols /proc/stat every X ms, if non-zero.
11863    /// This is required to be > 10ms to avoid excessive CPU usage.
11864    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
11865    #[prost(uint32, optional, tag = "5")]
11866    pub stat_period_ms: ::core::option::Option<u32>,
11867    #[prost(
11868        enumeration = "sys_stats_config::StatCounters",
11869        repeated,
11870        packed = "false",
11871        tag = "6"
11872    )]
11873    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
11874    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
11875    /// This is required to be > 10ms to avoid excessive CPU usage.
11876    /// This option can be used to record unchanging values.
11877    /// Updates from frequency changes can come from ftrace/set_clock_rate.
11878    #[prost(uint32, optional, tag = "7")]
11879    pub devfreq_period_ms: ::core::option::Option<u32>,
11880    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
11881    /// This is required to be > 10ms to avoid excessive CPU usage.
11882    #[prost(uint32, optional, tag = "8")]
11883    pub cpufreq_period_ms: ::core::option::Option<u32>,
11884    /// Polls /proc/buddyinfo every X ms, if non-zero.
11885    /// This is required to be > 10ms to avoid excessive CPU usage.
11886    #[prost(uint32, optional, tag = "9")]
11887    pub buddyinfo_period_ms: ::core::option::Option<u32>,
11888    /// Polls /proc/diskstats every X ms, if non-zero.
11889    /// This is required to be > 10ms to avoid excessive CPU usage.
11890    #[prost(uint32, optional, tag = "10")]
11891    pub diskstat_period_ms: ::core::option::Option<u32>,
11892    /// Polls /proc/pressure/* every X ms, if non-zero.
11893    /// This is required to be > 10ms to avoid excessive CPU usage.
11894    #[prost(uint32, optional, tag = "11")]
11895    pub psi_period_ms: ::core::option::Option<u32>,
11896    /// Polls /sys/class/thermal/* every X ms, if non-zero.
11897    /// This is required to be > 10ms to avoid excessive CPU usage.
11898    #[prost(uint32, optional, tag = "12")]
11899    pub thermal_period_ms: ::core::option::Option<u32>,
11900    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
11901    /// This is required to be > 10ms to avoid excessive CPU usage.
11902    #[prost(uint32, optional, tag = "13")]
11903    pub cpuidle_period_ms: ::core::option::Option<u32>,
11904    /// Polls device-specific GPU frequency info every X ms, if non-zero.
11905    /// This is required to be > 10ms to avoid excessive CPU usage.
11906    #[prost(uint32, optional, tag = "14")]
11907    pub gpufreq_period_ms: ::core::option::Option<u32>,
11908    /// Polls /proc/slabinfo every X ms, if non-zero.
11909    /// This is required to be > 10ms to avoid excessive CPU usage.
11910    #[prost(uint32, optional, tag = "15")]
11911    pub slab_period_ms: ::core::option::Option<u32>,
11912}
11913/// Nested message and enum types in `SysStatsConfig`.
11914pub mod sys_stats_config {
11915    #[derive(
11916        Clone,
11917        Copy,
11918        Debug,
11919        PartialEq,
11920        Eq,
11921        Hash,
11922        PartialOrd,
11923        Ord,
11924        ::prost::Enumeration
11925    )]
11926    #[repr(i32)]
11927    pub enum StatCounters {
11928        StatUnspecified = 0,
11929        StatCpuTimes = 1,
11930        StatIrqCounts = 2,
11931        StatSoftirqCounts = 3,
11932        StatForkCount = 4,
11933    }
11934    impl StatCounters {
11935        /// String value of the enum field names used in the ProtoBuf definition.
11936        ///
11937        /// The values are not transformed in any way and thus are considered stable
11938        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11939        pub fn as_str_name(&self) -> &'static str {
11940            match self {
11941                Self::StatUnspecified => "STAT_UNSPECIFIED",
11942                Self::StatCpuTimes => "STAT_CPU_TIMES",
11943                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
11944                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
11945                Self::StatForkCount => "STAT_FORK_COUNT",
11946            }
11947        }
11948        /// Creates an enum from field names used in the ProtoBuf definition.
11949        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11950            match value {
11951                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
11952                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
11953                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
11954                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
11955                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
11956                _ => None,
11957            }
11958        }
11959    }
11960}
11961/// The configuration for a fake producer used in tests.
11962#[derive(Clone, PartialEq, ::prost::Message)]
11963pub struct TestConfig {
11964    /// The number of messages the fake producer should send.
11965    #[prost(uint32, optional, tag = "1")]
11966    pub message_count: ::core::option::Option<u32>,
11967    /// The maximum number of messages which should be sent each second.
11968    /// The actual obserced speed may be lower if the producer is unable to
11969    /// work fast enough.
11970    /// If this is zero or unset, the producer will send as fast as possible.
11971    #[prost(uint32, optional, tag = "2")]
11972    pub max_messages_per_second: ::core::option::Option<u32>,
11973    /// The seed value for a simple multiplicative congruential pseudo-random
11974    /// number sequence.
11975    #[prost(uint32, optional, tag = "3")]
11976    pub seed: ::core::option::Option<u32>,
11977    /// The size of each message in bytes. Should be greater than or equal 5 to
11978    /// account for the number of bytes needed to encode the random number and a
11979    /// null byte for the string.
11980    #[prost(uint32, optional, tag = "4")]
11981    pub message_size: ::core::option::Option<u32>,
11982    /// Whether the producer should send a event batch when the data source is
11983    /// is initially registered.
11984    #[prost(bool, optional, tag = "5")]
11985    pub send_batch_on_register: ::core::option::Option<bool>,
11986    #[prost(message, optional, tag = "6")]
11987    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
11988}
11989/// Nested message and enum types in `TestConfig`.
11990pub mod test_config {
11991    #[derive(Clone, PartialEq, ::prost::Message)]
11992    pub struct DummyFields {
11993        #[prost(uint32, optional, tag = "1")]
11994        pub field_uint32: ::core::option::Option<u32>,
11995        #[prost(int32, optional, tag = "2")]
11996        pub field_int32: ::core::option::Option<i32>,
11997        #[prost(uint64, optional, tag = "3")]
11998        pub field_uint64: ::core::option::Option<u64>,
11999        #[prost(int64, optional, tag = "4")]
12000        pub field_int64: ::core::option::Option<i64>,
12001        #[prost(fixed64, optional, tag = "5")]
12002        pub field_fixed64: ::core::option::Option<u64>,
12003        #[prost(sfixed64, optional, tag = "6")]
12004        pub field_sfixed64: ::core::option::Option<i64>,
12005        #[prost(fixed32, optional, tag = "7")]
12006        pub field_fixed32: ::core::option::Option<u32>,
12007        #[prost(sfixed32, optional, tag = "8")]
12008        pub field_sfixed32: ::core::option::Option<i32>,
12009        #[prost(double, optional, tag = "9")]
12010        pub field_double: ::core::option::Option<f64>,
12011        #[prost(float, optional, tag = "10")]
12012        pub field_float: ::core::option::Option<f32>,
12013        #[prost(sint64, optional, tag = "11")]
12014        pub field_sint64: ::core::option::Option<i64>,
12015        #[prost(sint32, optional, tag = "12")]
12016        pub field_sint32: ::core::option::Option<i32>,
12017        #[prost(string, optional, tag = "13")]
12018        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
12019        #[prost(bytes = "vec", optional, tag = "14")]
12020        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12021    }
12022}
12023/// The following fields define the set of enabled trace categories. Each list
12024/// item is a glob.
12025///
12026/// To determine if category is enabled, it is checked against the filters in
12027/// the following order:
12028///
12029///    1. Exact matches in enabled categories.
12030///    2. Exact matches in enabled tags.
12031///    3. Exact matches in disabled categories.
12032///    4. Exact matches in disabled tags.
12033///    5. Pattern matches in enabled categories.
12034///    6. Pattern matches in enabled tags.
12035///    7. Pattern matches in disabled categories.
12036///    8. Pattern matches in disabled tags.
12037///
12038/// If none of the steps produced a match:
12039///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
12040///   default.
12041///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
12042///
12043/// Examples:
12044///
12045///   - To enable all non-slow/debug categories:
12046///
12047///        enabled_categories: "*"
12048///
12049///   - To enable specific categories:
12050///
12051///        disabled_categories: "*"
12052///        enabled_categories: "my_category"
12053///        enabled_categories: "my_category2"
12054///
12055///   - To enable only categories with a specific tag:
12056///
12057///        disabled_tags: "*"
12058///        enabled_tags: "my_tag"
12059///
12060#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12061pub struct TrackEventConfig {
12062    /// Default: \[\]
12063    #[prost(string, repeated, tag = "1")]
12064    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12065    /// Default: \[\]
12066    #[prost(string, repeated, tag = "2")]
12067    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12068    /// Default: \["slow", "debug"\]
12069    #[prost(string, repeated, tag = "3")]
12070    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12071    /// Default: \[\]
12072    #[prost(string, repeated, tag = "4")]
12073    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12074    /// Default: false (i.e. enabled by default)
12075    #[prost(bool, optional, tag = "5")]
12076    pub disable_incremental_timestamps: ::core::option::Option<bool>,
12077    /// Allows to specify a custom unit different than the default (ns).
12078    /// Also affects thread timestamps if enable_thread_time_sampling = true.
12079    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
12080    /// 3000 ns = 3 us.
12081    /// Default: 1 (if unset, it should be read as 1).
12082    #[prost(uint64, optional, tag = "6")]
12083    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
12084    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
12085    /// When true, any debug annotations provided as arguments to the
12086    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
12087    /// still be emitted even if set to true.
12088    #[prost(bool, optional, tag = "7")]
12089    pub filter_debug_annotations: ::core::option::Option<bool>,
12090    /// Default: false (i.e. disabled)
12091    /// When true, the SDK samples and emits the current thread time counter value
12092    /// for each event on the current thread's track. This value represents the
12093    /// total CPU time consumed by that thread since its creation.
12094    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
12095    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
12096    #[prost(bool, optional, tag = "8")]
12097    pub enable_thread_time_sampling: ::core::option::Option<bool>,
12098    /// When enable_thread_time_sampling is true, and this is specified, thread
12099    /// time is sampled only if the elapsed wall time >
12100    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
12101    /// Effectively, this means thread time will have a leeway of
12102    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
12103    #[prost(uint64, optional, tag = "10")]
12104    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
12105    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
12106    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
12107    /// out.
12108    #[prost(bool, optional, tag = "9")]
12109    pub filter_dynamic_event_names: ::core::option::Option<bool>,
12110}
12111/// This data-source does a one-off recording of system information when
12112/// the trace starts.
12113/// Currently this includes:
12114/// - Values of
12115/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
12116/// datasource has no configuration options at present.
12117#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12118pub struct SystemInfoConfig {
12119    /// If true, records hardware interrupt ID-to-name mappings from
12120    /// /proc/interrupts.
12121    #[prost(bool, optional, tag = "1")]
12122    pub irq_names: ::core::option::Option<bool>,
12123}
12124#[derive(Clone, PartialEq, ::prost::Message)]
12125pub struct ChromiumHistogramSamplesConfig {
12126    /// List of histograms to record. If no histogram is specified, all histograms
12127    /// are recorded.
12128    #[prost(message, repeated, tag = "1")]
12129    pub histograms: ::prost::alloc::vec::Vec<
12130        chromium_histogram_samples_config::HistogramSample,
12131    >,
12132    /// Default: false (i.e. histogram names are NOT filtered out by default)
12133    /// When true, histogram_name will be filtered out.
12134    #[prost(bool, optional, tag = "2")]
12135    pub filter_histogram_names: ::core::option::Option<bool>,
12136}
12137/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
12138pub mod chromium_histogram_samples_config {
12139    /// Records when a value within the specified bounds \[min_value, max_value\] is
12140    /// emitted into a Chrome histogram.
12141    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12142    pub struct HistogramSample {
12143        #[prost(string, optional, tag = "1")]
12144        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
12145        #[prost(int64, optional, tag = "2")]
12146        pub min_value: ::core::option::Option<i64>,
12147        #[prost(int64, optional, tag = "3")]
12148        pub max_value: ::core::option::Option<i64>,
12149    }
12150}
12151#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12152pub struct ChromiumSamplingHeapProfilerConfig {
12153    /// Sampling interval in bytes.
12154    #[prost(uint64, optional, tag = "1")]
12155    pub sampling_interval_bytes: ::core::option::Option<u64>,
12156    /// Sampling interval in milliseconds.
12157    #[prost(uint32, optional, tag = "2")]
12158    pub sampling_interval_ms: ::core::option::Option<u32>,
12159}
12160#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12161pub struct ChromiumStackSamplingProfilerConfig {
12162    /// Sampling interval in milliseconds.
12163    #[prost(uint32, optional, tag = "1")]
12164    pub sampling_interval_ms: ::core::option::Option<u32>,
12165}
12166/// Config for the "linux.cgroup" data source, which records values reported by
12167/// cgroup v2 controllers. Only the memory controller (memcg) on android is
12168/// supported at the moment.
12169///
12170/// Example:
12171///
12172/// data_sources {
12173///    config {
12174///      name: "linux.cgroup"
12175///      cgroup_config {
12176///        memcg_config {
12177///          field: MEMCG_CURRENT
12178///          field: MEMCG_HIGH
12179///          field: MEMCG_STAT_ALL
12180///          field: MEMCG_EVENTS_LOCAL_HIGH
12181///
12182///          poll_period_ms: 1000
12183///
12184///          android_scope {
12185///            level: LEVEL_UID
12186///          }
12187///          android_scope {
12188///            target_cmdline: "surfaceflinger"
12189///            level: LEVEL_PID
12190///          }
12191///        }
12192///      }
12193///    }
12194/// }
12195#[derive(Clone, PartialEq, ::prost::Message)]
12196pub struct CgroupConfig {
12197    /// Memory controller (memcg).
12198    #[prost(message, optional, tag = "1")]
12199    pub memcg_config: ::core::option::Option<MemcgConfig>,
12200}
12201/// Config for recording memory controller (memcg) values for a set of cgroups.
12202#[derive(Clone, PartialEq, ::prost::Message)]
12203pub struct MemcgConfig {
12204    /// What values to record, the enum covers both single-valued files
12205    /// (e.g. memory.current) and files with multiple values (e.g. memory.stat).
12206    /// If unset, defaults to {MEMCG_CURRENT, MEMCG_STAT_ANON, MEMCG_STAT_FILE}.
12207    #[prost(
12208        enumeration = "memcg_config::MemcgField",
12209        repeated,
12210        packed = "false",
12211        tag = "1"
12212    )]
12213    pub field: ::prost::alloc::vec::Vec<i32>,
12214    /// Android: Which cgroups to record. Can be specified multiple times. If
12215    /// scopes overlap, a given cgroup will be recorded at most once.
12216    /// If unset, defaults to uid-level for all uids.
12217    #[prost(message, repeated, tag = "2")]
12218    pub android_scope: ::prost::alloc::vec::Vec<memcg_config::AndroidScope>,
12219    /// How often to poll the selected cgroups.
12220    /// If zero or unset, records values once.
12221    /// The implementation enforces a minimum on the period (100 ms at the time of
12222    /// writing).
12223    #[prost(uint32, optional, tag = "3")]
12224    pub poll_period_ms: ::core::option::Option<u32>,
12225}
12226/// Nested message and enum types in `MemcgConfig`.
12227pub mod memcg_config {
12228    /// Filters cgroups in the hierarchy created by android's libprocessgroup.
12229    ///
12230    /// Each scope maps onto a set of cgroup paths
12231    /// ({apps,system}/uid_<uid>/pid_<pid>) using the filters below, and |level|
12232    /// picks at which levels of the hierarchy the values are recorded. E.g. for
12233    /// an app "com.example.app" with uid 10123, and surfaceflinger running as pid
12234    /// 597 with uid 1000:
12235    /// * {package_name: "com.example.app", level: LEVEL_UID}
12236    ///      -> apps/uid_10123
12237    /// * {package_name: "com.example.app", level: LEVEL_PID}
12238    ///      -> apps/uid_10123/pid_* (all of the app's processes)
12239    /// * {target_cmdline: "surfaceflinger", level: LEVEL_PID}
12240    ///      -> system/uid_1000/pid_597
12241    /// * {target_cmdline: "surfaceflinger", level: LEVEL_UID}
12242    ///      -> system/uid_1000 (all of uid 1000, not just surfaceflinger)
12243    /// * {level: LEVEL_UID}
12244    ///      -> {apps,system}/uid_*
12245    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12246    pub struct AndroidScope {
12247        /// If empty, the implementation chooses a level corresponding to the
12248        /// narrowest scope filter below (e.g. target_cmdline -> LEVEL_PID).
12249        #[prost(
12250            enumeration = "android_scope::Level",
12251            repeated,
12252            packed = "false",
12253            tag = "1"
12254        )]
12255        pub level: ::prost::alloc::vec::Vec<i32>,
12256        /// Matches the top-level groups.
12257        #[prost(
12258            enumeration = "android_scope::Group",
12259            repeated,
12260            packed = "false",
12261            tag = "2"
12262        )]
12263        pub group: ::prost::alloc::vec::Vec<i32>,
12264        /// Matches the uid cgroups of the given packages, resolved when the data
12265        /// source starts (packages installed later aren't matched). Note: a package
12266        /// matches in all users/profiles, e.g. both uid_10123 and uid_1010123 for a
12267        /// package with uid 10123.
12268        #[prost(string, repeated, tag = "3")]
12269        pub package_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12270        /// Matches the pid cgroups of processes whose /proc/<pid>/cmdline matches
12271        /// any of the patterns. The patterns follow the same rules as the
12272        /// |target_cmdline| of the profilers:
12273        /// * a pattern can contain a single wildcard (*).
12274        /// * if the pattern starts with a '/', it's matched against the first
12275        ///    segment of the cmdline (argv0). E.g. "/system/bin/surface*".
12276        /// * otherwise, it's matched against the binary name part of argv0. E.g.
12277        ///    "top" or "com.example.app:*".
12278        #[prost(string, repeated, tag = "4")]
12279        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12280        /// Exact uid, without matching across users/profiles.
12281        #[prost(uint32, repeated, packed = "false", tag = "5")]
12282        pub uid: ::prost::alloc::vec::Vec<u32>,
12283        /// Exact pid.
12284        #[prost(uint32, repeated, packed = "false", tag = "6")]
12285        pub pid: ::prost::alloc::vec::Vec<u32>,
12286    }
12287    /// Nested message and enum types in `AndroidScope`.
12288    pub mod android_scope {
12289        #[derive(
12290            Clone,
12291            Copy,
12292            Debug,
12293            PartialEq,
12294            Eq,
12295            Hash,
12296            PartialOrd,
12297            Ord,
12298            ::prost::Enumeration
12299        )]
12300        #[repr(i32)]
12301        pub enum Level {
12302            Unspecified = 0,
12303            /// apps/, system/
12304            Top = 1,
12305            /// apps/uid_*, system/uid_*
12306            Uid = 2,
12307            /// apps/uid_*/pid_*, system/uid_*/pid_*
12308            Pid = 3,
12309        }
12310        impl Level {
12311            /// String value of the enum field names used in the ProtoBuf definition.
12312            ///
12313            /// The values are not transformed in any way and thus are considered stable
12314            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12315            pub fn as_str_name(&self) -> &'static str {
12316                match self {
12317                    Self::Unspecified => "LEVEL_UNSPECIFIED",
12318                    Self::Top => "LEVEL_TOP",
12319                    Self::Uid => "LEVEL_UID",
12320                    Self::Pid => "LEVEL_PID",
12321                }
12322            }
12323            /// Creates an enum from field names used in the ProtoBuf definition.
12324            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12325                match value {
12326                    "LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
12327                    "LEVEL_TOP" => Some(Self::Top),
12328                    "LEVEL_UID" => Some(Self::Uid),
12329                    "LEVEL_PID" => Some(Self::Pid),
12330                    _ => None,
12331                }
12332            }
12333        }
12334        #[derive(
12335            Clone,
12336            Copy,
12337            Debug,
12338            PartialEq,
12339            Eq,
12340            Hash,
12341            PartialOrd,
12342            Ord,
12343            ::prost::Enumeration
12344        )]
12345        #[repr(i32)]
12346        pub enum Group {
12347            Unspecified = 0,
12348            /// apps/
12349            Apps = 1,
12350            /// system/
12351            System = 2,
12352        }
12353        impl Group {
12354            /// String value of the enum field names used in the ProtoBuf definition.
12355            ///
12356            /// The values are not transformed in any way and thus are considered stable
12357            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12358            pub fn as_str_name(&self) -> &'static str {
12359                match self {
12360                    Self::Unspecified => "GROUP_UNSPECIFIED",
12361                    Self::Apps => "GROUP_APPS",
12362                    Self::System => "GROUP_SYSTEM",
12363                }
12364            }
12365            /// Creates an enum from field names used in the ProtoBuf definition.
12366            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12367                match value {
12368                    "GROUP_UNSPECIFIED" => Some(Self::Unspecified),
12369                    "GROUP_APPS" => Some(Self::Apps),
12370                    "GROUP_SYSTEM" => Some(Self::System),
12371                    _ => None,
12372                }
12373            }
12374        }
12375    }
12376    /// Values to record, covering both single-valued files (such as
12377    /// memory.current) and keys within multi-valued files (such as memory.stat).
12378    #[derive(
12379        Clone,
12380        Copy,
12381        Debug,
12382        PartialEq,
12383        Eq,
12384        Hash,
12385        PartialOrd,
12386        Ord,
12387        ::prost::Enumeration
12388    )]
12389    #[repr(i32)]
12390    pub enum MemcgField {
12391        MemcgUnspecified = 0,
12392        /// Single-valued files.
12393        /// memory.current
12394        MemcgCurrent = 1,
12395        /// memory.peak
12396        MemcgPeak = 2,
12397        /// memory.min
12398        MemcgMin = 3,
12399        /// memory.low
12400        MemcgLow = 4,
12401        /// memory.high
12402        MemcgHigh = 5,
12403        /// memory.max
12404        MemcgMax = 6,
12405        /// memory.swap.current
12406        MemcgSwapCurrent = 7,
12407        /// memory.swap.peak
12408        MemcgSwapPeak = 8,
12409        /// memory.swap.high
12410        MemcgSwapHigh = 9,
12411        /// memory.swap.max
12412        MemcgSwapMax = 10,
12413        /// memory.zswap.current
12414        MemcgZswapCurrent = 11,
12415        /// memory.zswap.max
12416        MemcgZswapMax = 12,
12417        /// memory.events (includes events of descendant cgroups).
12418        /// MEMCG_EVENTS_ALL is the same as listing all fields for the file.
12419        MemcgEventsAll = 13,
12420        MemcgEventsLow = 14,
12421        MemcgEventsHigh = 15,
12422        MemcgEventsMax = 16,
12423        MemcgEventsOom = 17,
12424        MemcgEventsOomKill = 18,
12425        MemcgEventsOomGroupKill = 19,
12426        MemcgEventsSockThrottled = 20,
12427        /// memory.events.local (this cgroup only).
12428        /// MEMCG_EVENTS_LOCAL_ALL is the same as listing all fields for the file.
12429        MemcgEventsLocalAll = 21,
12430        MemcgEventsLocalLow = 22,
12431        MemcgEventsLocalHigh = 23,
12432        MemcgEventsLocalMax = 24,
12433        MemcgEventsLocalOom = 25,
12434        MemcgEventsLocalOomKill = 26,
12435        MemcgEventsLocalOomGroupKill = 27,
12436        MemcgEventsLocalSockThrottled = 28,
12437        /// memory.swap.events
12438        /// MEMCG_SWAP_EVENTS_ALL is the same as listing all fields for the file.
12439        MemcgSwapEventsAll = 29,
12440        MemcgSwapEventsHigh = 30,
12441        MemcgSwapEventsMax = 31,
12442        MemcgSwapEventsFail = 32,
12443        /// memory.stat (as of linux v7.3).
12444        /// MEMCG_STAT_ALL is the same as listing all fields for the file.
12445        MemcgStatAll = 33,
12446        MemcgStatAnon = 34,
12447        MemcgStatFile = 35,
12448        MemcgStatKernel = 36,
12449        MemcgStatKernelStack = 37,
12450        MemcgStatPagetables = 38,
12451        MemcgStatSecPagetables = 39,
12452        MemcgStatPercpu = 40,
12453        MemcgStatSock = 41,
12454        MemcgStatVmalloc = 42,
12455        MemcgStatShmem = 43,
12456        MemcgStatZswap = 44,
12457        MemcgStatZswapped = 45,
12458        MemcgStatZswapIncomp = 46,
12459        MemcgStatFileMapped = 47,
12460        MemcgStatFileDirty = 48,
12461        MemcgStatFileWriteback = 49,
12462        MemcgStatSwapcached = 50,
12463        MemcgStatAnonThp = 51,
12464        MemcgStatFileThp = 52,
12465        MemcgStatShmemThp = 53,
12466        MemcgStatInactiveAnon = 54,
12467        MemcgStatActiveAnon = 55,
12468        MemcgStatInactiveFile = 56,
12469        MemcgStatActiveFile = 57,
12470        MemcgStatUnevictable = 58,
12471        MemcgStatSlabReclaimable = 59,
12472        MemcgStatSlabUnreclaimable = 60,
12473        MemcgStatSlab = 61,
12474        MemcgStatHugetlb = 62,
12475        MemcgStatWorkingsetRefaultAnon = 63,
12476        MemcgStatWorkingsetRefaultFile = 64,
12477        MemcgStatWorkingsetActivateAnon = 65,
12478        MemcgStatWorkingsetActivateFile = 66,
12479        MemcgStatWorkingsetRestoreAnon = 67,
12480        MemcgStatWorkingsetRestoreFile = 68,
12481        MemcgStatWorkingsetNodereclaim = 69,
12482        MemcgStatPgdemoteKswapd = 70,
12483        MemcgStatPgdemoteDirect = 71,
12484        MemcgStatPgdemoteKhugepaged = 72,
12485        MemcgStatPgdemoteProactive = 73,
12486        MemcgStatPgstealKswapd = 74,
12487        MemcgStatPgstealDirect = 75,
12488        MemcgStatPgstealKhugepaged = 76,
12489        MemcgStatPgstealProactive = 77,
12490        MemcgStatPgscanKswapd = 78,
12491        MemcgStatPgscanDirect = 79,
12492        MemcgStatPgscanKhugepaged = 80,
12493        MemcgStatPgscanProactive = 81,
12494        MemcgStatPgrefill = 82,
12495        MemcgStatPgpromoteSuccess = 83,
12496        MemcgStatPgscan = 84,
12497        MemcgStatPgsteal = 85,
12498        MemcgStatPswpin = 86,
12499        MemcgStatPswpout = 87,
12500        MemcgStatPgfault = 88,
12501        MemcgStatPgmajfault = 89,
12502        MemcgStatPgactivate = 90,
12503        MemcgStatPgdeactivate = 91,
12504        MemcgStatPglazyfree = 92,
12505        MemcgStatPglazyfreed = 93,
12506        MemcgStatSwpinZero = 94,
12507        MemcgStatSwpoutZero = 95,
12508        MemcgStatZswpin = 96,
12509        MemcgStatZswpout = 97,
12510        MemcgStatZswpwb = 98,
12511        MemcgStatThpFaultAlloc = 99,
12512        MemcgStatThpCollapseAlloc = 100,
12513        MemcgStatThpSwpout = 101,
12514        MemcgStatThpSwpoutFallback = 102,
12515        MemcgStatNumaPagesMigrated = 103,
12516        MemcgStatNumaPteUpdates = 104,
12517        MemcgStatNumaHintFaults = 105,
12518    }
12519    impl MemcgField {
12520        /// String value of the enum field names used in the ProtoBuf definition.
12521        ///
12522        /// The values are not transformed in any way and thus are considered stable
12523        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12524        pub fn as_str_name(&self) -> &'static str {
12525            match self {
12526                Self::MemcgUnspecified => "MEMCG_UNSPECIFIED",
12527                Self::MemcgCurrent => "MEMCG_CURRENT",
12528                Self::MemcgPeak => "MEMCG_PEAK",
12529                Self::MemcgMin => "MEMCG_MIN",
12530                Self::MemcgLow => "MEMCG_LOW",
12531                Self::MemcgHigh => "MEMCG_HIGH",
12532                Self::MemcgMax => "MEMCG_MAX",
12533                Self::MemcgSwapCurrent => "MEMCG_SWAP_CURRENT",
12534                Self::MemcgSwapPeak => "MEMCG_SWAP_PEAK",
12535                Self::MemcgSwapHigh => "MEMCG_SWAP_HIGH",
12536                Self::MemcgSwapMax => "MEMCG_SWAP_MAX",
12537                Self::MemcgZswapCurrent => "MEMCG_ZSWAP_CURRENT",
12538                Self::MemcgZswapMax => "MEMCG_ZSWAP_MAX",
12539                Self::MemcgEventsAll => "MEMCG_EVENTS_ALL",
12540                Self::MemcgEventsLow => "MEMCG_EVENTS_LOW",
12541                Self::MemcgEventsHigh => "MEMCG_EVENTS_HIGH",
12542                Self::MemcgEventsMax => "MEMCG_EVENTS_MAX",
12543                Self::MemcgEventsOom => "MEMCG_EVENTS_OOM",
12544                Self::MemcgEventsOomKill => "MEMCG_EVENTS_OOM_KILL",
12545                Self::MemcgEventsOomGroupKill => "MEMCG_EVENTS_OOM_GROUP_KILL",
12546                Self::MemcgEventsSockThrottled => "MEMCG_EVENTS_SOCK_THROTTLED",
12547                Self::MemcgEventsLocalAll => "MEMCG_EVENTS_LOCAL_ALL",
12548                Self::MemcgEventsLocalLow => "MEMCG_EVENTS_LOCAL_LOW",
12549                Self::MemcgEventsLocalHigh => "MEMCG_EVENTS_LOCAL_HIGH",
12550                Self::MemcgEventsLocalMax => "MEMCG_EVENTS_LOCAL_MAX",
12551                Self::MemcgEventsLocalOom => "MEMCG_EVENTS_LOCAL_OOM",
12552                Self::MemcgEventsLocalOomKill => "MEMCG_EVENTS_LOCAL_OOM_KILL",
12553                Self::MemcgEventsLocalOomGroupKill => "MEMCG_EVENTS_LOCAL_OOM_GROUP_KILL",
12554                Self::MemcgEventsLocalSockThrottled => {
12555                    "MEMCG_EVENTS_LOCAL_SOCK_THROTTLED"
12556                }
12557                Self::MemcgSwapEventsAll => "MEMCG_SWAP_EVENTS_ALL",
12558                Self::MemcgSwapEventsHigh => "MEMCG_SWAP_EVENTS_HIGH",
12559                Self::MemcgSwapEventsMax => "MEMCG_SWAP_EVENTS_MAX",
12560                Self::MemcgSwapEventsFail => "MEMCG_SWAP_EVENTS_FAIL",
12561                Self::MemcgStatAll => "MEMCG_STAT_ALL",
12562                Self::MemcgStatAnon => "MEMCG_STAT_ANON",
12563                Self::MemcgStatFile => "MEMCG_STAT_FILE",
12564                Self::MemcgStatKernel => "MEMCG_STAT_KERNEL",
12565                Self::MemcgStatKernelStack => "MEMCG_STAT_KERNEL_STACK",
12566                Self::MemcgStatPagetables => "MEMCG_STAT_PAGETABLES",
12567                Self::MemcgStatSecPagetables => "MEMCG_STAT_SEC_PAGETABLES",
12568                Self::MemcgStatPercpu => "MEMCG_STAT_PERCPU",
12569                Self::MemcgStatSock => "MEMCG_STAT_SOCK",
12570                Self::MemcgStatVmalloc => "MEMCG_STAT_VMALLOC",
12571                Self::MemcgStatShmem => "MEMCG_STAT_SHMEM",
12572                Self::MemcgStatZswap => "MEMCG_STAT_ZSWAP",
12573                Self::MemcgStatZswapped => "MEMCG_STAT_ZSWAPPED",
12574                Self::MemcgStatZswapIncomp => "MEMCG_STAT_ZSWAP_INCOMP",
12575                Self::MemcgStatFileMapped => "MEMCG_STAT_FILE_MAPPED",
12576                Self::MemcgStatFileDirty => "MEMCG_STAT_FILE_DIRTY",
12577                Self::MemcgStatFileWriteback => "MEMCG_STAT_FILE_WRITEBACK",
12578                Self::MemcgStatSwapcached => "MEMCG_STAT_SWAPCACHED",
12579                Self::MemcgStatAnonThp => "MEMCG_STAT_ANON_THP",
12580                Self::MemcgStatFileThp => "MEMCG_STAT_FILE_THP",
12581                Self::MemcgStatShmemThp => "MEMCG_STAT_SHMEM_THP",
12582                Self::MemcgStatInactiveAnon => "MEMCG_STAT_INACTIVE_ANON",
12583                Self::MemcgStatActiveAnon => "MEMCG_STAT_ACTIVE_ANON",
12584                Self::MemcgStatInactiveFile => "MEMCG_STAT_INACTIVE_FILE",
12585                Self::MemcgStatActiveFile => "MEMCG_STAT_ACTIVE_FILE",
12586                Self::MemcgStatUnevictable => "MEMCG_STAT_UNEVICTABLE",
12587                Self::MemcgStatSlabReclaimable => "MEMCG_STAT_SLAB_RECLAIMABLE",
12588                Self::MemcgStatSlabUnreclaimable => "MEMCG_STAT_SLAB_UNRECLAIMABLE",
12589                Self::MemcgStatSlab => "MEMCG_STAT_SLAB",
12590                Self::MemcgStatHugetlb => "MEMCG_STAT_HUGETLB",
12591                Self::MemcgStatWorkingsetRefaultAnon => {
12592                    "MEMCG_STAT_WORKINGSET_REFAULT_ANON"
12593                }
12594                Self::MemcgStatWorkingsetRefaultFile => {
12595                    "MEMCG_STAT_WORKINGSET_REFAULT_FILE"
12596                }
12597                Self::MemcgStatWorkingsetActivateAnon => {
12598                    "MEMCG_STAT_WORKINGSET_ACTIVATE_ANON"
12599                }
12600                Self::MemcgStatWorkingsetActivateFile => {
12601                    "MEMCG_STAT_WORKINGSET_ACTIVATE_FILE"
12602                }
12603                Self::MemcgStatWorkingsetRestoreAnon => {
12604                    "MEMCG_STAT_WORKINGSET_RESTORE_ANON"
12605                }
12606                Self::MemcgStatWorkingsetRestoreFile => {
12607                    "MEMCG_STAT_WORKINGSET_RESTORE_FILE"
12608                }
12609                Self::MemcgStatWorkingsetNodereclaim => {
12610                    "MEMCG_STAT_WORKINGSET_NODERECLAIM"
12611                }
12612                Self::MemcgStatPgdemoteKswapd => "MEMCG_STAT_PGDEMOTE_KSWAPD",
12613                Self::MemcgStatPgdemoteDirect => "MEMCG_STAT_PGDEMOTE_DIRECT",
12614                Self::MemcgStatPgdemoteKhugepaged => "MEMCG_STAT_PGDEMOTE_KHUGEPAGED",
12615                Self::MemcgStatPgdemoteProactive => "MEMCG_STAT_PGDEMOTE_PROACTIVE",
12616                Self::MemcgStatPgstealKswapd => "MEMCG_STAT_PGSTEAL_KSWAPD",
12617                Self::MemcgStatPgstealDirect => "MEMCG_STAT_PGSTEAL_DIRECT",
12618                Self::MemcgStatPgstealKhugepaged => "MEMCG_STAT_PGSTEAL_KHUGEPAGED",
12619                Self::MemcgStatPgstealProactive => "MEMCG_STAT_PGSTEAL_PROACTIVE",
12620                Self::MemcgStatPgscanKswapd => "MEMCG_STAT_PGSCAN_KSWAPD",
12621                Self::MemcgStatPgscanDirect => "MEMCG_STAT_PGSCAN_DIRECT",
12622                Self::MemcgStatPgscanKhugepaged => "MEMCG_STAT_PGSCAN_KHUGEPAGED",
12623                Self::MemcgStatPgscanProactive => "MEMCG_STAT_PGSCAN_PROACTIVE",
12624                Self::MemcgStatPgrefill => "MEMCG_STAT_PGREFILL",
12625                Self::MemcgStatPgpromoteSuccess => "MEMCG_STAT_PGPROMOTE_SUCCESS",
12626                Self::MemcgStatPgscan => "MEMCG_STAT_PGSCAN",
12627                Self::MemcgStatPgsteal => "MEMCG_STAT_PGSTEAL",
12628                Self::MemcgStatPswpin => "MEMCG_STAT_PSWPIN",
12629                Self::MemcgStatPswpout => "MEMCG_STAT_PSWPOUT",
12630                Self::MemcgStatPgfault => "MEMCG_STAT_PGFAULT",
12631                Self::MemcgStatPgmajfault => "MEMCG_STAT_PGMAJFAULT",
12632                Self::MemcgStatPgactivate => "MEMCG_STAT_PGACTIVATE",
12633                Self::MemcgStatPgdeactivate => "MEMCG_STAT_PGDEACTIVATE",
12634                Self::MemcgStatPglazyfree => "MEMCG_STAT_PGLAZYFREE",
12635                Self::MemcgStatPglazyfreed => "MEMCG_STAT_PGLAZYFREED",
12636                Self::MemcgStatSwpinZero => "MEMCG_STAT_SWPIN_ZERO",
12637                Self::MemcgStatSwpoutZero => "MEMCG_STAT_SWPOUT_ZERO",
12638                Self::MemcgStatZswpin => "MEMCG_STAT_ZSWPIN",
12639                Self::MemcgStatZswpout => "MEMCG_STAT_ZSWPOUT",
12640                Self::MemcgStatZswpwb => "MEMCG_STAT_ZSWPWB",
12641                Self::MemcgStatThpFaultAlloc => "MEMCG_STAT_THP_FAULT_ALLOC",
12642                Self::MemcgStatThpCollapseAlloc => "MEMCG_STAT_THP_COLLAPSE_ALLOC",
12643                Self::MemcgStatThpSwpout => "MEMCG_STAT_THP_SWPOUT",
12644                Self::MemcgStatThpSwpoutFallback => "MEMCG_STAT_THP_SWPOUT_FALLBACK",
12645                Self::MemcgStatNumaPagesMigrated => "MEMCG_STAT_NUMA_PAGES_MIGRATED",
12646                Self::MemcgStatNumaPteUpdates => "MEMCG_STAT_NUMA_PTE_UPDATES",
12647                Self::MemcgStatNumaHintFaults => "MEMCG_STAT_NUMA_HINT_FAULTS",
12648            }
12649        }
12650        /// Creates an enum from field names used in the ProtoBuf definition.
12651        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12652            match value {
12653                "MEMCG_UNSPECIFIED" => Some(Self::MemcgUnspecified),
12654                "MEMCG_CURRENT" => Some(Self::MemcgCurrent),
12655                "MEMCG_PEAK" => Some(Self::MemcgPeak),
12656                "MEMCG_MIN" => Some(Self::MemcgMin),
12657                "MEMCG_LOW" => Some(Self::MemcgLow),
12658                "MEMCG_HIGH" => Some(Self::MemcgHigh),
12659                "MEMCG_MAX" => Some(Self::MemcgMax),
12660                "MEMCG_SWAP_CURRENT" => Some(Self::MemcgSwapCurrent),
12661                "MEMCG_SWAP_PEAK" => Some(Self::MemcgSwapPeak),
12662                "MEMCG_SWAP_HIGH" => Some(Self::MemcgSwapHigh),
12663                "MEMCG_SWAP_MAX" => Some(Self::MemcgSwapMax),
12664                "MEMCG_ZSWAP_CURRENT" => Some(Self::MemcgZswapCurrent),
12665                "MEMCG_ZSWAP_MAX" => Some(Self::MemcgZswapMax),
12666                "MEMCG_EVENTS_ALL" => Some(Self::MemcgEventsAll),
12667                "MEMCG_EVENTS_LOW" => Some(Self::MemcgEventsLow),
12668                "MEMCG_EVENTS_HIGH" => Some(Self::MemcgEventsHigh),
12669                "MEMCG_EVENTS_MAX" => Some(Self::MemcgEventsMax),
12670                "MEMCG_EVENTS_OOM" => Some(Self::MemcgEventsOom),
12671                "MEMCG_EVENTS_OOM_KILL" => Some(Self::MemcgEventsOomKill),
12672                "MEMCG_EVENTS_OOM_GROUP_KILL" => Some(Self::MemcgEventsOomGroupKill),
12673                "MEMCG_EVENTS_SOCK_THROTTLED" => Some(Self::MemcgEventsSockThrottled),
12674                "MEMCG_EVENTS_LOCAL_ALL" => Some(Self::MemcgEventsLocalAll),
12675                "MEMCG_EVENTS_LOCAL_LOW" => Some(Self::MemcgEventsLocalLow),
12676                "MEMCG_EVENTS_LOCAL_HIGH" => Some(Self::MemcgEventsLocalHigh),
12677                "MEMCG_EVENTS_LOCAL_MAX" => Some(Self::MemcgEventsLocalMax),
12678                "MEMCG_EVENTS_LOCAL_OOM" => Some(Self::MemcgEventsLocalOom),
12679                "MEMCG_EVENTS_LOCAL_OOM_KILL" => Some(Self::MemcgEventsLocalOomKill),
12680                "MEMCG_EVENTS_LOCAL_OOM_GROUP_KILL" => {
12681                    Some(Self::MemcgEventsLocalOomGroupKill)
12682                }
12683                "MEMCG_EVENTS_LOCAL_SOCK_THROTTLED" => {
12684                    Some(Self::MemcgEventsLocalSockThrottled)
12685                }
12686                "MEMCG_SWAP_EVENTS_ALL" => Some(Self::MemcgSwapEventsAll),
12687                "MEMCG_SWAP_EVENTS_HIGH" => Some(Self::MemcgSwapEventsHigh),
12688                "MEMCG_SWAP_EVENTS_MAX" => Some(Self::MemcgSwapEventsMax),
12689                "MEMCG_SWAP_EVENTS_FAIL" => Some(Self::MemcgSwapEventsFail),
12690                "MEMCG_STAT_ALL" => Some(Self::MemcgStatAll),
12691                "MEMCG_STAT_ANON" => Some(Self::MemcgStatAnon),
12692                "MEMCG_STAT_FILE" => Some(Self::MemcgStatFile),
12693                "MEMCG_STAT_KERNEL" => Some(Self::MemcgStatKernel),
12694                "MEMCG_STAT_KERNEL_STACK" => Some(Self::MemcgStatKernelStack),
12695                "MEMCG_STAT_PAGETABLES" => Some(Self::MemcgStatPagetables),
12696                "MEMCG_STAT_SEC_PAGETABLES" => Some(Self::MemcgStatSecPagetables),
12697                "MEMCG_STAT_PERCPU" => Some(Self::MemcgStatPercpu),
12698                "MEMCG_STAT_SOCK" => Some(Self::MemcgStatSock),
12699                "MEMCG_STAT_VMALLOC" => Some(Self::MemcgStatVmalloc),
12700                "MEMCG_STAT_SHMEM" => Some(Self::MemcgStatShmem),
12701                "MEMCG_STAT_ZSWAP" => Some(Self::MemcgStatZswap),
12702                "MEMCG_STAT_ZSWAPPED" => Some(Self::MemcgStatZswapped),
12703                "MEMCG_STAT_ZSWAP_INCOMP" => Some(Self::MemcgStatZswapIncomp),
12704                "MEMCG_STAT_FILE_MAPPED" => Some(Self::MemcgStatFileMapped),
12705                "MEMCG_STAT_FILE_DIRTY" => Some(Self::MemcgStatFileDirty),
12706                "MEMCG_STAT_FILE_WRITEBACK" => Some(Self::MemcgStatFileWriteback),
12707                "MEMCG_STAT_SWAPCACHED" => Some(Self::MemcgStatSwapcached),
12708                "MEMCG_STAT_ANON_THP" => Some(Self::MemcgStatAnonThp),
12709                "MEMCG_STAT_FILE_THP" => Some(Self::MemcgStatFileThp),
12710                "MEMCG_STAT_SHMEM_THP" => Some(Self::MemcgStatShmemThp),
12711                "MEMCG_STAT_INACTIVE_ANON" => Some(Self::MemcgStatInactiveAnon),
12712                "MEMCG_STAT_ACTIVE_ANON" => Some(Self::MemcgStatActiveAnon),
12713                "MEMCG_STAT_INACTIVE_FILE" => Some(Self::MemcgStatInactiveFile),
12714                "MEMCG_STAT_ACTIVE_FILE" => Some(Self::MemcgStatActiveFile),
12715                "MEMCG_STAT_UNEVICTABLE" => Some(Self::MemcgStatUnevictable),
12716                "MEMCG_STAT_SLAB_RECLAIMABLE" => Some(Self::MemcgStatSlabReclaimable),
12717                "MEMCG_STAT_SLAB_UNRECLAIMABLE" => Some(Self::MemcgStatSlabUnreclaimable),
12718                "MEMCG_STAT_SLAB" => Some(Self::MemcgStatSlab),
12719                "MEMCG_STAT_HUGETLB" => Some(Self::MemcgStatHugetlb),
12720                "MEMCG_STAT_WORKINGSET_REFAULT_ANON" => {
12721                    Some(Self::MemcgStatWorkingsetRefaultAnon)
12722                }
12723                "MEMCG_STAT_WORKINGSET_REFAULT_FILE" => {
12724                    Some(Self::MemcgStatWorkingsetRefaultFile)
12725                }
12726                "MEMCG_STAT_WORKINGSET_ACTIVATE_ANON" => {
12727                    Some(Self::MemcgStatWorkingsetActivateAnon)
12728                }
12729                "MEMCG_STAT_WORKINGSET_ACTIVATE_FILE" => {
12730                    Some(Self::MemcgStatWorkingsetActivateFile)
12731                }
12732                "MEMCG_STAT_WORKINGSET_RESTORE_ANON" => {
12733                    Some(Self::MemcgStatWorkingsetRestoreAnon)
12734                }
12735                "MEMCG_STAT_WORKINGSET_RESTORE_FILE" => {
12736                    Some(Self::MemcgStatWorkingsetRestoreFile)
12737                }
12738                "MEMCG_STAT_WORKINGSET_NODERECLAIM" => {
12739                    Some(Self::MemcgStatWorkingsetNodereclaim)
12740                }
12741                "MEMCG_STAT_PGDEMOTE_KSWAPD" => Some(Self::MemcgStatPgdemoteKswapd),
12742                "MEMCG_STAT_PGDEMOTE_DIRECT" => Some(Self::MemcgStatPgdemoteDirect),
12743                "MEMCG_STAT_PGDEMOTE_KHUGEPAGED" => {
12744                    Some(Self::MemcgStatPgdemoteKhugepaged)
12745                }
12746                "MEMCG_STAT_PGDEMOTE_PROACTIVE" => Some(Self::MemcgStatPgdemoteProactive),
12747                "MEMCG_STAT_PGSTEAL_KSWAPD" => Some(Self::MemcgStatPgstealKswapd),
12748                "MEMCG_STAT_PGSTEAL_DIRECT" => Some(Self::MemcgStatPgstealDirect),
12749                "MEMCG_STAT_PGSTEAL_KHUGEPAGED" => Some(Self::MemcgStatPgstealKhugepaged),
12750                "MEMCG_STAT_PGSTEAL_PROACTIVE" => Some(Self::MemcgStatPgstealProactive),
12751                "MEMCG_STAT_PGSCAN_KSWAPD" => Some(Self::MemcgStatPgscanKswapd),
12752                "MEMCG_STAT_PGSCAN_DIRECT" => Some(Self::MemcgStatPgscanDirect),
12753                "MEMCG_STAT_PGSCAN_KHUGEPAGED" => Some(Self::MemcgStatPgscanKhugepaged),
12754                "MEMCG_STAT_PGSCAN_PROACTIVE" => Some(Self::MemcgStatPgscanProactive),
12755                "MEMCG_STAT_PGREFILL" => Some(Self::MemcgStatPgrefill),
12756                "MEMCG_STAT_PGPROMOTE_SUCCESS" => Some(Self::MemcgStatPgpromoteSuccess),
12757                "MEMCG_STAT_PGSCAN" => Some(Self::MemcgStatPgscan),
12758                "MEMCG_STAT_PGSTEAL" => Some(Self::MemcgStatPgsteal),
12759                "MEMCG_STAT_PSWPIN" => Some(Self::MemcgStatPswpin),
12760                "MEMCG_STAT_PSWPOUT" => Some(Self::MemcgStatPswpout),
12761                "MEMCG_STAT_PGFAULT" => Some(Self::MemcgStatPgfault),
12762                "MEMCG_STAT_PGMAJFAULT" => Some(Self::MemcgStatPgmajfault),
12763                "MEMCG_STAT_PGACTIVATE" => Some(Self::MemcgStatPgactivate),
12764                "MEMCG_STAT_PGDEACTIVATE" => Some(Self::MemcgStatPgdeactivate),
12765                "MEMCG_STAT_PGLAZYFREE" => Some(Self::MemcgStatPglazyfree),
12766                "MEMCG_STAT_PGLAZYFREED" => Some(Self::MemcgStatPglazyfreed),
12767                "MEMCG_STAT_SWPIN_ZERO" => Some(Self::MemcgStatSwpinZero),
12768                "MEMCG_STAT_SWPOUT_ZERO" => Some(Self::MemcgStatSwpoutZero),
12769                "MEMCG_STAT_ZSWPIN" => Some(Self::MemcgStatZswpin),
12770                "MEMCG_STAT_ZSWPOUT" => Some(Self::MemcgStatZswpout),
12771                "MEMCG_STAT_ZSWPWB" => Some(Self::MemcgStatZswpwb),
12772                "MEMCG_STAT_THP_FAULT_ALLOC" => Some(Self::MemcgStatThpFaultAlloc),
12773                "MEMCG_STAT_THP_COLLAPSE_ALLOC" => Some(Self::MemcgStatThpCollapseAlloc),
12774                "MEMCG_STAT_THP_SWPOUT" => Some(Self::MemcgStatThpSwpout),
12775                "MEMCG_STAT_THP_SWPOUT_FALLBACK" => {
12776                    Some(Self::MemcgStatThpSwpoutFallback)
12777                }
12778                "MEMCG_STAT_NUMA_PAGES_MIGRATED" => {
12779                    Some(Self::MemcgStatNumaPagesMigrated)
12780                }
12781                "MEMCG_STAT_NUMA_PTE_UPDATES" => Some(Self::MemcgStatNumaPteUpdates),
12782                "MEMCG_STAT_NUMA_HINT_FAULTS" => Some(Self::MemcgStatNumaHintFaults),
12783                _ => None,
12784            }
12785        }
12786    }
12787}
12788/// Configuration for the "linux.systemd_journald" data source.
12789/// Next field id: 4
12790#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12791pub struct SystemdJournaldConfig {
12792    /// Minimum syslog priority level to capture (inclusive).
12793    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
12794    /// Default (0 / unset): capture all priorities (equivalent to 7).
12795    #[prost(uint32, optional, tag = "1")]
12796    pub min_prio: ::core::option::Option<u32>,
12797    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
12798    /// matches one of these strings.
12799    #[prost(string, repeated, tag = "2")]
12800    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12801    /// If non-empty, only capture journal entries from these systemd unit names.
12802    #[prost(string, repeated, tag = "3")]
12803    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12804}
12805/// QnxConfig is used with trace_qnx_probes build from
12806/// <https://github.com/qnx-ports/perfetto>
12807#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12808pub struct QnxConfig {
12809    /// The number of buffers that tracelog will init for the QNX trace.
12810    #[prost(uint32, optional, tag = "1")]
12811    pub qnx_kernel_buffers: ::core::option::Option<u32>,
12812    /// The number of kernel buffers that tracelog will init for the QNX trace.
12813    #[prost(uint32, optional, tag = "2")]
12814    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
12815    /// Flag indicating whether the QNX kernel tracing should produce wide
12816    /// events which contain additional data or fast events which are most
12817    /// concise. In fast mode we lose the priority information
12818    #[prost(bool, optional, tag = "3")]
12819    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
12820    /// The number of pages initialized by default the parser's page cache.
12821    #[prost(uint32, optional, tag = "4")]
12822    pub qnx_cache_pages: ::core::option::Option<u32>,
12823    /// The max pages the page cache should allocate (must be at least as big)
12824    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
12825    /// unbounded. The cache will prefer to re-use existing pages so growth will
12826    /// only happen when needed (when parser is not keeping up).
12827    #[prost(int32, optional, tag = "5")]
12828    pub qnx_cache_max_pages: ::core::option::Option<i32>,
12829    /// The initial size of the the buffer used to hold the trace header values
12830    /// this dynamic buffer will grow as needed but reallocs can be avoided by
12831    /// selecting an initial size large enough to hold all the initial header
12832    /// data.
12833    #[prost(uint32, optional, tag = "6")]
12834    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
12835}
12836/// The configuration that is passed to each data source when starting tracing.
12837///
12838/// Keep the lower IDs (up to 99) for fields that are *not* specific to
12839/// data-sources and needs to be processed by the traced daemon.
12840///
12841/// All data source config fields must be marked as \[lazy=true\]. This prevents
12842/// the proto-to-cpp generator from recursing into those when generating the
12843/// cpp classes and polluting tracing/core with data-source-specific classes.
12844/// Instead they are treated as opaque strings containing raw proto bytes.
12845///
12846/// Next id: 152
12847#[derive(Clone, PartialEq, ::prost::Message)]
12848pub struct DataSourceConfig {
12849    /// Data source unique name, e.g., "linux.ftrace". This must match
12850    /// the name passed by the data source when it registers (see
12851    /// RegisterDataSource()).
12852    #[prost(string, optional, tag = "1")]
12853    pub name: ::core::option::Option<::prost::alloc::string::String>,
12854    /// The index of the logging buffer where TracePacket(s) will be stored.
12855    /// This field is quite subtle as it has a double semantic:
12856    /// 1) When the config is passed, this field is a 0-based index relative to the
12857    ///     buffer array in the TraceConfig and defines the mapping between data
12858    ///     sources and config. From v54 this is optional because the user can
12859    ///     instead use target_buffer_name.
12860    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
12861    ///     producer, it overwrites this field with the global buffer index (which
12862    ///     depends on other tracing sessions active). This tells the producer which
12863    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
12864    ///     service always sets the resolved global id, even when using
12865    ///     `target_buffer_name`.
12866    /// In hindsight we should have used two different fields given even in v0 they
12867    /// had a different semantic. But now it's too late as this would be a major
12868    /// protocol breaking change.
12869    #[prost(uint32, optional, tag = "2")]
12870    pub target_buffer: ::core::option::Option<u32>,
12871    /// Alternative to |target_buffer|. References a buffer by name (as specified
12872    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
12873    /// readable and less error-prone than using buffer indices.
12874    /// If both |target_buffer| and |target_buffer_name| are specified, they must
12875    /// refer to the same buffer, otherwise the service will reject the config.
12876    /// Using both fields allows configs to work with both old and new versions
12877    /// of the tracing service. Introduced in v54.
12878    #[prost(string, optional, tag = "11")]
12879    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
12880    /// Set by the service to indicate the duration of the trace.
12881    /// DO NOT SET in consumer as this will be overridden by the service.
12882    #[prost(uint32, optional, tag = "3")]
12883    pub trace_duration_ms: ::core::option::Option<u32>,
12884    /// If true, |trace_duration_ms| should count also time in suspend. This
12885    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
12886    #[prost(bool, optional, tag = "122")]
12887    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12888    /// Set by the service to indicate how long it waits after StopDataSource.
12889    /// DO NOT SET in consumer as this will be overridden by the service.
12890    #[prost(uint32, optional, tag = "7")]
12891    pub stop_timeout_ms: ::core::option::Option<u32>,
12892    /// Set by the service to indicate whether this tracing session has extra
12893    /// guardrails.
12894    /// DO NOT SET in consumer as this will be overridden by the service.
12895    #[prost(bool, optional, tag = "6")]
12896    pub enable_extra_guardrails: ::core::option::Option<bool>,
12897    /// Set by the service to indicate which user initiated this trace.
12898    /// DO NOT SET in consumer as this will be overridden by the service.
12899    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
12900    pub session_initiator: ::core::option::Option<i32>,
12901    /// Set by the service to indicate which tracing session the data source
12902    /// belongs to. The intended use case for this is checking if two data sources,
12903    /// one of which produces metadata for the other one, belong to the same trace
12904    /// session and hence should be linked together.
12905    /// This field was introduced in Aug 2018 after Android P.
12906    /// DO NOT SET in consumer as this will be overridden by the service.
12907    #[prost(uint64, optional, tag = "4")]
12908    pub tracing_session_id: ::core::option::Option<u64>,
12909    /// How to behave when the producer runs out of space in the shared memory
12910    /// buffer. This is only honored by some data sources (in the SDK, the data
12911    /// sources registered with a configurable buffer exhausted policy).
12912    #[prost(
12913        enumeration = "data_source_config::BufferExhaustedPolicy",
12914        optional,
12915        tag = "9"
12916    )]
12917    pub buffer_exhausted_policy: ::core::option::Option<i32>,
12918    #[prost(message, optional, tag = "10")]
12919    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12920    /// If specified, the data source requires the tracing service to process
12921    /// overwritten packets (patches) using a ProtoVM instance with this config.
12922    /// The ProtoVM program is specified at data source registration time through
12923    /// the descriptor.
12924    ///
12925    /// TODO(primiano): today when we enable a protovm_config, we actually accept
12926    /// that if N producers advertise M different versions of the same program we
12927    /// will create M instances of that program.
12928    /// To overcome this, we could move the program to the TraceConfig. But doing
12929    /// so would bloat the trace config size too big and create problems to statsd.
12930    /// Once the config store (b/482305876) exists we should move protovm programs
12931    /// onto that.
12932    #[prost(message, optional, tag = "12")]
12933    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
12934    /// Set by the service to indicate that this data source can write to its
12935    /// target buffer through the tracing v2 ring buffer. True only if:
12936    /// - v2 is in the connection's common ProtocolAbiVersion mask, and
12937    /// - the target buffer is a TraceBufferV2.
12938    /// Absent means false. True permits v2 but does not select it. The producer
12939    /// can select v1 only if v1 is also in the common mask. If no common version
12940    /// is permitted by the config and target buffer, the instance cannot run.
12941    /// One buffer can hold both formats. Each writer sequence uses one format.
12942    ///
12943    /// Not supported: a ProtoVM data source on the same buffer.
12944    /// DO NOT SET in consumer as this will be overridden by the service.
12945    #[prost(bool, optional, tag = "147")]
12946    pub supports_tracing_v2: ::core::option::Option<bool>,
12947    #[prost(message, optional, tag = "148")]
12948    pub experimental_tracing_v2: ::core::option::Option<
12949        data_source_config::ExperimentalTracingV2Config,
12950    >,
12951    /// Data source name: linux.ftrace
12952    #[prost(message, optional, tag = "100")]
12953    pub ftrace_config: ::core::option::Option<FtraceConfig>,
12954    /// Data source name: linux.inode_file_map
12955    #[prost(message, optional, tag = "102")]
12956    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
12957    /// Data source name: linux.process_stats
12958    #[prost(message, optional, tag = "103")]
12959    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
12960    /// Data source name: linux.sys_stats
12961    #[prost(message, optional, tag = "104")]
12962    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
12963    /// Data source name: android.heapprofd
12964    /// Introduced in Android 10.
12965    #[prost(message, optional, tag = "105")]
12966    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
12967    /// Data source name: android.java_hprof
12968    /// Introduced in Android 11.
12969    #[prost(message, optional, tag = "110")]
12970    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
12971    /// Data source name: android.power
12972    #[prost(message, optional, tag = "106")]
12973    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
12974    /// Data source name: android.log
12975    #[prost(message, optional, tag = "107")]
12976    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
12977    /// Data source name: gpu.counters
12978    #[prost(message, optional, tag = "108")]
12979    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
12980    /// Data source name: android.game_interventions
12981    #[prost(message, optional, tag = "116")]
12982    pub android_game_intervention_list_config: ::core::option::Option<
12983        AndroidGameInterventionListConfig,
12984    >,
12985    /// Data source name: android.packages_list
12986    #[prost(message, optional, tag = "109")]
12987    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
12988    /// Data source name: linux.perf
12989    #[prost(message, optional, tag = "111")]
12990    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
12991    /// Data source name: vulkan.memory_tracker
12992    #[prost(message, optional, tag = "112")]
12993    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
12994    /// Data source name: track_event
12995    #[prost(message, optional, tag = "113")]
12996    pub track_event_config: ::core::option::Option<TrackEventConfig>,
12997    /// Data source name: android.polled_state
12998    #[prost(message, optional, tag = "114")]
12999    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
13000    /// Data source name: android.system_property
13001    #[prost(message, optional, tag = "118")]
13002    pub android_system_property_config: ::core::option::Option<
13003        AndroidSystemPropertyConfig,
13004    >,
13005    /// Data source name: android.statsd
13006    #[prost(message, optional, tag = "117")]
13007    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
13008    /// Data source name: linux.system_info
13009    #[prost(message, optional, tag = "119")]
13010    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
13011    /// Data source name: linux.frozen_ftrace
13012    #[prost(message, optional, tag = "136")]
13013    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
13014    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
13015    /// avoid proto serialization and de-serialization there because that would
13016    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
13017    /// C++ class for it so it can pass around plain C++ objets.
13018    #[prost(message, optional, tag = "101")]
13019    pub chrome_config: ::core::option::Option<ChromeConfig>,
13020    /// Data source name: code.v8.dev
13021    #[prost(message, optional, tag = "127")]
13022    pub v8_config: ::core::option::Option<V8Config>,
13023    /// If an interceptor is specified here, packets for this data source will be
13024    /// rerouted to the interceptor instead of the main trace buffer. This can be
13025    /// used, for example, to write trace data into ETW or for logging trace points
13026    /// to the console.
13027    ///
13028    /// Note that interceptors are only supported by data sources registered
13029    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
13030    /// traced_probes) may not support interception.
13031    #[prost(message, optional, tag = "115")]
13032    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
13033    /// Data source name: android.network_packets.
13034    /// Introduced in Android 14 (U).
13035    #[prost(message, optional, tag = "120")]
13036    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
13037    /// Data source name: android.surfaceflinger.layers
13038    #[prost(message, optional, tag = "121")]
13039    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
13040    /// Data source name: android.surfaceflinger.transactions
13041    #[prost(message, optional, tag = "123")]
13042    pub surfaceflinger_transactions_config: ::core::option::Option<
13043        SurfaceFlingerTransactionsConfig,
13044    >,
13045    /// Data source name: android.sdk_sysprop_guard
13046    /// Introduced in Android 14 (U) QPR1.
13047    #[prost(message, optional, tag = "124")]
13048    pub android_sdk_sysprop_guard_config: ::core::option::Option<
13049        AndroidSdkSyspropGuardConfig,
13050    >,
13051    /// Data source name: windows.etw
13052    #[prost(message, optional, tag = "125")]
13053    pub etw_config: ::core::option::Option<EtwConfig>,
13054    /// Data source name: android.protolog
13055    #[prost(message, optional, tag = "126")]
13056    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
13057    /// Data source name: android.input.inputevent
13058    #[prost(message, optional, tag = "128")]
13059    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
13060    /// Data source name: android.pixel.modem
13061    #[prost(message, optional, tag = "129")]
13062    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
13063    /// Data source name: android.windowmanager
13064    #[prost(message, optional, tag = "130")]
13065    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
13066    /// Data source name: org.chromium.system_metrics
13067    #[prost(message, optional, tag = "131")]
13068    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
13069    /// Data source name: android.kernel_wakelocks
13070    #[prost(message, optional, tag = "132")]
13071    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
13072    /// Data source name: gpu.renderstages
13073    #[prost(message, optional, tag = "133")]
13074    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
13075    /// Data source name: org.chromium.histogram_samples
13076    #[prost(message, optional, tag = "134")]
13077    pub chromium_histogram_samples: ::core::option::Option<
13078        ChromiumHistogramSamplesConfig,
13079    >,
13080    /// Data source name: android.app_wakelocks
13081    #[prost(message, optional, tag = "135")]
13082    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
13083    /// Data source name: android.cpu_per_uid
13084    #[prost(message, optional, tag = "137")]
13085    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
13086    /// Data source name: android.user_list
13087    #[prost(message, optional, tag = "138")]
13088    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
13089    /// Data source name: android.inputmethod
13090    #[prost(message, optional, tag = "139")]
13091    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
13092    /// Data source name: android.aflags
13093    #[prost(message, optional, tag = "140")]
13094    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
13095    /// Data source name: linux.systemd_journald
13096    #[prost(message, optional, tag = "141")]
13097    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
13098    /// Data source name: android.display.video
13099    #[prost(message, optional, tag = "142")]
13100    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
13101    /// Data source name: org.chromium.sampler_profiler
13102    #[prost(message, optional, tag = "143")]
13103    pub chromium_stack_sampling_profiler: ::core::option::Option<
13104        ChromiumStackSamplingProfilerConfig,
13105    >,
13106    /// Data source name: org.chromium.native_heap_profiler
13107    #[prost(message, optional, tag = "144")]
13108    pub chromium_sampling_heap_profiler: ::core::option::Option<
13109        ChromiumSamplingHeapProfilerConfig,
13110    >,
13111    /// Data source name: android.process_state
13112    #[prost(message, optional, tag = "145")]
13113    pub android_process_state_config: ::core::option::Option<AndroidProcessStateConfig>,
13114    /// Data source name: linux.smaps
13115    #[prost(message, optional, tag = "146")]
13116    pub process_smaps_config: ::core::option::Option<ProcessSmapsConfig>,
13117    /// Data source name: qnx.kernel
13118    #[prost(message, optional, tag = "150")]
13119    pub qnx_config: ::core::option::Option<QnxConfig>,
13120    /// Data source name: linux.cgroup
13121    #[prost(message, optional, tag = "151")]
13122    pub cgroup_config: ::core::option::Option<CgroupConfig>,
13123    /// This is a fallback mechanism to send a free-form text config to the
13124    /// producer. In theory this should never be needed. All the code that
13125    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
13126    /// the trace config proto and propagate unknown fields. However, if anything
13127    /// in the pipeline (client or backend) ends up breaking this forward compat
13128    /// plan, this field will become the escape hatch to allow future data sources
13129    /// to get some meaningful configuration.
13130    #[prost(string, optional, tag = "1000")]
13131    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
13132    /// This field is only used for testing.
13133    #[prost(message, optional, tag = "1001")]
13134    pub for_testing: ::core::option::Option<TestConfig>,
13135}
13136/// Nested message and enum types in `DataSourceConfig`.
13137pub mod data_source_config {
13138    /// Experimental.
13139    /// Lets the producer write this data source through the tracing v2 ring
13140    /// buffer.
13141    /// - Selecting v2 requires a TRACE_BUFFER_V2 target buffer and support from
13142    ///    the producer and data source.
13143    /// - Instances that do not select v2 use v1 only if the connection permits it.
13144    ///    If neither transport is available, writers discard their data.
13145    /// - If the producer cannot create or attach the ring buffer, selected
13146    ///    instances discard their data and do not fall back to v1.
13147    #[derive(Clone, PartialEq, ::prost::Message)]
13148    pub struct ExperimentalTracingV2Config {
13149        /// Percent of instances that use v2, from 0 (the default) to 100.
13150        /// The service rejects a nonzero use_v2_probability_percent and a
13151        /// ProtoVM data source on the same buffer.
13152        #[prost(uint32, optional, tag = "1")]
13153        pub use_v2_probability_percent: ::core::option::Option<u32>,
13154        /// The producer chooses one option at random, by weight, when it creates
13155        /// the ring buffer.
13156        /// With no option, or with all weights 0, it uses 256 bytes.
13157        ///
13158        /// The first instance that selects v2 chooses the size for the connection,
13159        /// and the options of later instances have no effect.
13160        #[prost(message, repeated, tag = "2")]
13161        pub chunk_size_options: ::prost::alloc::vec::Vec<
13162            experimental_tracing_v2_config::ChunkSizeOption,
13163        >,
13164        /// When the writers ask the service to drain the ring buffer.
13165        /// After each publication, a writer counts the ring buffer positions that
13166        /// wait for the reader, and asks for a drain when the count reaches:
13167        /// - 0 or absent: 25% of the positions.
13168        /// - 1 to 100: this percent of the positions, and at least one.
13169        /// - -1: one position, so it asks after every publication.
13170        /// Flushes and full ring buffers still ask for a drain at once.
13171        /// The service rejects other values.
13172        ///
13173        /// As for chunk_size_options, the first instance that selects v2 sets it
13174        /// for the connection, and the values of later instances have no effect.
13175        #[prost(int32, optional, tag = "3")]
13176        pub drain_occupancy_percent: ::core::option::Option<i32>,
13177    }
13178    /// Nested message and enum types in `ExperimentalTracingV2Config`.
13179    pub mod experimental_tracing_v2_config {
13180        /// One chunk size that the producer can choose for the ring buffer.
13181        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13182        pub struct ChunkSizeOption {
13183            /// Bytes per chunk, from 256 to 65536, and a multiple of 4.
13184            /// The service rejects other values.
13185            #[prost(uint32, optional, tag = "1")]
13186            pub size_bytes: ::core::option::Option<u32>,
13187            /// The chance of this option, relative to the other options.
13188            /// Absent means 1, and 0 means never.
13189            #[prost(uint32, optional, tag = "2")]
13190            pub weight: ::core::option::Option<u32>,
13191        }
13192    }
13193    #[derive(
13194        Clone,
13195        Copy,
13196        Debug,
13197        PartialEq,
13198        Eq,
13199        Hash,
13200        PartialOrd,
13201        Ord,
13202        ::prost::Enumeration
13203    )]
13204    #[repr(i32)]
13205    pub enum SessionInitiator {
13206        Unspecified = 0,
13207        /// This trace was initiated from a trusted system app has DUMP and
13208        /// USAGE_STATS permission. This system app is expected to not expose the
13209        /// trace to the user of the device.
13210        /// This is determined by checking the UID initiating the trace.
13211        TrustedSystem = 1,
13212    }
13213    impl SessionInitiator {
13214        /// String value of the enum field names used in the ProtoBuf definition.
13215        ///
13216        /// The values are not transformed in any way and thus are considered stable
13217        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13218        pub fn as_str_name(&self) -> &'static str {
13219            match self {
13220                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
13221                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
13222            }
13223        }
13224        /// Creates an enum from field names used in the ProtoBuf definition.
13225        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13226            match value {
13227                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
13228                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
13229                _ => None,
13230            }
13231        }
13232    }
13233    #[derive(
13234        Clone,
13235        Copy,
13236        Debug,
13237        PartialEq,
13238        Eq,
13239        Hash,
13240        PartialOrd,
13241        Ord,
13242        ::prost::Enumeration
13243    )]
13244    #[repr(i32)]
13245    pub enum BufferExhaustedPolicy {
13246        /// The data source will use its default buffer exhausted policy, specified
13247        /// by the code when the data source is registered.
13248        BufferExhaustedUnspecified = 0,
13249        /// The data source will drop packets when there's no space in the shared
13250        /// memory buffer.
13251        BufferExhaustedDrop = 1,
13252        /// The data source will wait when there's no space in the shared memory
13253        /// buffer. If there's still not space, after a few seconds, the whole
13254        /// producer process will be aborted.
13255        BufferExhaustedStallThenAbort = 2,
13256        /// The data source will wait when there's no space in the shared memory
13257        /// buffer.  If there's still not space, after a few seconds, the data source
13258        /// will drop packets.
13259        BufferExhaustedStallThenDrop = 3,
13260    }
13261    impl BufferExhaustedPolicy {
13262        /// String value of the enum field names used in the ProtoBuf definition.
13263        ///
13264        /// The values are not transformed in any way and thus are considered stable
13265        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13266        pub fn as_str_name(&self) -> &'static str {
13267            match self {
13268                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
13269                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
13270                Self::BufferExhaustedStallThenAbort => {
13271                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
13272                }
13273                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
13274            }
13275        }
13276        /// Creates an enum from field names used in the ProtoBuf definition.
13277        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13278            match value {
13279                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
13280                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
13281                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
13282                    Some(Self::BufferExhaustedStallThenAbort)
13283                }
13284                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
13285                    Some(Self::BufferExhaustedStallThenDrop)
13286                }
13287                _ => None,
13288            }
13289        }
13290    }
13291}
13292/// The overall config that is used when starting a new tracing session through
13293/// ProducerPort::StartTracing().
13294/// It contains the general config for the logging buffer(s) and the configs for
13295/// all the data source being enabled.
13296///
13297/// Next id: 51.
13298#[derive(Clone, PartialEq, ::prost::Message)]
13299pub struct TraceConfig {
13300    #[prost(message, repeated, tag = "1")]
13301    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
13302    /// Enables compaction after reads for this session's TraceBufferV2.
13303    /// Defaults to false and does not affect V1, DISCARD, or read-only buffers.
13304    #[prost(bool, optional, tag = "50")]
13305    pub experimental_trace_buffer_v2_compaction: ::core::option::Option<bool>,
13306    #[prost(message, repeated, tag = "2")]
13307    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
13308    #[prost(message, optional, tag = "20")]
13309    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
13310    /// If specified, the trace will be stopped |duration_ms| after starting.
13311    /// This does *not* count the time the system is suspended, so we will run
13312    /// for duration_ms of system activity, not wall time.
13313    ///
13314    /// However in case of traces with triggers, see
13315    /// TriggerConfig.trigger_timeout_ms instead.
13316    #[prost(uint32, optional, tag = "3")]
13317    pub duration_ms: ::core::option::Option<u32>,
13318    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
13319    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
13320    /// Linux/Android, no-op on other platforms. This is used when dealing with
13321    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
13322    /// wall-time, making them more likely to hit device reboots (and hence loss).
13323    /// This option also changes consistently the semantic of
13324    /// TriggerConfig.stop_delay_ms.
13325    #[prost(bool, optional, tag = "36")]
13326    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
13327    /// This is set when --dropbox is passed to the Perfetto command line client
13328    /// and enables guardrails that limit resource usage for traces requested
13329    /// by statsd.
13330    #[prost(bool, optional, tag = "4")]
13331    pub enable_extra_guardrails: ::core::option::Option<bool>,
13332    /// Reject producers that are not running under the same UID as the tracing
13333    /// service.
13334    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
13335    pub lockdown_mode: ::core::option::Option<i32>,
13336    #[prost(message, repeated, tag = "6")]
13337    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
13338    /// Statsd-specific metadata.
13339    #[prost(message, optional, tag = "7")]
13340    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
13341    /// When true && |output_path| is empty, the EnableTracing() request must
13342    /// provide a file descriptor. The service will then periodically read packets
13343    /// out of the trace buffer and store it into the passed file.
13344    /// If |output_path| is not empty no fd should be passed, the service
13345    /// will create a new file and write into that (see comment below).
13346    #[prost(bool, optional, tag = "8")]
13347    pub write_into_file: ::core::option::Option<bool>,
13348    /// This must point to a non-existing file. If the file exists the service
13349    /// will NOT overwrite and will fail instead as a security precaution.
13350    /// On Android, when this is used with the system traced, the path must be
13351    /// within /data/misc/perfetto-traces/ or the trace will fail.
13352    /// This option has been introduced in Android R. Before R write_into_file
13353    /// can be used only with the "pass a file descriptor over IPC" mode.
13354    #[prost(string, optional, tag = "29")]
13355    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
13356    /// Optional. If non-zero tunes the write period. A min value of 100ms is
13357    /// enforced (i.e. smaller values are ignored).
13358    #[prost(uint32, optional, tag = "9")]
13359    pub file_write_period_ms: ::core::option::Option<u32>,
13360    /// Optional. When non zero the periodic write stops once at most X bytes
13361    /// have been written into the file. Tracing is disabled when this limit is
13362    /// reached, even if |duration_ms| has not been reached yet.
13363    #[prost(uint64, optional, tag = "10")]
13364    pub max_file_size_bytes: ::core::option::Option<u64>,
13365    #[prost(message, optional, tag = "11")]
13366    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
13367    /// When true, data sources are not started until an explicit call to
13368    /// StartTracing() on the consumer port. This is to support early
13369    /// initialization and fast trace triggering. This can be used only when the
13370    /// Consumer explicitly triggers the StartTracing() method.
13371    /// This should not be used in a remote trace config via statsd, doing so will
13372    /// result in a hung trace session.
13373    #[prost(bool, optional, tag = "12")]
13374    pub deferred_start: ::core::option::Option<bool>,
13375    /// When set, it periodically issues a Flush() to all data source, forcing them
13376    /// to commit their data into the tracing service. This can be used for
13377    /// quasi-real-time streaming mode and to guarantee some partial ordering of
13378    /// events in the trace in windows of X ms.
13379    ///
13380    /// Warning: Perfetto automatically handles periodic flushing so in most
13381    /// scenarios setting this field is not needed. High frequency flushing can
13382    /// significantly impact performance.
13383    #[prost(uint32, optional, tag = "13")]
13384    pub flush_period_ms: ::core::option::Option<u32>,
13385    /// Wait for this long for producers to acknowledge flush requests.
13386    /// Default 5s.
13387    #[prost(uint32, optional, tag = "14")]
13388    pub flush_timeout_ms: ::core::option::Option<u32>,
13389    /// Wait for this long for producers to acknowledge stop requests.
13390    /// Default 5s.
13391    #[prost(uint32, optional, tag = "23")]
13392    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
13393    /// Android-only. If set, sends an intent to the Traceur system app when the
13394    /// trace ends to notify it about the trace readiness.
13395    #[prost(bool, optional, tag = "16")]
13396    pub notify_traceur: ::core::option::Option<bool>,
13397    /// This field was introduced in Android S.
13398    /// Android-only. If set to a value > 0, marks the trace session as a candidate
13399    /// for being attached to a bugreport. This field effectively acts as a z-index
13400    /// for bugreports. When Android's dumpstate runs perfetto
13401    /// --save-for-bugreport, traced will pick the tracing session with the highest
13402    /// score (score <= 0 is ignored) and:
13403    /// On Android S, T:  will steal its contents, save the trace into
13404    ///      a known path and stop prematurely.
13405    /// On Android U+: will create a read-only snapshot and save that into a known
13406    ///      path, without stoppin the original tracing session.
13407    /// When this field is set the tracing session becomes eligible to be cloned
13408    /// by other UIDs.
13409    #[prost(int32, optional, tag = "30")]
13410    pub bugreport_score: ::core::option::Option<i32>,
13411    /// When set, defines name of the file that will be saved under
13412    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
13413    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
13414    /// starting from the highest `bugreport_score`.
13415    /// Introduced in v42 / Android V.
13416    #[prost(string, optional, tag = "38")]
13417    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
13418    #[prost(message, optional, tag = "17")]
13419    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
13420    /// When this is non-empty the perfetto command line tool will ignore the rest
13421    /// of this TraceConfig and instead connect to the perfetto service as a
13422    /// producer and send these triggers, potentially stopping or starting traces
13423    /// that were previous configured to use a TriggerConfig.
13424    #[prost(string, repeated, tag = "18")]
13425    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
13426    #[prost(message, optional, tag = "21")]
13427    pub incremental_state_config: ::core::option::Option<
13428        trace_config::IncrementalStateConfig,
13429    >,
13430    /// No longer needed as we unconditionally allow tracing on user builds.
13431    #[deprecated]
13432    #[prost(bool, optional, tag = "19")]
13433    pub allow_user_build_tracing: ::core::option::Option<bool>,
13434    /// If set the tracing service will ensure there is at most one tracing session
13435    /// with this key.
13436    #[prost(string, optional, tag = "22")]
13437    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
13438    #[deprecated]
13439    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
13440    pub compression_type: ::core::option::Option<i32>,
13441    #[prost(message, optional, tag = "47")]
13442    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
13443    #[prost(message, optional, tag = "25")]
13444    pub incident_report_config: ::core::option::Option<
13445        trace_config::IncidentReportConfig,
13446    >,
13447    /// Android-only. Not for general use. If specified, sets the logging to statsd
13448    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
13449    /// this to enabled (if not explicitly set in the config) when specifying
13450    /// --upload.
13451    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
13452    pub statsd_logging: ::core::option::Option<i32>,
13453    /// An identifier clients can use to tie this trace to other logging.
13454    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
13455    /// Trace UUID. If this field is set, the tracing service will respect the
13456    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
13457    /// gap-less snapshotting is not used.
13458    #[deprecated]
13459    #[prost(int64, optional, tag = "27")]
13460    pub trace_uuid_msb: ::core::option::Option<i64>,
13461    #[deprecated]
13462    #[prost(int64, optional, tag = "28")]
13463    pub trace_uuid_lsb: ::core::option::Option<i64>,
13464    #[prost(message, optional, tag = "33")]
13465    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
13466    #[prost(message, optional, tag = "34")]
13467    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
13468    #[prost(message, optional, tag = "35")]
13469    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
13470    #[prost(message, repeated, tag = "39")]
13471    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
13472    /// Priority boost to be applied to the traced process, when the session is
13473    /// running.
13474    #[prost(message, optional, tag = "40")]
13475    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
13476    /// When set to a value > 0, this tracing session will be started in
13477    /// "exclusive mode". This has the following semantics:
13478    /// - It can only be set by shell or root users.
13479    /// - A new exclusive session will only be started if its priority is strictly
13480    ///    higher than any other active tracing session.
13481    /// - If a new exclusive session is started, all other existing tracing
13482    ///    sessions (exclusive or not) are aborted.
13483    /// - While an exclusive session is active, any new non-exclusive session (or
13484    ///    any exclusive session with a lower or equal priority) will be rejected.
13485    ///
13486    /// Introduced in: perfetto v52.
13487    /// Supported on: Android 25Q3+.
13488    #[prost(uint32, optional, tag = "41")]
13489    pub exclusive_prio: ::core::option::Option<u32>,
13490    /// Configures how the service should handle flushing data from producers
13491    /// before periodically writing the trace into the output file.
13492    /// Only applicable when |write_into_file| is true.
13493    ///
13494    /// By default, if |write_into_file| is set, the service periodically issues
13495    /// a Flush() to all data sources before writing buffers into the file.
13496    /// This ensures the file always contains the latest available data.
13497    ///
13498    /// Introduced in: perfetto v54.
13499    /// Supported on: Android 26Q1+.
13500    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
13501    pub write_flush_mode: ::core::option::Option<i32>,
13502    /// Whether to sync the output file to storage after each periodic write pass.
13503    /// Only applicable when |write_into_file| is true.
13504    ///
13505    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
13506    /// sync to storage on every write.
13507    ///
13508    /// Introduced in: perfetto v54.
13509    /// Supported on: Android 26Q1+.
13510    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
13511    pub fflush_post_write: ::core::option::Option<i32>,
13512    /// When true, data sources in remote producers (machines connected via
13513    /// traced_relay) will be matched by default. When false (the default), data
13514    /// sources only match the host machine. In either case, an explicit
13515    /// |DataSource.machine_name_filter| takes priority.
13516    ///
13517    /// NB: perfetto versions before v54 do not have this option and match across
13518    /// machines by default. To be compatible across this version boundary, either
13519    /// set this field to true, or set an explicit machine_name_filter on all data
13520    /// sources.
13521    ///
13522    /// Introduced in: perfetto v54.
13523    #[prost(bool, optional, tag = "43")]
13524    pub trace_all_machines: ::core::option::Option<bool>,
13525    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
13526    /// into it and surfaced by trace_processor in the `metadata` table (see
13527    /// common/trace_attributes.proto). Typically set via
13528    /// `perfetto --add-attribute key=value`.
13529    ///
13530    /// Introduced in: perfetto v58.
13531    #[prost(message, optional, tag = "48")]
13532    pub trace_attributes: ::core::option::Option<TraceAttributes>,
13533    /// Android-only. Not for general use. If set to true, writes trace chunks to a
13534    /// persistent file
13535    /// (/data/misc/perfetto-traces/persistent/$unique_session_name.tmp) that
13536    /// survives device reboots (e.g. during OTA updates or battery depletion).
13537    ///
13538    /// Introduced in: perfetto v59.
13539    /// Supported on: Android 26Q4+.
13540    #[prost(bool, optional, tag = "49")]
13541    pub persist_trace_across_reboots: ::core::option::Option<bool>,
13542}
13543/// Nested message and enum types in `TraceConfig`.
13544pub mod trace_config {
13545    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13546    pub struct BufferConfig {
13547        #[prost(uint32, optional, tag = "1")]
13548        pub size_kb: ::core::option::Option<u32>,
13549        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
13550        pub fill_policy: ::core::option::Option<i32>,
13551        /// When true the buffer is moved (rather than copied) onto the cloned
13552        /// session, and an empty buffer of the same size is allocated in the source
13553        /// tracing session. This feature will likely get deprecated in the future.
13554        /// It been introduced mainly to support the surfaceflinger snapshot dump
13555        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
13556        /// that case we don't want to retain another in-memory copy of the buffer.
13557        #[prost(bool, optional, tag = "5")]
13558        pub transfer_on_clone: ::core::option::Option<bool>,
13559        /// Used in conjunction with transfer_on_clone. When true the buffer is
13560        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
13561        /// that if the data source took too long to write the data in a previous
13562        /// clone-related flush, we don't end up with a mixture of leftovers from
13563        /// the previous write and new data.
13564        #[prost(bool, optional, tag = "6")]
13565        pub clear_before_clone: ::core::option::Option<bool>,
13566        /// Optional name for this buffer. If set, data sources can reference this
13567        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
13568        /// using the buffer index. Buffer names must be unique within a tracing
13569        /// session. This provides a more human-readable and less error-prone way to
13570        /// configure which buffer a data source writes to.
13571        #[prost(string, optional, tag = "7")]
13572        pub name: ::core::option::Option<::prost::alloc::string::String>,
13573        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
13574        pub experimental_mode: ::core::option::Option<i32>,
13575    }
13576    /// Nested message and enum types in `BufferConfig`.
13577    pub mod buffer_config {
13578        #[derive(
13579            Clone,
13580            Copy,
13581            Debug,
13582            PartialEq,
13583            Eq,
13584            Hash,
13585            PartialOrd,
13586            Ord,
13587            ::prost::Enumeration
13588        )]
13589        #[repr(i32)]
13590        pub enum FillPolicy {
13591            Unspecified = 0,
13592            /// Default behavior. The buffer operates as a conventional ring buffer.
13593            /// If the writer is faster than the reader (or if the reader reads only
13594            /// after tracing is stopped) newly written packets will overwrite old
13595            /// packets.
13596            RingBuffer = 1,
13597            /// Behaves like RING_BUFFER as long as there is space in the buffer or
13598            /// the reader catches up with the writer. As soon as the writer hits
13599            /// an unread chunk, it stops accepting new data in the buffer.
13600            Discard = 2,
13601        }
13602        impl FillPolicy {
13603            /// String value of the enum field names used in the ProtoBuf definition.
13604            ///
13605            /// The values are not transformed in any way and thus are considered stable
13606            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13607            pub fn as_str_name(&self) -> &'static str {
13608                match self {
13609                    Self::Unspecified => "UNSPECIFIED",
13610                    Self::RingBuffer => "RING_BUFFER",
13611                    Self::Discard => "DISCARD",
13612                }
13613            }
13614            /// Creates an enum from field names used in the ProtoBuf definition.
13615            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13616                match value {
13617                    "UNSPECIFIED" => Some(Self::Unspecified),
13618                    "RING_BUFFER" => Some(Self::RingBuffer),
13619                    "DISCARD" => Some(Self::Discard),
13620                    _ => None,
13621                }
13622            }
13623        }
13624        /// When true, uses the experimental TraceBufferV2 implementation for this
13625        /// buffer. This is for testing purposes only and may be removed in future
13626        /// versions.
13627        #[derive(
13628            Clone,
13629            Copy,
13630            Debug,
13631            PartialEq,
13632            Eq,
13633            Hash,
13634            PartialOrd,
13635            Ord,
13636            ::prost::Enumeration
13637        )]
13638        #[repr(i32)]
13639        pub enum ExperimentalMode {
13640            /// Use the default V1 implementation.
13641            ModeUnspecified = 0,
13642            /// Use TraceBufferV2.
13643            TraceBufferV2 = 1,
13644        }
13645        impl ExperimentalMode {
13646            /// String value of the enum field names used in the ProtoBuf definition.
13647            ///
13648            /// The values are not transformed in any way and thus are considered stable
13649            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13650            pub fn as_str_name(&self) -> &'static str {
13651                match self {
13652                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
13653                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
13654                }
13655            }
13656            /// Creates an enum from field names used in the ProtoBuf definition.
13657            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13658                match value {
13659                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
13660                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
13661                    _ => None,
13662                }
13663            }
13664        }
13665    }
13666    #[derive(Clone, PartialEq, ::prost::Message)]
13667    pub struct DataSource {
13668        /// Filters and data-source specific config. It contains also the unique name
13669        /// of the data source, the one passed in the  DataSourceDescriptor when they
13670        /// register on the service.
13671        #[prost(message, optional, tag = "1")]
13672        pub config: ::core::option::Option<super::DataSourceConfig>,
13673        /// Optional. If multiple producers (~processes) expose the same data source
13674        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
13675        /// the data source is enabled only for producers whose names match any of
13676        /// the filters.
13677        /// |producer_name_filter| has to be an exact match, while
13678        /// |producer_name_regex_filter| is a regular expression.
13679        /// This allows to enable a data source only for specific processes.
13680        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
13681        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
13682        #[prost(string, repeated, tag = "2")]
13683        pub producer_name_filter: ::prost::alloc::vec::Vec<
13684            ::prost::alloc::string::String,
13685        >,
13686        #[prost(string, repeated, tag = "3")]
13687        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
13688            ::prost::alloc::string::String,
13689        >,
13690        /// Filter by machine names. The name of a machine is determined by the
13691        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
13692        /// variable is not set then the
13693        /// persist.traced_relay.machine_name system property is used. If the
13694        /// sysprop isn't set or not in an Android system, then the machine name by
13695        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
13696        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
13697        /// to the host machine, which is the machine running traced.
13698        #[prost(string, repeated, tag = "4")]
13699        pub machine_name_filter: ::prost::alloc::vec::Vec<
13700            ::prost::alloc::string::String,
13701        >,
13702    }
13703    /// Config for disabling builtin data sources in the tracing service.
13704    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13705    pub struct BuiltinDataSource {
13706        /// Disable emitting clock timestamps into the trace.
13707        #[prost(bool, optional, tag = "1")]
13708        pub disable_clock_snapshotting: ::core::option::Option<bool>,
13709        /// Disable echoing the original trace config in the trace.
13710        #[prost(bool, optional, tag = "2")]
13711        pub disable_trace_config: ::core::option::Option<bool>,
13712        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
13713        #[prost(bool, optional, tag = "3")]
13714        pub disable_system_info: ::core::option::Option<bool>,
13715        /// Disable emitting events for data-source state changes (e.g. the marker
13716        /// for all data sources having ACKed the start of the trace).
13717        #[prost(bool, optional, tag = "4")]
13718        pub disable_service_events: ::core::option::Option<bool>,
13719        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
13720        /// also ClockSnapshot's primary_trace_clock. The configured value is written
13721        /// into the trace as part of the ClockSnapshots emitted by the service.
13722        /// Trace processor will attempt to translate packet/event timestamps from
13723        /// various data sources (and their chosen clock domains) to this domain
13724        /// during import. Added in Android R.
13725        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
13726        pub primary_trace_clock: ::core::option::Option<i32>,
13727        /// Time interval in between snapshotting of sync markers, clock snapshots,
13728        /// stats, and other periodic service-emitted events. Note that the service
13729        /// only keeps track of the first and the most recent snapshot until
13730        /// ReadBuffers() is called.
13731        #[prost(uint32, optional, tag = "6")]
13732        pub snapshot_interval_ms: ::core::option::Option<u32>,
13733        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
13734        /// clock should be used for periodic snapshots of service-emitted events.
13735        /// This means, if a snapshot *should* have happened during suspend, it will
13736        /// happen immediately after the device resumes.
13737        ///
13738        /// Choosing a clock like this is done on best-effort basis; not all
13739        /// platforms (e.g. Windows) expose a clock which can be used for periodic
13740        /// tasks counting suspend. If such a clock is not available, the service
13741        /// falls back to the best-available alternative.
13742        ///
13743        /// Introduced in Android S.
13744        /// TODO(lalitm): deprecate this in T and make this the default if nothing
13745        /// crashes in S.
13746        #[prost(bool, optional, tag = "7")]
13747        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
13748        /// Disables the reporting of per-trace-writer histograms in TraceStats.
13749        #[prost(bool, optional, tag = "8")]
13750        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
13751        /// Disable emitting extension descriptors into the trace.
13752        #[prost(bool, optional, tag = "9")]
13753        pub disable_extension_descriptors: ::core::option::Option<bool>,
13754        /// Emit state changes of other tracing sessions running concurrently
13755        /// with this one (see ConcurrentSessionEvent).
13756        ///
13757        /// Introduced in v58 / Android 26Q3+.
13758        #[prost(bool, optional, tag = "10")]
13759        pub enable_concurrent_session_events: ::core::option::Option<bool>,
13760    }
13761    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13762    pub struct ProducerConfig {
13763        /// Identifies the producer for which this config is for.
13764        #[prost(string, optional, tag = "1")]
13765        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
13766        /// Specifies the preferred size of the shared memory buffer. If the size is
13767        /// larger than the max size, the max will be used. If it is smaller than
13768        /// the page size or doesn't fit pages evenly into it, it will fall back to
13769        /// the size specified by the producer or finally the default shared memory
13770        /// size.
13771        #[prost(uint32, optional, tag = "2")]
13772        pub shm_size_kb: ::core::option::Option<u32>,
13773        /// Specifies the preferred size of each page in the shared memory buffer.
13774        /// Must be an integer multiple of 4K.
13775        #[prost(uint32, optional, tag = "3")]
13776        pub page_size_kb: ::core::option::Option<u32>,
13777    }
13778    /// Contains statsd-specific metadata about an alert associated with the trace.
13779    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13780    pub struct StatsdMetadata {
13781        /// The identifier of the alert which triggered this trace.
13782        #[prost(int64, optional, tag = "1")]
13783        pub triggering_alert_id: ::core::option::Option<i64>,
13784        /// The uid which registered the triggering configuration with statsd.
13785        #[prost(int32, optional, tag = "2")]
13786        pub triggering_config_uid: ::core::option::Option<i32>,
13787        /// The identifier of the config which triggered the alert.
13788        #[prost(int64, optional, tag = "3")]
13789        pub triggering_config_id: ::core::option::Option<i64>,
13790        /// The identifier of the subscription which triggered this trace.
13791        #[prost(int64, optional, tag = "4")]
13792        pub triggering_subscription_id: ::core::option::Option<i64>,
13793    }
13794    /// Contains flags which override the default values of the guardrails inside
13795    /// Perfetto.
13796    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13797    pub struct GuardrailOverrides {
13798        /// Override the default limit (in bytes) for uploading data to server within
13799        /// a 24 hour period.
13800        /// On R-, this override only affected userdebug builds. Since S, it also
13801        /// affects user builds.
13802        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
13803        /// was removed from Perfetto.
13804        #[deprecated]
13805        #[prost(uint64, optional, tag = "1")]
13806        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
13807        /// Overrides the guardrail for maximum trace buffer size.
13808        /// Available on U+
13809        #[prost(uint32, optional, tag = "2")]
13810        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
13811    }
13812    /// Triggers allow producers to start or stop the tracing session when an event
13813    /// occurs.
13814    ///
13815    /// For example if we are tracing probabilistically, most traces will be
13816    /// uninteresting. Triggers allow us to keep only the interesting ones such as
13817    /// those traces during which the device temperature reached a certain
13818    /// threshold. In this case the producer can activate a trigger to keep
13819    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
13820    /// (START_TRACING) because it knows something is about to happen.
13821    #[derive(Clone, PartialEq, ::prost::Message)]
13822    pub struct TriggerConfig {
13823        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
13824        pub trigger_mode: ::core::option::Option<i32>,
13825        /// This flag is really a workaround for b/274931668. This is needed only
13826        /// when deploying configs to different versions of the tracing service.
13827        /// When this is set to true this has the same effect of setting trigger_mode
13828        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
13829        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
13830        /// versions of Android and fall back to STOP_TRACING on older versions where
13831        /// CLONE_SNAPSHOT did not exist.
13832        /// When using this flag, trigger_mode must be set to STOP_TRACING.
13833        #[prost(bool, optional, tag = "5")]
13834        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
13835        /// A list of triggers which are related to this configuration. If ANY
13836        /// trigger is seen then an action will be performed based on |trigger_mode|.
13837        #[prost(message, repeated, tag = "2")]
13838        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
13839        /// Required and must be positive if a TriggerConfig is specified. This is
13840        /// how long this TraceConfig should wait for a trigger to arrive. After this
13841        /// period of time if no trigger is seen the TracingSession will be cleaned
13842        /// up.
13843        #[prost(uint32, optional, tag = "3")]
13844        pub trigger_timeout_ms: ::core::option::Option<u32>,
13845    }
13846    /// Nested message and enum types in `TriggerConfig`.
13847    pub mod trigger_config {
13848        #[derive(Clone, PartialEq, ::prost::Message)]
13849        pub struct Trigger {
13850            /// The producer must specify this name to activate the trigger.
13851            #[prost(string, optional, tag = "1")]
13852            pub name: ::core::option::Option<::prost::alloc::string::String>,
13853            /// An std::regex that will match the producer that can activate this
13854            /// trigger. This is optional. If unset any producers can activate this
13855            /// trigger.
13856            #[prost(string, optional, tag = "2")]
13857            pub producer_name_regex: ::core::option::Option<
13858                ::prost::alloc::string::String,
13859            >,
13860            /// After a trigger is received either in START_TRACING or STOP_TRACING
13861            /// mode then the trace will end |stop_delay_ms| after triggering.
13862            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
13863            /// snapshot.
13864            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
13865            /// based on wall-clock, counting also time in suspend.
13866            #[prost(uint32, optional, tag = "3")]
13867            pub stop_delay_ms: ::core::option::Option<u32>,
13868            /// Limits the number of traces this trigger can start/stop in a rolling
13869            /// 24 hour window. If this field is unset or zero, no limit is applied and
13870            /// activiation of this trigger *always* starts/stops the trace.
13871            #[prost(uint32, optional, tag = "4")]
13872            pub max_per_24_h: ::core::option::Option<u32>,
13873            /// A value between 0 and 1 which encodes the probability of skipping a
13874            /// trigger with this name. This is useful for reducing the probability
13875            /// of high-frequency triggers from dominating trace finaization. If this
13876            /// field is unset or zero, the trigger will *never* be skipped. If this
13877            /// field is greater than or equal to 1, this trigger will *always* be
13878            /// skipped i.e. it will be as if this trigger was never included in the
13879            /// first place.
13880            /// This probability check is applied *before* any other limits. For
13881            /// example, if |max_per_24_h| is also set, first we will check if the
13882            /// probability bar is met and only then will we check the |max_per_24_h|
13883            /// limit.
13884            #[prost(double, optional, tag = "5")]
13885            pub skip_probability: ::core::option::Option<f64>,
13886        }
13887        #[derive(
13888            Clone,
13889            Copy,
13890            Debug,
13891            PartialEq,
13892            Eq,
13893            Hash,
13894            PartialOrd,
13895            Ord,
13896            ::prost::Enumeration
13897        )]
13898        #[repr(i32)]
13899        pub enum TriggerMode {
13900            Unspecified = 0,
13901            /// When this mode is chosen, data sources are not started until one of the
13902            /// |triggers| are received. This supports early initialization and fast
13903            /// starting of the tracing system. On triggering, the session will then
13904            /// record for |stop_delay_ms|. However if no trigger is seen
13905            /// after |trigger_timeout_ms| the session will be stopped and no data will
13906            /// be returned.
13907            StartTracing = 1,
13908            /// When this mode is chosen, the session will be started via the normal
13909            /// EnableTracing() & StartTracing(). If no trigger is ever seen
13910            /// the session will be stopped after |trigger_timeout_ms| and no data will
13911            /// be returned. However if triggered the trace will stop after
13912            /// |stop_delay_ms| and any data in the buffer will be returned to the
13913            /// consumer.
13914            StopTracing = 2,
13915            /// When this mode is chosen, this causes a snapshot of the current tracing
13916            /// session to be created after |stop_delay_ms| while the current tracing
13917            /// session continues undisturbed (% an extra flush). This mode can be
13918            /// used only when the tracing session is handled by the "perfetto" cmdline
13919            /// client (which is true in 90% of cases). Part of the business logic
13920            /// necessary for this behavior, and ensuing file handling, lives in
13921            /// perfetto_cmd.cc . On other consumers, this causes only a notification
13922            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
13923            /// consumer is supposed to call CloneSession() itself after the event.
13924            /// Use use_clone_snapshot_if_available=true when targeting older versions
13925            /// of perfetto.
13926            ///
13927            /// NOTE: CLONE_SNAPSHOT should be used only when we targeting Android V+
13928            /// (15+) / Perfetto v38+. A bug in older versions of the tracing service
13929            /// might cause indefinitely long tracing sessions (see b/274931668).
13930            CloneSnapshot = 4,
13931        }
13932        impl TriggerMode {
13933            /// String value of the enum field names used in the ProtoBuf definition.
13934            ///
13935            /// The values are not transformed in any way and thus are considered stable
13936            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13937            pub fn as_str_name(&self) -> &'static str {
13938                match self {
13939                    Self::Unspecified => "UNSPECIFIED",
13940                    Self::StartTracing => "START_TRACING",
13941                    Self::StopTracing => "STOP_TRACING",
13942                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
13943                }
13944            }
13945            /// Creates an enum from field names used in the ProtoBuf definition.
13946            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13947                match value {
13948                    "UNSPECIFIED" => Some(Self::Unspecified),
13949                    "START_TRACING" => Some(Self::StartTracing),
13950                    "STOP_TRACING" => Some(Self::StopTracing),
13951                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
13952                    _ => None,
13953                }
13954            }
13955        }
13956    }
13957    /// Configuration for trace contents that reference earlier trace data. For
13958    /// example, a data source might intern strings, and emit packets containing
13959    /// {interned id : string} pairs. Future packets from that data source can then
13960    /// use the interned ids instead of duplicating the raw string contents. The
13961    /// trace parser will then need to use that interning table to fully interpret
13962    /// the rest of the trace.
13963    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13964    pub struct IncrementalStateConfig {
13965        /// If nonzero, notify eligible data sources to clear their incremental state
13966        /// periodically, with the given period. The notification is sent only to
13967        /// data sources that have |handles_incremental_state_clear| set in their
13968        /// DataSourceDescriptor. The notification requests that the data source
13969        /// stops referring to past trace contents. This is particularly useful when
13970        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
13971        /// trace data.
13972        ///
13973        /// Warning: this time-based global clearing is likely to be removed in the
13974        /// future, to be replaced with a smarter way of sending the notifications
13975        /// only when necessary.
13976        #[prost(uint32, optional, tag = "1")]
13977        pub clear_period_ms: ::core::option::Option<u32>,
13978    }
13979    /// Selects and configures the compression codec, superseding
13980    /// |compression_type|. The codec is chosen by which sub-message is set; when
13981    /// several are set the service picks the highest-numbered one it supports and
13982    /// ignores codecs it doesn't know, so a single config can target old and new
13983    /// services. Falls back to |compression_type| (deflate-only), if given.
13984    ///
13985    /// Introduced in: perfetto v58.
13986    /// Supported on: Android 26Q3+.
13987    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13988    pub struct CompressionConfig {
13989        /// If a config sets more than one of these, the service picks the one with
13990        /// the highest field number (see the rule above): e.g. with deflate (1) and
13991        /// zstd (2) both set, zstd wins.
13992        #[prost(message, optional, tag = "1")]
13993        pub deflate: ::core::option::Option<compression_config::Deflate>,
13994        #[prost(message, optional, tag = "2")]
13995        pub zstd: ::core::option::Option<compression_config::Zstd>,
13996    }
13997    /// Nested message and enum types in `CompressionConfig`.
13998    pub mod compression_config {
13999        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
14000        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14001        pub struct Deflate {}
14002        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14003        pub struct Zstd {
14004            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
14005            /// default (3). Levels above the max are clamped; negatives are valid
14006            /// faster, lower-ratio modes.
14007            #[prost(int32, optional, tag = "1")]
14008            pub level: ::core::option::Option<i32>,
14009        }
14010    }
14011    /// Android-only. Not for general use. If set, saves the trace into an
14012    /// incident. This field is read by perfetto_cmd, rather than the tracing
14013    /// service. This field must be set when passing the --upload flag to
14014    /// perfetto_cmd.
14015    /// In this message, either:
14016    ///   * all of |destination_package|, |destination_class| and |privacy_level|
14017    ///     must be set.
14018    ///   * |skip_incidentd| must be explicitly set to true.
14019    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14020    pub struct IncidentReportConfig {
14021        #[prost(string, optional, tag = "1")]
14022        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
14023        #[prost(string, optional, tag = "2")]
14024        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
14025        /// Level of filtering in the requested incident. See |Destination| in
14026        /// frameworks/base/core/proto/android/privacy.proto.
14027        #[prost(int32, optional, tag = "3")]
14028        pub privacy_level: ::core::option::Option<i32>,
14029        /// If true, then skips saving the trace to incidentd.
14030        ///
14031        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
14032        /// or when we explicitly don't want traces to go to incidentd even when they
14033        /// usually would (e.g. configs deployed using statsd but only used for
14034        /// inclusion in bugreports using |bugreport_score|).
14035        ///
14036        /// The motivation for having this flag, instead of just not setting
14037        /// |incident_report_config|, is prevent accidents where
14038        /// |incident_report_config| is omitted by mistake.
14039        #[prost(bool, optional, tag = "5")]
14040        pub skip_incidentd: ::core::option::Option<bool>,
14041        /// If true, do not write the trace into dropbox (i.e. incident only).
14042        /// Otherwise, write to both dropbox and incident.
14043        /// TODO(lalitm): remove this field as we no longer use Dropbox.
14044        #[deprecated]
14045        #[prost(bool, optional, tag = "4")]
14046        pub skip_dropbox: ::core::option::Option<bool>,
14047    }
14048    /// When set applies a post-filter to the trace contents using the filter
14049    /// provided. The filter is applied at ReadBuffers() time and works both in the
14050    /// case of IPC readback and write_into_file. This filter can be generated
14051    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
14052    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
14053    /// design.
14054    ///
14055    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
14056    /// Android T with a different field number. Updated in Android U with a new
14057    /// bytecode version which supports string filtering.
14058    ///
14059    /// The principles and terminology of string filtering is heavily inspired by
14060    /// iptables. A "rule" decide how strings should be filtered. Each rule
14061    /// contains a "policy" which indicates the algorithm to use for filtering.
14062    /// A "chain" is a list of rules which will be sequentially checked against
14063    /// each string.
14064    ///
14065    /// The first rule which applies to the string terminates filtering for that
14066    /// string. If no rules apply, the string is left unchanged.
14067    ///
14068    /// =========================
14069    /// Filter bytecode.
14070    /// =========================
14071    #[derive(Clone, PartialEq, ::prost::Message)]
14072    pub struct TraceFilter {
14073        /// The bytecode as implemented in Android T.
14074        #[prost(bytes = "vec", optional, tag = "1")]
14075        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14076        /// The bytecode as implemented in Android U. Adds support for string
14077        /// filtering.
14078        #[prost(bytes = "vec", optional, tag = "2")]
14079        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14080        #[prost(message, optional, tag = "3")]
14081        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
14082        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
14083        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
14084        /// versions ignore this field; new versions apply it.
14085        ///
14086        /// The motivation for this is that adding new opcodes in a backwards
14087        /// compatible way while also minimizing config size is hard. Instead, the
14088        /// overlay mechanism allows us to "patch" specific fields in the original
14089        /// bytecode_v2 with new semantics.
14090        ///
14091        /// See RFC 0011-subset-string-filter-rules.md for more info.
14092        ///
14093        /// Note:
14094        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
14095        /// markers), this overlay uses a triplet format with explicit indices:
14096        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
14097        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
14098        /// Entries must be sorted by (msg_index, field_id).
14099        ///
14100        /// The parser processes bytecode_v2 and this overlay simultaneously:
14101        ///   - any field not mentioned in the overlay is parsed as usual
14102        ///   - any field in the overlay but *not* in the bytecode_v2 is added
14103        ///     with its overlay value
14104        ///   - any field in both the overlay and bytecode_v2 takes the value in the
14105        ///     overlay, the bytecode_v2 value is ignored.
14106        ///
14107        /// Note: despite the name, this was broken in v54 (the overlay was not
14108        /// passed through to the bytecode parser). Only works in v55+.
14109        #[prost(bytes = "vec", optional, tag = "4")]
14110        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14111        /// String filter chain for Perfetto v54+. Rules in this chain either
14112        /// overwrite rules in string_filter_chain (if the name matches) or are
14113        /// appended (if the name doesn't match). This allows modifying existing
14114        /// rules (e.g., changing policy) without duplicating the entire chain.
14115        /// Rules without a name are always appended.
14116        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
14117        /// Introduced in: Perfetto v54.
14118        #[prost(message, optional, tag = "5")]
14119        pub string_filter_chain_v54: ::core::option::Option<
14120            trace_filter::StringFilterChain,
14121        >,
14122    }
14123    /// Nested message and enum types in `TraceFilter`.
14124    pub mod trace_filter {
14125        /// A rule specifies how strings should be filtered.
14126        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14127        pub struct StringFilterRule {
14128            /// The policy (i.e. algorithm) dictating how strings matching this rule
14129            /// should be handled.
14130            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
14131            pub policy: ::core::option::Option<i32>,
14132            /// The regex pattern used to match against each string.
14133            #[prost(string, optional, tag = "2")]
14134            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
14135            /// The string which should appear after the tgid in atrace tracepoint
14136            /// strings.
14137            #[prost(string, optional, tag = "3")]
14138            pub atrace_payload_starts_with: ::core::option::Option<
14139                ::prost::alloc::string::String,
14140            >,
14141            /// Optional name for the rule. When merging chains (e.g. via
14142            /// string_filter_chain_v54), rules with matching names in the newer chain
14143            /// will overwrite rules in the base chain. Rules without a name (empty or
14144            /// unset) are always treated as distinct and will be appended.
14145            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
14146            /// Introduced in: Perfetto v54.
14147            #[prost(string, optional, tag = "4")]
14148            pub name: ::core::option::Option<::prost::alloc::string::String>,
14149            /// The semantic types this rule applies to.
14150            ///
14151            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
14152            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
14153            /// - If non-empty, the rule applies only to fields whose semantic type
14154            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
14155            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
14156            ///
14157            /// Examples:
14158            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
14159            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
14160            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
14161            ///
14162            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
14163            /// Introduced in: Perfetto v54.
14164            #[prost(
14165                enumeration = "super::super::SemanticType",
14166                repeated,
14167                packed = "false",
14168                tag = "5"
14169            )]
14170            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
14171        }
14172        /// A chain is a list of rules which string will be sequentially checked
14173        /// against.
14174        #[derive(Clone, PartialEq, ::prost::Message)]
14175        pub struct StringFilterChain {
14176            #[prost(message, repeated, tag = "1")]
14177            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
14178        }
14179        /// A policy specifies which algorithm should be used for filtering the
14180        /// string.
14181        #[derive(
14182            Clone,
14183            Copy,
14184            Debug,
14185            PartialEq,
14186            Eq,
14187            Hash,
14188            PartialOrd,
14189            Ord,
14190            ::prost::Enumeration
14191        )]
14192        #[repr(i32)]
14193        pub enum StringFilterPolicy {
14194            SfpUnspecified = 0,
14195            /// Tries to match the string field against |regex_pattern|. If it
14196            /// matches, all matching groups are "redacted" (i.e. replaced with a
14197            /// constant string) and filtering is terminated (i.e. no further rules are
14198            /// checked). If it doesn't match, the string is left unchanged and the
14199            /// next rule in chain is considered.
14200            SfpMatchRedactGroups = 1,
14201            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
14202            /// checking the regex. Specifically, it tries to parse the string field as
14203            /// an atrace tracepoint and checks if the post-tgid field starts with
14204            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
14205            /// this check succeeds.
14206            SfpAtraceMatchRedactGroups = 2,
14207            /// Tries to match the string field against |regex_pattern|. If it
14208            /// matches, filtering is terminated (i.e. no further rules are checked).
14209            /// If it doesn't match, the string is left unchanged and the next rule in
14210            /// chain is considered.
14211            SfpMatchBreak = 3,
14212            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
14213            /// the regex. Specifically, it tries to parse the string field as an
14214            /// atrace tracepoint and checks if the post-tgid field starts with
14215            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
14216            /// this check succeeds.
14217            SfpAtraceMatchBreak = 4,
14218            /// Tries to repeatedly search (i.e. find substrings of) the string field
14219            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
14220            /// replaced with a constant string). Once there are no further matches,
14221            /// filtering is terminated (i.e. no further rules are checked).
14222            ///
14223            /// Note that this is policy is a "search" policy not a "match" policy
14224            /// unlike the above policies:
14225            ///   * Match policies require matching the full string i.e. there is an
14226            ///     implicit leading `^` and trailing `$`.
14227            ///   * Search policies perform repeated partial matching of the string
14228            ///     e.g.
14229            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
14230            ///       - Pattern: `foo=(\d+)`
14231            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
14232            ///     where P6O is the redaction string
14233            ///
14234            /// All of this is only performed after some pre-work where we try to parse
14235            /// the string field as an atrace tracepoint and check if the post-tgid
14236            /// field starts with |atrace_post_tgid_starts_with|.
14237            ///
14238            /// If there are no partial matches, the string is left unchanged and the
14239            /// next rule in chain is considered.
14240            SfpAtraceRepeatedSearchRedactGroups = 5,
14241        }
14242        impl StringFilterPolicy {
14243            /// String value of the enum field names used in the ProtoBuf definition.
14244            ///
14245            /// The values are not transformed in any way and thus are considered stable
14246            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14247            pub fn as_str_name(&self) -> &'static str {
14248                match self {
14249                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
14250                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
14251                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
14252                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
14253                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
14254                    Self::SfpAtraceRepeatedSearchRedactGroups => {
14255                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
14256                    }
14257                }
14258            }
14259            /// Creates an enum from field names used in the ProtoBuf definition.
14260            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14261                match value {
14262                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
14263                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
14264                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
14265                        Some(Self::SfpAtraceMatchRedactGroups)
14266                    }
14267                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
14268                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
14269                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
14270                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
14271                    }
14272                    _ => None,
14273                }
14274            }
14275        }
14276    }
14277    /// Android-only. Not for general use. If set, reports the trace to the
14278    /// Android framework. This field is read by perfetto_cmd, rather than the
14279    /// tracing service. This field must be set when passing the --upload flag to
14280    /// perfetto_cmd.
14281    /// In this message, either:
14282    ///   * |reporter_service_package| and |reporter_service_class| must be set.
14283    ///   * |skip_reporting| must be explicitly set to true.
14284    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14285    pub struct AndroidReportConfig {
14286        #[prost(string, optional, tag = "1")]
14287        pub reporter_service_package: ::core::option::Option<
14288            ::prost::alloc::string::String,
14289        >,
14290        #[prost(string, optional, tag = "2")]
14291        pub reporter_service_class: ::core::option::Option<
14292            ::prost::alloc::string::String,
14293        >,
14294        /// If true, then skips reporting the trace to Android framework.
14295        ///
14296        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
14297        /// or when we explicitly don't want to report traces to the framework even
14298        /// when they usually would (e.g. configs deployed using statsd but only
14299        /// used for inclusion in bugreports using |bugreport_score|).
14300        ///
14301        /// The motivation for having this flag, instead of just not setting
14302        /// |framework_report_config|, is prevent accidents where
14303        /// |framework_report_config| is omitted by mistake.
14304        #[prost(bool, optional, tag = "3")]
14305        pub skip_report: ::core::option::Option<bool>,
14306        /// If true, will direct the Android framework to read the data in trace
14307        /// file and pass it to the reporter class over a pipe instead of passing
14308        /// the file descriptor directly.
14309        ///
14310        /// This flag is needed because the Android test framework does not
14311        /// currently support priv-app helper apps (in terms of SELinux) and we
14312        /// really don't want to add an allow rule for untrusted_app to receive
14313        /// trace fds.
14314        ///
14315        /// Because of this, we instead will direct the framework to create a new
14316        /// pipe and pass this to the reporter process instead. As the pipe is
14317        /// created by the framework, we won't have any problems with SELinux
14318        /// (system_server is already allowed to pass pipe fds, even
14319        /// to untrusted apps).
14320        ///
14321        /// As the name suggests this option *MUST* only be used for testing.
14322        /// Note that the framework will reject (and drop) files which are too
14323        /// large both for simplicity and to be minimize the amount of data we
14324        /// pass to a non-priv app (note that the framework will still check
14325        /// manifest permissions even though SELinux permissions are worked around).
14326        #[prost(bool, optional, tag = "4")]
14327        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
14328    }
14329    /// If set, delays the start of tracing by a random duration. The duration is
14330    /// chosen from a uniform distribution between the specified minimum and
14331    /// maximum.
14332    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
14333    /// not work if you communicate with traced directly over the consumer API.
14334    /// Introduced in Android T.
14335    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14336    pub struct CmdTraceStartDelay {
14337        #[prost(uint32, optional, tag = "1")]
14338        pub min_delay_ms: ::core::option::Option<u32>,
14339        #[prost(uint32, optional, tag = "2")]
14340        pub max_delay_ms: ::core::option::Option<u32>,
14341    }
14342    /// When non-empty, ensures that for a each semaphore named `name at most
14343    /// `max_other_session_count`` *other* sessions (whose value is taken of the
14344    /// minimum of all values specified by this config or any already-running
14345    /// session) can be be running.
14346    ///
14347    /// If a semaphore "acquisition" fails, EnableTracing will return an error
14348    /// and the tracing session will not be started (or elgible to start in
14349    /// the case of deferred sessions).
14350    ///
14351    /// This is easiest to explain with an example. Suppose the tracing service has
14352    /// the following active tracing sessions:
14353    ///    S1 = [{name=foo, max_other_session_count=2},
14354    ///          {name=bar, max_other_session_count=0}]
14355    ///    S2 = [{name=foo, max_other_session_count=1},
14356    ///          {name=baz, max_other_session_count=1}]
14357    ///
14358    /// Then, for a new session, the following would be the expected behaviour of
14359    /// EnableSession given the state of `session_semaphores`.
14360    ///    Q: session_semaphores = \[\]
14361    ///    A: Allowed because it does not specify any semaphores. Will be allowed
14362    ///       no matter the state of any other tracing session.
14363    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
14364    ///    A: Allowed because both S2 and this config specify
14365    ///       max_other_session_count=1 for baz.
14366    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
14367    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
14368    ///       takes that slot.
14369    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
14370    ///    A: Denied because S1 takes the the slot specified by both S1 and
14371    ///       this config.
14372    ///
14373    /// Introduced in 24Q3 (Android V).
14374    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14375    pub struct SessionSemaphore {
14376        /// The name of the semaphore. Acts as a unique identifier across all
14377        /// tracing sessions (including the one being started).
14378        #[prost(string, optional, tag = "1")]
14379        pub name: ::core::option::Option<::prost::alloc::string::String>,
14380        /// The maximum number of *other* sesssions which specify the same semaphore
14381        /// which can be active. The minimum of this value across all tracing
14382        /// sessions and the value specified by the config is used when deciding
14383        /// whether the tracing session can be started.
14384        #[prost(uint64, optional, tag = "2")]
14385        pub max_other_session_count: ::core::option::Option<u64>,
14386    }
14387    #[derive(
14388        Clone,
14389        Copy,
14390        Debug,
14391        PartialEq,
14392        Eq,
14393        Hash,
14394        PartialOrd,
14395        Ord,
14396        ::prost::Enumeration
14397    )]
14398    #[repr(i32)]
14399    pub enum LockdownModeOperation {
14400        LockdownUnchanged = 0,
14401        LockdownClear = 1,
14402        LockdownSet = 2,
14403    }
14404    impl LockdownModeOperation {
14405        /// String value of the enum field names used in the ProtoBuf definition.
14406        ///
14407        /// The values are not transformed in any way and thus are considered stable
14408        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14409        pub fn as_str_name(&self) -> &'static str {
14410            match self {
14411                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
14412                Self::LockdownClear => "LOCKDOWN_CLEAR",
14413                Self::LockdownSet => "LOCKDOWN_SET",
14414            }
14415        }
14416        /// Creates an enum from field names used in the ProtoBuf definition.
14417        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14418            match value {
14419                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
14420                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
14421                "LOCKDOWN_SET" => Some(Self::LockdownSet),
14422                _ => None,
14423            }
14424        }
14425    }
14426    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
14427    /// that only ever selects deflate. Kept for backwards compatibility with
14428    /// Perfetto <= v57, whose services predate |compression|. Best effort.
14429    #[derive(
14430        Clone,
14431        Copy,
14432        Debug,
14433        PartialEq,
14434        Eq,
14435        Hash,
14436        PartialOrd,
14437        Ord,
14438        ::prost::Enumeration
14439    )]
14440    #[repr(i32)]
14441    pub enum CompressionType {
14442        Unspecified = 0,
14443        Deflate = 1,
14444    }
14445    impl CompressionType {
14446        /// String value of the enum field names used in the ProtoBuf definition.
14447        ///
14448        /// The values are not transformed in any way and thus are considered stable
14449        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14450        pub fn as_str_name(&self) -> &'static str {
14451            match self {
14452                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
14453                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
14454            }
14455        }
14456        /// Creates an enum from field names used in the ProtoBuf definition.
14457        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14458            match value {
14459                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
14460                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
14461                _ => None,
14462            }
14463        }
14464    }
14465    #[derive(
14466        Clone,
14467        Copy,
14468        Debug,
14469        PartialEq,
14470        Eq,
14471        Hash,
14472        PartialOrd,
14473        Ord,
14474        ::prost::Enumeration
14475    )]
14476    #[repr(i32)]
14477    pub enum StatsdLogging {
14478        Unspecified = 0,
14479        Enabled = 1,
14480        Disabled = 2,
14481    }
14482    impl StatsdLogging {
14483        /// String value of the enum field names used in the ProtoBuf definition.
14484        ///
14485        /// The values are not transformed in any way and thus are considered stable
14486        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14487        pub fn as_str_name(&self) -> &'static str {
14488            match self {
14489                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
14490                Self::Enabled => "STATSD_LOGGING_ENABLED",
14491                Self::Disabled => "STATSD_LOGGING_DISABLED",
14492            }
14493        }
14494        /// Creates an enum from field names used in the ProtoBuf definition.
14495        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14496            match value {
14497                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
14498                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
14499                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
14500                _ => None,
14501            }
14502        }
14503    }
14504    #[derive(
14505        Clone,
14506        Copy,
14507        Debug,
14508        PartialEq,
14509        Eq,
14510        Hash,
14511        PartialOrd,
14512        Ord,
14513        ::prost::Enumeration
14514    )]
14515    #[repr(i32)]
14516    pub enum WriteFlushMode {
14517        /// Same as WRITE_FLUSH_AUTO.
14518        WriteFlushUnspecified = 0,
14519        /// Default mode. The service automatically determines the flush frequency
14520        /// to balance performance and data freshness:
14521        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
14522        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
14523        ///     issued every 5s.
14524        /// 2) If file_write_period_ms > 5s:
14525        ///     A flush is issued before every periodic write into the file.
14526        WriteFlushAuto = 1,
14527        /// The following modes are intended for advanced usage and not recommended
14528        /// for general use.
14529        ///
14530        /// Do not flush buffers before periodic writes into the file.
14531        /// Use this mode if you want to minimize the performance impact of flushes
14532        /// and can tolerate potentially missing the most recent data in the trace
14533        /// file until the end of the session or an explicit flush.
14534        /// When this mode is selected, |flush_period_ms| is respected.
14535        WriteFlushDisabled = 2,
14536        /// Issue a flush before every periodic write into the file.
14537        /// This ensures that each write into the file contains the most up-to-date
14538        /// data from all data sources, but may have a higher performance overhead.
14539        WriteFlushEnabled = 3,
14540    }
14541    impl WriteFlushMode {
14542        /// String value of the enum field names used in the ProtoBuf definition.
14543        ///
14544        /// The values are not transformed in any way and thus are considered stable
14545        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14546        pub fn as_str_name(&self) -> &'static str {
14547            match self {
14548                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
14549                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
14550                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
14551                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
14552            }
14553        }
14554        /// Creates an enum from field names used in the ProtoBuf definition.
14555        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14556            match value {
14557                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
14558                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
14559                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
14560                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
14561                _ => None,
14562            }
14563        }
14564    }
14565    #[derive(
14566        Clone,
14567        Copy,
14568        Debug,
14569        PartialEq,
14570        Eq,
14571        Hash,
14572        PartialOrd,
14573        Ord,
14574        ::prost::Enumeration
14575    )]
14576    #[repr(i32)]
14577    pub enum FFlushMode {
14578        /// Default: same as FFLUSH_DISABLED.
14579        FflushUnspecified = 0,
14580        /// Do not explicitly sync the file to storage after each write pass.
14581        FflushDisabled = 1,
14582        /// Explicitly sync the file to storage (via fdatasync) after each periodic
14583        /// write pass. Increases data durability at the cost of higher disk I/O
14584        /// overhead.
14585        FflushEnabled = 2,
14586    }
14587    impl FFlushMode {
14588        /// String value of the enum field names used in the ProtoBuf definition.
14589        ///
14590        /// The values are not transformed in any way and thus are considered stable
14591        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14592        pub fn as_str_name(&self) -> &'static str {
14593            match self {
14594                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
14595                Self::FflushDisabled => "FFLUSH_DISABLED",
14596                Self::FflushEnabled => "FFLUSH_ENABLED",
14597            }
14598        }
14599        /// Creates an enum from field names used in the ProtoBuf definition.
14600        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14601            match value {
14602                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
14603                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
14604                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
14605                _ => None,
14606            }
14607        }
14608    }
14609}
14610/// Arguments for rpc EnableTracing().
14611#[derive(Clone, PartialEq, ::prost::Message)]
14612pub struct EnableTracingRequest {
14613    #[prost(message, optional, tag = "1")]
14614    pub trace_config: ::core::option::Option<TraceConfig>,
14615    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
14616    /// EnableTracingResponse notification after a Detach+Attach request.
14617    /// When this flag is set the |trace_config| is ignored and no method is called
14618    /// on the tracing service.
14619    #[prost(bool, optional, tag = "2")]
14620    pub attach_notification_only: ::core::option::Option<bool>,
14621}
14622#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14623pub struct EnableTracingResponse {
14624    /// If present and non-empty tracing was disabled because of an error.
14625    /// Introduced in Android S.
14626    #[prost(string, optional, tag = "3")]
14627    pub error: ::core::option::Option<::prost::alloc::string::String>,
14628    #[prost(oneof = "enable_tracing_response::State", tags = "1")]
14629    pub state: ::core::option::Option<enable_tracing_response::State>,
14630}
14631/// Nested message and enum types in `EnableTracingResponse`.
14632pub mod enable_tracing_response {
14633    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
14634    pub enum State {
14635        #[prost(bool, tag = "1")]
14636        Disabled(bool),
14637    }
14638}
14639/// Arguments for rpc StartTracing().
14640#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14641pub struct StartTracingRequest {}
14642#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14643pub struct StartTracingResponse {}
14644/// Arguments for rpc ChangeTraceConfig().
14645#[derive(Clone, PartialEq, ::prost::Message)]
14646pub struct ChangeTraceConfigRequest {
14647    #[prost(message, optional, tag = "1")]
14648    pub trace_config: ::core::option::Option<TraceConfig>,
14649}
14650#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14651pub struct ChangeTraceConfigResponse {}
14652/// Arguments for rpc DisableTracing().
14653///
14654/// TODO: not supported yet, selectively disable only some data sources.
14655/// repeated string data_source_name;
14656#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14657pub struct DisableTracingRequest {}
14658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14659pub struct DisableTracingResponse {}
14660/// Arguments for rpc ReadBuffers().
14661///
14662/// The |id|s of the buffer, as passed to CreateBuffers().
14663/// TODO: repeated uint32 buffer_ids = 1;
14664#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14665pub struct ReadBuffersRequest {}
14666/// TODO: uint32 buffer_id = 1;
14667#[derive(Clone, PartialEq, ::prost::Message)]
14668pub struct ReadBuffersResponse {
14669    #[prost(message, repeated, tag = "2")]
14670    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
14671}
14672/// Nested message and enum types in `ReadBuffersResponse`.
14673pub mod read_buffers_response {
14674    /// Each streaming reply returns one or more slices for one or more trace
14675    /// packets, or even just a portion of it (if it's too big to fit within one
14676    /// IPC). The returned slices are ordered and contiguous: packets' slices are
14677    /// not interleaved and slices are sent only once all slices for a packet are
14678    /// available (i.e. the consumer will never see any gap).
14679    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14680    pub struct Slice {
14681        #[prost(bytes = "vec", optional, tag = "1")]
14682        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14683        /// When true, this is the last slice for the packet. A ReadBufferResponse
14684        /// might have no slices marked as |last_slice_for_packet|==true, in the case
14685        /// of a very large packet that gets chunked into several IPCs (in which case
14686        /// only the last IPC for the packet will have this flag set).
14687        #[prost(bool, optional, tag = "2")]
14688        pub last_slice_for_packet: ::core::option::Option<bool>,
14689    }
14690}
14691/// Arguments for rpc FreeBuffers().
14692#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14693pub struct FreeBuffersRequest {
14694    /// The |id|s of the buffer, as passed to CreateBuffers().
14695    #[prost(uint32, repeated, packed = "false", tag = "1")]
14696    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
14697}
14698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14699pub struct FreeBuffersResponse {}
14700/// Arguments for rpc Flush().
14701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14702pub struct FlushRequest {
14703    #[prost(uint32, optional, tag = "1")]
14704    pub timeout_ms: ::core::option::Option<u32>,
14705    /// More details such as flush reason and originator. Introduced in v38 / V.
14706    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
14707    #[prost(uint64, optional, tag = "2")]
14708    pub flags: ::core::option::Option<u64>,
14709}
14710#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14711pub struct FlushResponse {}
14712/// Arguments for rpc Detach
14713#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14714pub struct DetachRequest {
14715    #[prost(string, optional, tag = "1")]
14716    pub key: ::core::option::Option<::prost::alloc::string::String>,
14717}
14718#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14719pub struct DetachResponse {}
14720/// Arguments for rpc Attach.
14721#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14722pub struct AttachRequest {
14723    #[prost(string, optional, tag = "1")]
14724    pub key: ::core::option::Option<::prost::alloc::string::String>,
14725}
14726#[derive(Clone, PartialEq, ::prost::Message)]
14727pub struct AttachResponse {
14728    #[prost(message, optional, tag = "1")]
14729    pub trace_config: ::core::option::Option<TraceConfig>,
14730}
14731/// Arguments for rpc GetTraceStats.
14732#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14733pub struct GetTraceStatsRequest {}
14734#[derive(Clone, PartialEq, ::prost::Message)]
14735pub struct GetTraceStatsResponse {
14736    #[prost(message, optional, tag = "1")]
14737    pub trace_stats: ::core::option::Option<TraceStats>,
14738}
14739/// Arguments for rpc ObserveEvents.
14740///
14741/// To stop observing events of a certain type, send a request with the remaining
14742/// types. To stop observing completely, send an empty request.
14743#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14744pub struct ObserveEventsRequest {
14745    #[prost(
14746        enumeration = "observable_events::Type",
14747        repeated,
14748        packed = "false",
14749        tag = "1"
14750    )]
14751    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
14752}
14753#[derive(Clone, PartialEq, ::prost::Message)]
14754pub struct ObserveEventsResponse {
14755    #[prost(message, optional, tag = "1")]
14756    pub events: ::core::option::Option<ObservableEvents>,
14757}
14758/// Arguments for rpc QueryServiceState.
14759#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14760pub struct QueryServiceStateRequest {
14761    /// If set, only the TracingServiceState.tracing_sessions is filled. Producers
14762    /// and data sources are omitted.
14763    #[prost(bool, optional, tag = "1")]
14764    pub sessions_only: ::core::option::Option<bool>,
14765}
14766#[derive(Clone, PartialEq, ::prost::Message)]
14767pub struct QueryServiceStateResponse {
14768    /// In order to avoid hitting IPC message size limitations, the service will
14769    /// return >1 replies for each query, chunking the TracingServiceState. The
14770    /// receiver is expected to merge replies together and parse that when the
14771    /// last reply is received (i.e. when IPC's |has_more| == false).
14772    #[prost(message, optional, tag = "1")]
14773    pub service_state: ::core::option::Option<TracingServiceState>,
14774}
14775/// Arguments for rpc QueryCapabilities.
14776#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14777pub struct QueryCapabilitiesRequest {}
14778#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14779pub struct QueryCapabilitiesResponse {
14780    #[prost(message, optional, tag = "1")]
14781    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
14782}
14783/// Arguments for rpc SaveTraceForBugreport.
14784#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14785pub struct SaveTraceForBugreportRequest {}
14786/// This response is sent only after the trace was saved into file (if succeeded)
14787/// or something failed.
14788#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14789pub struct SaveTraceForBugreportResponse {
14790    /// If true, an eligible the trace was saved into a known location (on Android
14791    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
14792    /// If false no trace with bugreport_score > 0 was found or an error occurred.
14793    /// see |msg| in that case for details about the failure.
14794    #[prost(bool, optional, tag = "1")]
14795    pub success: ::core::option::Option<bool>,
14796    #[prost(string, optional, tag = "2")]
14797    pub msg: ::core::option::Option<::prost::alloc::string::String>,
14798}
14799/// Arguments for rpc CloneSession.
14800/// Consumer may also send a file descriptor with this rpc message. If the
14801/// descriptor is valid, and the session that should be cloned is
14802/// 'write_into_file' session, traced writes the cloned session content to that
14803/// file descriptor, instead of writing it in the cloned session buffers.
14804#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14805pub struct CloneSessionRequest {
14806    /// If set, the trace filter will not have effect on the cloned session.
14807    /// Used for bugreports.
14808    #[prost(bool, optional, tag = "2")]
14809    pub skip_trace_filter: ::core::option::Option<bool>,
14810    /// If set, affects the generation of the FlushFlags::CloneTarget to be set
14811    /// to kBugreport when requesting the flush to the producers.
14812    #[prost(bool, optional, tag = "3")]
14813    pub for_bugreport: ::core::option::Option<bool>,
14814    /// If set, this is stored in the trace as name of the trigger that caused the
14815    /// clone.
14816    #[prost(string, optional, tag = "5")]
14817    pub clone_trigger_name: ::core::option::Option<::prost::alloc::string::String>,
14818    /// If set, this is stored in the trace as name of the producer that triggered
14819    /// the clone.
14820    #[prost(string, optional, tag = "6")]
14821    pub clone_trigger_producer_name: ::core::option::Option<
14822        ::prost::alloc::string::String,
14823    >,
14824    /// If set, this is stored in the trace as uid of the producer that triggered
14825    /// the clone.
14826    #[prost(int32, optional, tag = "7")]
14827    pub clone_trigger_trusted_producer_uid: ::core::option::Option<i32>,
14828    /// If set, this is stored in the trace as timestamp of the trigger that caused
14829    /// the clone.
14830    #[prost(uint64, optional, tag = "8")]
14831    pub clone_trigger_boot_time_ns: ::core::option::Option<u64>,
14832    /// If set, this is stored in the trace as the configured delay of the trigger
14833    /// that caused the clone.
14834    #[prost(uint64, optional, tag = "9")]
14835    pub clone_trigger_delay_ms: ::core::option::Option<u64>,
14836    #[prost(oneof = "clone_session_request::Selector", tags = "1, 4")]
14837    pub selector: ::core::option::Option<clone_session_request::Selector>,
14838}
14839/// Nested message and enum types in `CloneSessionRequest`.
14840pub mod clone_session_request {
14841    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
14842    pub enum Selector {
14843        /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
14844        /// the session with the highest bugreport score is cloned (if any exists).
14845        #[prost(uint64, tag = "1")]
14846        SessionId(u64),
14847        /// The unique_session_name of the tracing session to clone. Tracing sessions
14848        /// that are clones of other tracing sessions are ignored.
14849        #[prost(string, tag = "4")]
14850        UniqueSessionName(::prost::alloc::string::String),
14851    }
14852}
14853#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14854pub struct CloneSessionResponse {
14855    /// If true, the clone was successful. If false it failed and |error| contains
14856    /// the details about the failure.
14857    #[prost(bool, optional, tag = "1")]
14858    pub success: ::core::option::Option<bool>,
14859    #[prost(string, optional, tag = "2")]
14860    pub error: ::core::option::Option<::prost::alloc::string::String>,
14861    /// The UUID of the cloned session.
14862    #[prost(int64, optional, tag = "3")]
14863    pub uuid_msb: ::core::option::Option<i64>,
14864    #[prost(int64, optional, tag = "4")]
14865    pub uuid_lsb: ::core::option::Option<i64>,
14866    /// TracingService sets this when the cloned session was write_into_file=true.
14867    /// The consumer cannot know upfront if a session is WIF or not.
14868    /// Introduced in v53.
14869    #[prost(bool, optional, tag = "5")]
14870    pub was_write_into_file: ::core::option::Option<bool>,
14871}
14872#[derive(Clone, PartialEq, ::prost::Message)]
14873pub struct CommitDataRequest {
14874    #[prost(message, repeated, tag = "1")]
14875    pub chunks_to_move: ::prost::alloc::vec::Vec<commit_data_request::ChunksToMove>,
14876    #[prost(message, repeated, tag = "2")]
14877    pub chunks_to_patch: ::prost::alloc::vec::Vec<commit_data_request::ChunkToPatch>,
14878    /// Optional. If this commit is made in response to a Flush(id) request coming
14879    /// from the service, copy back the id of the request so the service can tell
14880    /// when the flush happened.
14881    #[prost(uint64, optional, tag = "3")]
14882    pub flush_request_id: ::core::option::Option<u64>,
14883}
14884/// Nested message and enum types in `CommitDataRequest`.
14885pub mod commit_data_request {
14886    /// When |chunks_to_move| is present, the producer is requesting the service to
14887    /// move the given chunks form the share memory buffer into the central
14888    /// trace buffer(s).
14889    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14890    pub struct ChunksToMove {
14891        /// The 0-based index of the page in the Shared Memory Buffer.
14892        #[prost(uint32, optional, tag = "1")]
14893        pub page: ::core::option::Option<u32>,
14894        /// The 0-based chunk index \[0..13\] within the page.
14895        #[prost(uint32, optional, tag = "2")]
14896        pub chunk: ::core::option::Option<u32>,
14897        /// The target buffer it should be moved onto. The service will check that
14898        /// the producer is allowed to write into that buffer before the move.
14899        #[prost(uint32, optional, tag = "3")]
14900        pub target_buffer: ::core::option::Option<u32>,
14901        /// Sending the chunk data over the wire. Used for transports that don't
14902        /// support shared memory (e.g. vsock or TCP sockets). In the default case
14903        /// (tracing protocol over a Unix socket), this field is not used and tracing
14904        /// data is stored in the shmem buffer and referenced by the fields above.
14905        /// See |use_shemem_emulation| in the codebase for reference.
14906        #[prost(bytes = "vec", optional, tag = "4")]
14907        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14908        /// Set to true when scraping data in shmem emulation (aka commits-over-ipc)
14909        /// AND the chunk was still in kChunkBeingWritten. This is necessary because
14910        /// in emulation mode, the service cannot tell whether this is a complete
14911        /// chunk coming from a regular TraceWriter commit, or a scraped one.
14912        /// This field is only set when `data` is present. It is never set (and is
14913        /// ignored by the service) for the regular case of doing commits over
14914        /// shmem. Introduced in Perfetto v54.
14915        /// See /rfcs/0010-smb-scraping-remote-producers.md .
14916        #[prost(bool, optional, tag = "5")]
14917        pub chunk_incomplete: ::core::option::Option<bool>,
14918    }
14919    /// Used to patch chunks that have already been sent to the service. The chunk
14920    /// might not be in the shared memory buffer anymore as it could have been
14921    /// moved by the service in response to a prior CommitDataRequest.
14922    /// It is perfectly valid to patch a chunk that is being notified in the same
14923    /// message (a chunk can show up both in the |changed_pages| and |patches|
14924    /// field within the same CommitDataRequest message).
14925    /// In other words, |chunks_to_patch| is always processed after
14926    /// |chunks_to_move|.
14927    #[derive(Clone, PartialEq, ::prost::Message)]
14928    pub struct ChunkToPatch {
14929        #[prost(uint32, optional, tag = "1")]
14930        pub target_buffer: ::core::option::Option<u32>,
14931        /// {WriterID, ChunkID} uniquely identify a chunk for the current producer.
14932        #[prost(uint32, optional, tag = "2")]
14933        pub writer_id: ::core::option::Option<u32>,
14934        #[prost(uint32, optional, tag = "3")]
14935        pub chunk_id: ::core::option::Option<u32>,
14936        /// List of patches to apply to the given chunk.
14937        #[prost(message, repeated, tag = "4")]
14938        pub patches: ::prost::alloc::vec::Vec<chunk_to_patch::Patch>,
14939        /// When true more patches will follow in future requests and the chunk
14940        /// should be still considered as patch-pending. When false the chunk becomes
14941        /// eligible for reading.
14942        #[prost(bool, optional, tag = "5")]
14943        pub has_more_patches: ::core::option::Option<bool>,
14944    }
14945    /// Nested message and enum types in `ChunkToPatch`.
14946    pub mod chunk_to_patch {
14947        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14948        pub struct Patch {
14949            /// Offset in bytes from the start of the chunk payload. e.g., offset == 0
14950            /// corresponds to the first byte of the first packet (or fragment) in the
14951            /// chunk.
14952            #[prost(uint32, optional, tag = "1")]
14953            pub offset: ::core::option::Option<u32>,
14954            /// Bytes to patch at the given offset.
14955            #[prost(bytes = "vec", optional, tag = "2")]
14956            pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14957        }
14958    }
14959}
14960/// Arguments for rpc InitializeConnection().
14961#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14962pub struct InitializeConnectionRequest {
14963    /// Optional. Provides a hint to the tracing service about the suggested size
14964    /// of the shared memory buffer pages. The service is not required to respect
14965    /// this if it has already another value in the configuration or if the hint
14966    /// is unreasonably large. Must be an integer multiple of 4096. See tradeoff
14967    /// considerations in shared_memory_abi.h.
14968    #[prost(uint32, optional, tag = "1")]
14969    pub shared_memory_page_size_hint_bytes: ::core::option::Option<u32>,
14970    /// Optional. Provides a hint to the tracing service about the suggested size
14971    /// of the shared memory buffer. The service is not required to respect this
14972    /// and might return a smaller buffer.
14973    #[prost(uint32, optional, tag = "2")]
14974    pub shared_memory_size_hint_bytes: ::core::option::Option<u32>,
14975    /// Required to match the producer config set by the service to the correct
14976    /// producer.
14977    #[prost(string, optional, tag = "3")]
14978    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
14979    /// If provided, overrides the service's SMB scraping setting for the producer.
14980    #[prost(
14981        enumeration = "initialize_connection_request::ProducerSmbScrapingMode",
14982        optional,
14983        tag = "4"
14984    )]
14985    pub smb_scraping_mode: ::core::option::Option<i32>,
14986    /// Since Android R, this request can also transport an FD for the producer's
14987    /// shared memory buffer, if allocated by the producer (e.g. for startup
14988    /// tracing). In this case, |shared_memory_page_size_hint_bytes| is a required
14989    /// field, and describes the SMB's page size. Note that the service may not
14990    /// accept this SMB (e.g. because it is too old or its size / page size are
14991    /// invalid) and instead allocate a new SMB which is provided in the
14992    /// SetupTracing response. See TracingService::ConnectProducer() and
14993    /// |using_shmem_provided_by_producer| in InitializeConnectionResponse.
14994    #[prost(bool, optional, tag = "6")]
14995    pub producer_provided_shmem: ::core::option::Option<bool>,
14996    /// The version of the client library used by the producer.
14997    /// This is a human readable string with and its format varies depending on
14998    /// the build system that is used to build the code and the repo (standalone
14999    /// vs AOSP). This is intended for human debugging only.
15000    #[prost(string, optional, tag = "8")]
15001    pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
15002    /// On Windows, when producer_provided_shmem = true, the client creates a named
15003    /// SHM region and passes the name (an unguessable token) back to the service.
15004    /// Introduced in v13.
15005    #[prost(string, optional, tag = "7")]
15006    pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
15007    /// Bitmask of the ProtocolAbiVersion values that the producer supports.
15008    /// The service returns those it supports too, and ignores unknown bits.
15009    /// 0 or absent, as from an old producer, means v1 only.
15010    /// Introduced in v59.
15011    #[prost(uint32, optional, tag = "9")]
15012    pub supported_protocol_abi_versions: ::core::option::Option<u32>,
15013}
15014/// Nested message and enum types in `InitializeConnectionRequest`.
15015pub mod initialize_connection_request {
15016    #[derive(
15017        Clone,
15018        Copy,
15019        Debug,
15020        PartialEq,
15021        Eq,
15022        Hash,
15023        PartialOrd,
15024        Ord,
15025        ::prost::Enumeration
15026    )]
15027    #[repr(i32)]
15028    pub enum ProducerSmbScrapingMode {
15029        /// Use the service's default setting for SMB scraping.
15030        SmbScrapingUnspecified = 0,
15031        /// Enable scraping of uncommitted chunks from the producer's shared memory
15032        /// buffer.
15033        SmbScrapingEnabled = 1,
15034        /// Disable scraping of uncommitted chunks from the producer's shared memory
15035        /// buffer.
15036        SmbScrapingDisabled = 2,
15037    }
15038    impl ProducerSmbScrapingMode {
15039        /// String value of the enum field names used in the ProtoBuf definition.
15040        ///
15041        /// The values are not transformed in any way and thus are considered stable
15042        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15043        pub fn as_str_name(&self) -> &'static str {
15044            match self {
15045                Self::SmbScrapingUnspecified => "SMB_SCRAPING_UNSPECIFIED",
15046                Self::SmbScrapingEnabled => "SMB_SCRAPING_ENABLED",
15047                Self::SmbScrapingDisabled => "SMB_SCRAPING_DISABLED",
15048            }
15049        }
15050        /// Creates an enum from field names used in the ProtoBuf definition.
15051        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15052            match value {
15053                "SMB_SCRAPING_UNSPECIFIED" => Some(Self::SmbScrapingUnspecified),
15054                "SMB_SCRAPING_ENABLED" => Some(Self::SmbScrapingEnabled),
15055                "SMB_SCRAPING_DISABLED" => Some(Self::SmbScrapingDisabled),
15056                _ => None,
15057            }
15058        }
15059    }
15060}
15061#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15062pub struct InitializeConnectionResponse {
15063    /// Indicates whether the service accepted the SMB provided by the producer in
15064    /// InitializeConnectionRequest (if any). If false, the shared memory buffer FD
15065    /// will provided by the service via the SetupTracing async command.
15066    #[prost(bool, optional, tag = "1")]
15067    pub using_shmem_provided_by_producer: ::core::option::Option<bool>,
15068    /// Indicates to the producer that the service allows direct SMB patching of
15069    /// chunks that have not yet been committed to it.
15070    /// This field has been introduced in Android S.
15071    #[prost(bool, optional, tag = "2")]
15072    pub direct_smb_patching_supported: ::core::option::Option<bool>,
15073    /// Indicates whether the service would like to use SMB emulation for the
15074    /// connection, and request the client to send chunk data over the socket e.g.
15075    /// for remote connection from a VM guest.
15076    #[prost(bool, optional, tag = "3")]
15077    pub use_shmem_emulation: ::core::option::Option<bool>,
15078    /// Bitmask of the versions in supported_protocol_abi_versions that the
15079    /// service also supports on this connection.
15080    /// - No common version: the service rejects InitializeConnection.
15081    /// - 0 or absent, as from an old service: v1 only, not an empty common set.
15082    /// - A version that the producer did not offer: the producer disconnects.
15083    ///    This includes an old service when the producer did not offer v1.
15084    /// The mask stays fixed for the connection. It does not select a writer.
15085    /// Introduced in v59.
15086    #[prost(uint32, optional, tag = "4")]
15087    pub protocol_abi_versions: ::core::option::Option<u32>,
15088}
15089/// Arguments for rpc AttachV2RingBuffer().
15090/// - The IPC layer sends the ring buffer's file descriptor, a sealed memfd,
15091///    with this request. Without it, the service rejects the request.
15092/// - The service takes the ring buffer size from the memfd. The request has
15093///    no size field.
15094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15095pub struct AttachV2RingBufferRequest {
15096    /// Bytes per chunk in the shared memory. The service rejects the ring buffer
15097    /// if the size and this value give no valid layout.
15098    #[prost(uint32, optional, tag = "1")]
15099    pub chunk_size_bytes: ::core::option::Option<u32>,
15100}
15101/// The service sends it if it attached the ring buffer, and rejects the
15102/// request otherwise.
15103#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15104pub struct AttachV2RingBufferResponse {}
15105/// Arguments for rpc DrainV2RingBuffer().
15106#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15107pub struct DrainV2RingBufferRequest {}
15108/// The IPC schema requires a response type. The service never sends it.
15109#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15110pub struct DrainV2RingBufferResponse {}
15111/// Arguments for rpc RegisterDataSource().
15112#[derive(Clone, PartialEq, ::prost::Message)]
15113pub struct RegisterDataSourceRequest {
15114    #[prost(message, optional, tag = "1")]
15115    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
15116}
15117#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15118pub struct RegisterDataSourceResponse {
15119    /// Only set in case of errors, when |data_source_id| == 0.
15120    #[prost(string, optional, tag = "1")]
15121    pub error: ::core::option::Option<::prost::alloc::string::String>,
15122}
15123/// Arguments for rpc UpdateDataSource().
15124#[derive(Clone, PartialEq, ::prost::Message)]
15125pub struct UpdateDataSourceRequest {
15126    /// The new data_source_descriptor.{id, name} must match {id, name} of a
15127    /// data source previously registered via RegisterDataSource().
15128    #[prost(message, optional, tag = "1")]
15129    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
15130}
15131#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15132pub struct UpdateDataSourceResponse {}
15133/// Arguments for rpc UnregisterDataSource().
15134#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15135pub struct UnregisterDataSourceRequest {
15136    /// The name of the data source to unregister, as previously passed in
15137    /// |RegisterDataSourceRequest.name|.
15138    #[prost(string, optional, tag = "1")]
15139    pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
15140}
15141#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15142pub struct UnregisterDataSourceResponse {}
15143/// Arguments for rpc RegisterTraceWriter().
15144#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15145pub struct RegisterTraceWriterRequest {
15146    /// The ID of a producer's trace writer.
15147    #[prost(uint32, optional, tag = "1")]
15148    pub trace_writer_id: ::core::option::Option<u32>,
15149    /// The ID of the target buffer that the trace writer commits its chunks to.
15150    #[prost(uint32, optional, tag = "2")]
15151    pub target_buffer: ::core::option::Option<u32>,
15152}
15153#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15154pub struct RegisterTraceWriterResponse {}
15155/// Arguments for rpc UnregisterTraceWriter().
15156#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15157pub struct UnregisterTraceWriterRequest {
15158    /// The ID of a producer's trace writer.
15159    #[prost(uint32, optional, tag = "1")]
15160    pub trace_writer_id: ::core::option::Option<u32>,
15161}
15162#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15163pub struct UnregisterTraceWriterResponse {}
15164/// Arguments for rpc CommitData().
15165/// See commit_data_request.proto for CommitDataRequest. That has its own file
15166/// because it is used also as input to generate C++ classes (xxx.gen.h).
15167#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15168pub struct CommitDataResponse {}
15169/// Arguments for rpc NotifyDataSourceStarted().
15170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15171pub struct NotifyDataSourceStartedRequest {
15172    /// ID of the data source that has successfully started.
15173    #[prost(uint64, optional, tag = "1")]
15174    pub data_source_id: ::core::option::Option<u64>,
15175}
15176#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15177pub struct NotifyDataSourceStartedResponse {}
15178/// Arguments for rpc NotifyDataSourceStopped().
15179#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15180pub struct NotifyDataSourceStoppedRequest {
15181    /// ID of the data source that has successfully stopped.
15182    #[prost(uint64, optional, tag = "1")]
15183    pub data_source_id: ::core::option::Option<u64>,
15184}
15185#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15186pub struct NotifyDataSourceStoppedResponse {}
15187/// Arguments for rpc ActivateTriggersRequest().
15188#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15189pub struct ActivateTriggersRequest {
15190    #[prost(string, repeated, tag = "1")]
15191    pub trigger_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
15192}
15193#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15194pub struct ActivateTriggersResponse {}
15195/// Arguments for rpc GetAsyncCommand().
15196#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15197pub struct GetAsyncCommandRequest {}
15198#[derive(Clone, PartialEq, ::prost::Message)]
15199pub struct GetAsyncCommandResponse {
15200    /// Next id: 8.
15201    #[prost(oneof = "get_async_command_response::Cmd", tags = "3, 6, 1, 2, 5, 7")]
15202    pub cmd: ::core::option::Option<get_async_command_response::Cmd>,
15203}
15204/// Nested message and enum types in `GetAsyncCommandResponse`.
15205pub mod get_async_command_response {
15206    /// Called after SetupTracing and before StartDataSource.
15207    /// This message was introduced in Android Q.
15208    #[derive(Clone, PartialEq, ::prost::Message)]
15209    pub struct SetupDataSource {
15210        #[prost(uint64, optional, tag = "1")]
15211        pub new_instance_id: ::core::option::Option<u64>,
15212        #[prost(message, optional, tag = "2")]
15213        pub config: ::core::option::Option<super::DataSourceConfig>,
15214    }
15215    #[derive(Clone, PartialEq, ::prost::Message)]
15216    pub struct StartDataSource {
15217        #[prost(uint64, optional, tag = "1")]
15218        pub new_instance_id: ::core::option::Option<u64>,
15219        /// For backwards compat reasons (with Android P), the config passed here
15220        /// is identical to the one passed to SetupDataSource.config.
15221        #[prost(message, optional, tag = "2")]
15222        pub config: ::core::option::Option<super::DataSourceConfig>,
15223    }
15224    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15225    pub struct StopDataSource {
15226        #[prost(uint64, optional, tag = "1")]
15227        pub instance_id: ::core::option::Option<u64>,
15228    }
15229    /// On Android/Linux/Mac this message also transports the file descriptor for
15230    /// the shared memory buffer (not a proto field).
15231    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15232    pub struct SetupTracing {
15233        #[prost(uint32, optional, tag = "1")]
15234        pub shared_buffer_page_size_kb: ::core::option::Option<u32>,
15235        /// On Windows, instead, we pass the name (an unguessable token) of a shared
15236        /// memory region that can be attached by the other process by name.
15237        /// Introduced in v13.
15238        #[prost(string, optional, tag = "2")]
15239        pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
15240    }
15241    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15242    pub struct Flush {
15243        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
15244        /// sources to flush.
15245        #[prost(uint64, repeated, packed = "false", tag = "1")]
15246        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
15247        /// A monotonic counter generated by the service. The producer is simply
15248        /// expected to copy this value back into the CommitDataRequest, so the
15249        /// service can tell when the data for this flush has been committed.
15250        #[prost(uint64, optional, tag = "2")]
15251        pub request_id: ::core::option::Option<u64>,
15252        /// More details such as flush reason and originator. Introduced in v38 / V.
15253        /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
15254        #[prost(uint64, optional, tag = "3")]
15255        pub flags: ::core::option::Option<u64>,
15256    }
15257    /// Instructs the given data sources to stop referring to any trace contents
15258    /// emitted so far. Sent only to active data sources that set
15259    /// |handles_incremental_state_clear| in their DataSourceDescriptor.
15260    ///
15261    /// Added to perfetto tree in May 2019.
15262    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15263    pub struct ClearIncrementalState {
15264        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
15265        /// sources that should clear their incremental state.
15266        #[prost(uint64, repeated, packed = "false", tag = "1")]
15267        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
15268    }
15269    /// Next id: 8.
15270    #[derive(Clone, PartialEq, ::prost::Oneof)]
15271    pub enum Cmd {
15272        #[prost(message, tag = "3")]
15273        SetupTracing(SetupTracing),
15274        #[prost(message, tag = "6")]
15275        SetupDataSource(SetupDataSource),
15276        #[prost(message, tag = "1")]
15277        StartDataSource(StartDataSource),
15278        #[prost(message, tag = "2")]
15279        StopDataSource(StopDataSource),
15280        /// id == 4 was teardown_tracing, never implemented.
15281        #[prost(message, tag = "5")]
15282        Flush(Flush),
15283        #[prost(message, tag = "7")]
15284        ClearIncrementalState(ClearIncrementalState),
15285    }
15286}
15287/// Arguments for rpc Sync().
15288#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15289pub struct SyncRequest {}
15290#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15291pub struct SyncResponse {}
15292/// A shared memory layout and the operations that send its data to the service.
15293/// The versions are independent: v2 does not imply v1. The producer sends a
15294/// bitmask of its versions in InitializeConnectionRequest. The service returns
15295/// the bitmask of common versions. This exchange does not select a writer for
15296/// an instance.
15297///
15298/// Each value is a single bit, so a uint32 mask holds a set of versions.
15299/// A new version must take the next unused bit: 4, then 8.
15300///
15301/// Keep in sync with ProtocolAbiVersion in
15302/// include/perfetto/ext/tracing/core/tracing_service.h, which describes each
15303/// version in detail.
15304#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
15305#[repr(i32)]
15306pub enum ProtocolAbiVersion {
15307    /// Reserved. Do not advertise this value.
15308    Unspecified = 0,
15309    /// The original protocol: a shared memory buffer (SMB) of pages and chunks,
15310    /// with CommitData IPCs and patches.
15311    /// Docs: <https://perfetto.dev/docs/design-docs/api-and-abi#shmem-abi.>
15312    V1 = 1,
15313    /// Tracing v2: a ring buffer that the producer allocates, shared with
15314    /// AttachV2RingBuffer and read on DrainV2RingBuffer.
15315    /// It is experimental and its ABI is not stable yet.
15316    /// Design: RFC-0014, <https://github.com/google/perfetto/discussions/4508.>
15317    V2 = 2,
15318}
15319impl ProtocolAbiVersion {
15320    /// String value of the enum field names used in the ProtoBuf definition.
15321    ///
15322    /// The values are not transformed in any way and thus are considered stable
15323    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15324    pub fn as_str_name(&self) -> &'static str {
15325        match self {
15326            Self::Unspecified => "PROTOCOL_ABI_VERSION_UNSPECIFIED",
15327            Self::V1 => "PROTOCOL_ABI_VERSION_V1",
15328            Self::V2 => "PROTOCOL_ABI_VERSION_V2",
15329        }
15330    }
15331    /// Creates an enum from field names used in the ProtoBuf definition.
15332    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15333        match value {
15334            "PROTOCOL_ABI_VERSION_UNSPECIFIED" => Some(Self::Unspecified),
15335            "PROTOCOL_ABI_VERSION_V1" => Some(Self::V1),
15336            "PROTOCOL_ABI_VERSION_V2" => Some(Self::V2),
15337            _ => None,
15338        }
15339    }
15340}
15341#[derive(Clone, PartialEq, ::prost::Message)]
15342pub struct IpcFrame {
15343    /// The client is expected to send requests with monotonically increasing
15344    /// request_id. The host will match the request_id sent from the client.
15345    /// In the case of a Streaming response (has_more = true) the host will send
15346    /// several InvokeMethodReply with the same request_id.
15347    #[prost(uint64, optional, tag = "2")]
15348    pub request_id: ::core::option::Option<u64>,
15349    /// Used only in unittests to generate a parsable message of arbitrary size.
15350    #[prost(bytes = "vec", repeated, tag = "1")]
15351    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
15352    #[prost(oneof = "ipc_frame::Msg", tags = "3, 4, 5, 6, 7, 8")]
15353    pub msg: ::core::option::Option<ipc_frame::Msg>,
15354}
15355/// Nested message and enum types in `IPCFrame`.
15356pub mod ipc_frame {
15357    /// Client -> Host.
15358    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15359    pub struct BindService {
15360        #[prost(string, optional, tag = "1")]
15361        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
15362    }
15363    /// Host -> Client.
15364    #[derive(Clone, PartialEq, ::prost::Message)]
15365    pub struct BindServiceReply {
15366        #[prost(bool, optional, tag = "1")]
15367        pub success: ::core::option::Option<bool>,
15368        #[prost(uint32, optional, tag = "2")]
15369        pub service_id: ::core::option::Option<u32>,
15370        #[prost(message, repeated, tag = "3")]
15371        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
15372    }
15373    /// Nested message and enum types in `BindServiceReply`.
15374    pub mod bind_service_reply {
15375        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15376        pub struct MethodInfo {
15377            #[prost(uint32, optional, tag = "1")]
15378            pub id: ::core::option::Option<u32>,
15379            #[prost(string, optional, tag = "2")]
15380            pub name: ::core::option::Option<::prost::alloc::string::String>,
15381        }
15382    }
15383    /// Client -> Host.
15384    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15385    pub struct InvokeMethod {
15386        /// BindServiceReply.id.
15387        #[prost(uint32, optional, tag = "1")]
15388        pub service_id: ::core::option::Option<u32>,
15389        /// BindServiceReply.method.id.
15390        #[prost(uint32, optional, tag = "2")]
15391        pub method_id: ::core::option::Option<u32>,
15392        /// Proto-encoded request argument.
15393        #[prost(bytes = "vec", optional, tag = "3")]
15394        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15395        /// When true the client specifies that a reply is not needed. The use case
15396        /// is a method with an empty, where the client doesn't care about the
15397        /// success/failure of the method invocation and rather prefers avoiding the
15398        /// IPC roundtrip + context switch associated with the reply.
15399        #[prost(bool, optional, tag = "4")]
15400        pub drop_reply: ::core::option::Option<bool>,
15401    }
15402    /// Host -> Client.
15403    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15404    pub struct InvokeMethodReply {
15405        #[prost(bool, optional, tag = "1")]
15406        pub success: ::core::option::Option<bool>,
15407        /// only for streaming RPCs.
15408        #[prost(bool, optional, tag = "2")]
15409        pub has_more: ::core::option::Option<bool>,
15410        /// proto-encoded response value.
15411        #[prost(bytes = "vec", optional, tag = "3")]
15412        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15413    }
15414    /// Host -> Client.
15415    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15416    pub struct RequestError {
15417        #[prost(string, optional, tag = "1")]
15418        pub error: ::core::option::Option<::prost::alloc::string::String>,
15419    }
15420    /// Client (relay service) -> Host. This is generated by the relay service to
15421    /// fill the producer identity in the guest. This message is sent to the host
15422    /// service *before* any IPCFrame is from a local producer is relayed. This is
15423    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
15424    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
15425    /// uses instead the SO_PEERCRED.
15426    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15427    pub struct SetPeerIdentity {
15428        /// The UID and PID of the producer process.
15429        #[prost(int32, optional, tag = "1")]
15430        pub pid: ::core::option::Option<i32>,
15431        #[prost(int32, optional, tag = "2")]
15432        pub uid: ::core::option::Option<i32>,
15433        /// The hint for the tracing service to infer the machine ID. This field
15434        /// should satisfy the requriement that different machines should have
15435        /// different values. In practice, this filed contains the Linux kernel
15436        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
15437        /// isn't available.
15438        #[prost(string, optional, tag = "3")]
15439        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
15440        /// Human-readable name associated to the producer's machine. Provides the
15441        /// tracing service a new dimension to filter data sources on. Given the
15442        /// perfetto machine name is provided by users, there is no expectation of
15443        /// uniqueness across machines in a tracing session.
15444        #[prost(string, optional, tag = "4")]
15445        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
15446    }
15447    #[derive(Clone, PartialEq, ::prost::Oneof)]
15448    pub enum Msg {
15449        #[prost(message, tag = "3")]
15450        MsgBindService(BindService),
15451        #[prost(message, tag = "4")]
15452        MsgBindServiceReply(BindServiceReply),
15453        #[prost(message, tag = "5")]
15454        MsgInvokeMethod(InvokeMethod),
15455        #[prost(message, tag = "6")]
15456        MsgInvokeMethodReply(InvokeMethodReply),
15457        #[prost(message, tag = "7")]
15458        MsgRequestError(RequestError),
15459        #[prost(message, tag = "8")]
15460        SetPeerIdentity(SetPeerIdentity),
15461    }
15462}