Merge "ui: Fix missing cpu column in dataset for ftrace tracks" into main
diff --git a/Android.bp b/Android.bp
index 621eedc..fa82c12 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13654,6 +13654,7 @@
         "src/trace_processor/perfetto_sql/stdlib/prelude/after_eof/views.sql",
         "src/trace_processor/perfetto_sql/stdlib/prelude/before_eof/tables.sql",
         "src/trace_processor/perfetto_sql/stdlib/prelude/before_eof/trace_bounds.sql",
+        "src/trace_processor/perfetto_sql/stdlib/sched/latency.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/runnable.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/states.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/thread_executing_span.sql",
diff --git a/BUILD b/BUILD
index d4d3aff..64c1e49 100644
--- a/BUILD
+++ b/BUILD
@@ -3167,6 +3167,7 @@
 perfetto_filegroup(
     name = "src_trace_processor_perfetto_sql_stdlib_sched_sched",
     srcs = [
+        "src/trace_processor/perfetto_sql/stdlib/sched/latency.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/runnable.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/states.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/thread_executing_span.sql",
diff --git a/DIR_METADATA b/DIR_METADATA
index 592fce2..6c28780 100644
--- a/DIR_METADATA
+++ b/DIR_METADATA
@@ -2,3 +2,6 @@
   component: "Speed>Tracing"
 }
 team_email: "tracing@chromium.org"
+buganizer_public: {
+  component_id: 1457213
+}
diff --git a/docs/concepts/config.md b/docs/concepts/config.md
index c4326e6..1badce4 100644
--- a/docs/concepts/config.md
+++ b/docs/concepts/config.md
@@ -4,11 +4,12 @@
 in Perfetto all tracing data sources are idle by default and record data only
 when instructed to do so.
 
-Data sources record data only when one (or more) tracing sessions are active.
-A tracing session is started by invoking the `perfetto` cmdline client and
-passing a config (see QuickStart guide for
+Data sources record data only when one (or more) tracing sessions are active. A
+tracing session is started by invoking the `perfetto` cmdline client and passing
+a config (see QuickStart guide for
 [Android](/docs/quickstart/android-tracing.md),
-[Linux](/docs/quickstart/linux-tracing.md), or [Chrome on desktop](/docs/quickstart/chrome-tracing.md)).
+[Linux](/docs/quickstart/linux-tracing.md), or
+[Chrome on desktop](/docs/quickstart/chrome-tracing.md)).
 
 A simple trace config looks like this:
 
@@ -31,7 +32,7 @@
   }
 }
 
-````
+```
 
 And is used as follows:
 
@@ -43,7 +44,7 @@
 [`/test/configs/`](/test/configs/).
 
 NOTE: If you are tracing on Android using adb and experiencing problems, see
-      [the Android section](#android) below.
+[the Android section](#android) below.
 
 ## TraceConfig
 
@@ -51,38 +52,40 @@
 ([reference docs](/docs/reference/trace-config-proto.autogen)) that defines:
 
 1. The general behavior of the whole tracing system, e.g.:
-    * The max duration of the trace.
-    * The number of in-memory buffers and their size.
-    * The max size of the output trace file.
+
+   - The max duration of the trace.
+   - The number of in-memory buffers and their size.
+   - The max size of the output trace file.
 
 2. Which data sources to enable and their configuration, e.g.:
-    * For the [kernel tracing data source](/docs/data-sources/cpu-scheduling.md)
-    , which ftrace events to enable.
-    * For the [heap profiler](/docs/data-sources/native-heap-profiler.md), the
-    target process name and sampling rate.
-    
-    See the _data sources_ section of the docs for details on how to
-    configure the data sources bundled with Perfetto.
 
-3. The `{data source} x {buffer}` mappings: which buffer each data
-    source should write into (see [buffers section](#buffers) below).
+   - For the [kernel tracing data source](/docs/data-sources/cpu-scheduling.md)
+     , which ftrace events to enable.
+   - For the [heap profiler](/docs/data-sources/native-heap-profiler.md), the
+     target process name and sampling rate.
 
-The tracing service (`traced`) acts as a configuration dispatcher: it receives
-a config from the `perfetto` cmdline client (or any other
+   See the _data sources_ section of the docs for details on how to configure
+   the data sources bundled with Perfetto.
+
+3. The `{data source} x {buffer}` mappings: which buffer each data source should
+   write into (see [buffers section](#buffers) below).
+
+The tracing service (`traced`) acts as a configuration dispatcher: it receives a
+config from the `perfetto` cmdline client (or any other
 [Consumer](/docs/concepts/service-model.md#consumer)) and forwards parts of the
 config to the various [Producers](/docs/concepts/service-model.md#producer)
 connected.
 
 When a tracing session is started by a consumer, the tracing service will:
 
-* Read the outer section of the TraceConfig (e.g. `duration_ms`, `buffers`) and
+- Read the outer section of the TraceConfig (e.g. `duration_ms`, `buffers`) and
   use that to determine its own behavior.
-* Read the list of data sources in the `data_sources` section. For each data
+- Read the list of data sources in the `data_sources` section. For each data
   source listed in the config, if a corresponding name (`"linux.ftrace"` in the
   example below) was registered, the service will ask the producer process to
-  start that data source, passing it the raw bytes of the
-  [`DataSourceConfig` subsection][dss] verbatim to the data source (See
-  backward/forward compat section below).
+  start that data source, passing it the raw bytes of the [`DataSourceConfig`
+  subsection][dss] verbatim to the data source (See backward/forward compat
+  section below).
 
 ![TraceConfig diagram](/docs/images/trace_config.png)
 
@@ -109,10 +112,10 @@
 
 Each buffer has a fill policy which is either:
 
-* RING_BUFFER (default): the buffer behaves like a ring buffer and writes when
+- RING_BUFFER (default): the buffer behaves like a ring buffer and writes when
   full will wrap over and replace the oldest trace data in the buffer.
 
-* DISCARD: the buffer stops accepting data once full. Further write attempts are
+- DISCARD: the buffer stops accepting data once full. Further write attempts are
   dropped.
 
 WARNING: DISCARD can have unexpected side-effect with data sources that commit
@@ -121,36 +124,34 @@
 A trace config must define at least one buffer to be valid. In the simplest case
 all data sources will write their trace data into the same buffer.
 
- While this is
-fine for most basic cases, it can be problematic in cases where different data
-sources write at significantly different rates.
+While this is fine for most basic cases, it can be problematic in cases where
+different data sources write at significantly different rates.
 
 For instance, imagine a trace config that enables both:
 
-1. The kernel scheduler tracer. On a typical Android phone this records
-   ~10000 events/second, writing ~1 MB/s of trace data into the buffer.
+1. The kernel scheduler tracer. On a typical Android phone this records ~10000
+   events/second, writing ~1 MB/s of trace data into the buffer.
 
 2. Memory stat polling. This data source writes the contents of /proc/meminfo
-   into the trace buffer and is configured to poll every 5 seconds, writing 
-   ~100 KB per poll interval.
+   into the trace buffer and is configured to poll every 5 seconds, writing ~100
+   KB per poll interval.
 
 If both data sources are configured to write into the same buffer and such
 buffer is set to 4MB, most traces will contain only one memory snapshot. There
 are very good chances that most traces won't contain any memory snapshot at all,
-even if the 2nd data sources was working perfectly.
-This is because during the 5 s. polling interval, the scheduler data source can
-end up filling the whole buffer, pushing the memory snapshot data out of the
-buffer.
+even if the 2nd data sources was working perfectly. This is because during the 5
+s. polling interval, the scheduler data source can end up filling the whole
+buffer, pushing the memory snapshot data out of the buffer.
 
 ## Dynamic buffer mapping
 
-Data-source <> buffer mappings are dynamic in Perfetto.
-In the simplest case a tracing session can define only one buffer. By default,
-all data sources will record data into that one buffer.
+Data-source <> buffer mappings are dynamic in Perfetto. In the simplest case a
+tracing session can define only one buffer. By default, all data sources will
+record data into that one buffer.
 
 In cases like the example above, it might be preferable separating these data
-sources into different buffers.
-This can be achieved with the `target_buffer` field of the TraceConfig.
+sources into different buffers. This can be achieved with the `target_buffer`
+field of the TraceConfig.
 
 ![Buffer mapping](/docs/images/trace_config_buffer_mapping.png)
 
@@ -189,11 +190,11 @@
 
 #### Text format
 
-It is the preferred format for human-driven workflows and exploration. It
-allows to pass directly the text file in the PBTX (ProtoBuf TeXtual
-representation) syntax, for the schema defined in the
-[trace_config.proto](/protos/perfetto/config/trace_config.proto)
-(see [reference docs](/docs/reference/trace-config-proto.autogen))
+It is the preferred format for human-driven workflows and exploration. It allows
+to pass directly the text file in the PBTX (ProtoBuf TeXtual representation)
+syntax, for the schema defined in the
+[trace_config.proto](/protos/perfetto/config/trace_config.proto) (see
+[reference docs](/docs/reference/trace-config-proto.autogen))
 
 When using this mode pass the `--txt` flag to `perfetto` to indicate the config
 should be interpreted as a PBTX file:
@@ -212,10 +213,9 @@
 #### Binary format
 
 It is the preferred format for machine-to-machine (M2M) interaction. It involves
-passing the protobuf-encoded binary of the TraceConfig message.
-This can be obtained passing the PBTX in input to the protobuf's `protoc`
-compiler (which can be downloaded
-[here](https://github.com/protocolbuffers/protobuf/releases)).
+passing the protobuf-encoded binary of the TraceConfig message. This can be
+obtained passing the PBTX in input to the protobuf's `protoc` compiler (which
+can be downloaded [here](https://github.com/protocolbuffers/protobuf/releases)).
 
 ```bash
 cd ~/code/perfetto  # external/perfetto in the Android tree.
@@ -236,9 +236,9 @@
 
 By default Perfetto keeps the full trace buffer(s) in memory and writes it into
 the destination file (the `-o` cmdline argument) only at the end of the tracing
-session. This is to reduce the perf-intrusiveness of the tracing system.
-This, however, limits the max size of the trace to the physical memory size of
-the device, which is often too limiting.
+session. This is to reduce the perf-intrusiveness of the tracing system. This,
+however, limits the max size of the trace to the physical memory size of the
+device, which is often too limiting.
 
 In some cases (e.g., benchmarks, hard to repro cases) it is desirable to capture
 traces that are way larger than that, at the cost of extra I/O overhead.
@@ -246,29 +246,26 @@
 To achieve that, Perfetto allows to periodically write the trace buffers into
 the target file (or stdout) using the following TraceConfig fields:
 
-* `write_into_file (bool)`:
-When true periodically drains the trace buffers into the output
-file. When this option is enabled, the userspace buffers need to be just
-big enough to hold tracing data between two write periods.
-The buffer sizing depends on the activity of the device.
-The data rate of a typical trace is ~1-4 MB/s. So a 16MB in-memory buffer can
-hold for up write periods of ~4 seconds before starting to lose data.
+- `write_into_file (bool)`: When true periodically drains the trace buffers into
+  the output file. When this option is enabled, the userspace buffers need to be
+  just big enough to hold tracing data between two write periods. The buffer
+  sizing depends on the activity of the device. The data rate of a typical trace
+  is ~1-4 MB/s. So a 16MB in-memory buffer can hold for up write periods of ~4
+  seconds before starting to lose data.
 
-* `file_write_period_ms (uint32)`:
-Overrides the default drain period (5s). Shorter periods require a smaller
-userspace buffer but increase the performance intrusiveness of tracing. If
-the period given is less than 100ms, the tracing service will use a period
-of 100ms.
+- `file_write_period_ms (uint32)`: Overrides the default drain period (5s).
+  Shorter periods require a smaller userspace buffer but increase the
+  performance intrusiveness of tracing. If the period given is less than 100ms,
+  the tracing service will use a period of 100ms.
 
-* `max_file_size_bytes (uint64)`:
-If set, stops the tracing session after N bytes have been written. Used to
-cap the size of the trace.
+- `max_file_size_bytes (uint64)`: If set, stops the tracing session after N
+  bytes have been written. Used to cap the size of the trace.
 
 For a complete example of a working trace config in long-tracing mode see
 [`/test/configs/long_trace.cfg`](/test/configs/long_trace.cfg).
 
 Summary: to capture a long trace just set `write_into_file:true`, set a long
-         `duration_ms` and use an in-memory buffer size of 32MB or more.
+`duration_ms` and use an in-memory buffer size of 32MB or more.
 
 ## Data-source specific config
 
@@ -276,7 +273,8 @@
 data-source-specific behaviors. At the proto schema level, this is defined in
 the `DataSourceConfig` section of `TraceConfig`:
 
-From [data_source_config.proto](/protos/perfetto/config/data_source_config.proto):
+From
+[data_source_config.proto](/protos/perfetto/config/data_source_config.proto):
 
 ```protobuf
 message TraceConfig {
@@ -312,42 +310,43 @@
 implements data sources.
 
 #### A note on backwards/forward compatibility
+
 The tracing service will route the raw binary blob of the `DataSourceConfig`
 message to the data sources with a matching name, without attempting to decode
 and re-encode it. If the `DataSourceConfig` section of the trace config contains
 a new field that didn't exist at the time when the service was built, the
-service will still pass the `DataSourceConfig` through to the data source.
-This allows to introduced new data sources without needing the service to
-know anything about them upfront.
+service will still pass the `DataSourceConfig` through to the data source. This
+allows to introduced new data sources without needing the service to know
+anything about them upfront.
 
 TODO: we are aware of the fact that today extending the `DataSourceConfig` with
 a custom proto requires changing the `data_source_config.proto` in the Perfetto
-repo, which is unideal for external projects. The long-term plan is to reserve
-a range of fields for non-upstream extensions and provide generic templated
+repo, which is unideal for external projects. The long-term plan is to reserve a
+range of fields for non-upstream extensions and provide generic templated
 accessors for client code. Until then, we accept patches upstream to introduce
 ad-hoc configurations for your own data sources.
 
 ## Multi-process data sources
 
 Some data sources are singletons. E.g., in the case of scheduler tracing that
-Perfetto ships on Android, there is only data source for the whole system,
-owned by the `traced_probes` service.
+Perfetto ships on Android, there is only data source for the whole system, owned
+by the `traced_probes` service.
 
 However, in the general case multiple processes can advertise the same data
 source. This is the case, for instance, when using the
 [Perfetto SDK](/docs/instrumentation/tracing-sdk.md) for userspace
 instrumentation.
 
-If this happens, when starting a tracing session that specifies that data
-source in the trace config, Perfetto by default will ask all processes that
-advertise that data source to start it.
+If this happens, when starting a tracing session that specifies that data source
+in the trace config, Perfetto by default will ask all processes that advertise
+that data source to start it.
 
 In some cases it might be desirable to further limit the enabling of the data
 source to a specific process (or set of processes). That is possible through the
 `producer_name_filter` and `producer_name_regex_filter`.
 
 NOTE: the typical Perfetto run-time model is: one process == one Perfetto
-      Producer; one Producer typically hosts multiple data sources.
+Producer; one Producer typically hosts multiple data sources.
 
 When those filters are set, the Perfetto tracing service will activate the data
 source only in the subset of producers matching the filter.
@@ -380,8 +379,8 @@
 which is based on triggers. The overall idea is to declare in the trace config
 itself:
 
-* A set of triggers, which are just free-form strings.
-* Whether a given trigger should cause the trace to be started or stopped, and
+- A set of triggers, which are just free-form strings.
+- Whether a given trigger should cause the trace to be started or stopped, and
   the start/stop delay.
 
 Why using triggers? Why can't one just start perfetto or kill(SIGTERM) it when
@@ -393,12 +392,12 @@
 Triggers offer a way to unprivileged apps to control, in a limited fashion, the
 lifecycle of a tracing session. The conceptual model is:
 
-* The privileged Consumer (see
-  [_Service model_](/docs/concepts/service-model.md)), i.e. the entity
-  that is normally authorized to start tracing (e.g., adb shell in Android),
-  declares upfront what are the possible trigger names for the trace and what
-  they will do.
-* Unprivileged entities (any random app process) can activate those triggers.
+- The privileged Consumer (see
+  [_Service model_](/docs/concepts/service-model.md)), i.e. the entity that is
+  normally authorized to start tracing (e.g., adb shell in Android), declares
+  upfront what are the possible trigger names for the trace and what they will
+  do.
+- Unprivileged entities (any random app process) can activate those triggers.
   Unprivileged entities don't get a say on what the triggers will do, they only
   communicate that an event happened.
 
@@ -417,12 +416,13 @@
 
 Start triggers allow activating a tracing session only after some significant
 event has happened. Passing a trace config that has `START_TRACING` trigger
-causes the tracing session to stay idle (i.e. not recording any data) until either
-the trigger is hit or the `trigger_timeout_ms` timeout is hit.
+causes the tracing session to stay idle (i.e. not recording any data) until
+either the trigger is hit or the `trigger_timeout_ms` timeout is hit.
 
 `trace_duration_ms` and triggered traces can not be used at the same time.
 
 Example config:
+
 ```protobuf
 # If the "myapp_is_slow" is hit, the trace starts recording data and will be
 # stopped after 5s.
@@ -450,12 +450,13 @@
 signal.
 
 This can be used to use perfetto in flight-recorder mode. By starting a trace
-with buffers configured in `RING_BUFFER` mode and `STOP_TRACING` triggers,
-the trace will be recorded in a loop and finalized when the culprit event is
+with buffers configured in `RING_BUFFER` mode and `STOP_TRACING` triggers, the
+trace will be recorded in a loop and finalized when the culprit event is
 detected. This is key for events where the root cause is in the recent past
 (e.g., the app detects a slow scroll or a missing frame).
 
 Example config:
+
 ```protobuf
 # If no trigger is hit, the trace will end after 30s.
 trigger_timeout_ms: 30000
@@ -478,21 +479,20 @@
 
 On Android, there are some caveats around using `adb shell`
 
-* Ctrl+C, which normally causes a graceful termination of the trace, is not
+- Ctrl+C, which normally causes a graceful termination of the trace, is not
   propagated by ADB when using `adb shell perfetto` but only when using an
   interactive PTY-based session via `adb shell`.
-* On non-rooted devices before Android 12, the config can only be passed as
+- On non-rooted devices before Android 12, the config can only be passed as
   `cat config | adb shell perfetto -c -` (-: stdin) because of over-restrictive
   SELinux rules. Since Android 12 `/data/misc/perfetto-configs` can be used for
   storing configs.
-* On devices before Android 10, adb cannot directly pull
+- On devices before Android 10, adb cannot directly pull
   `/data/misc/perfetto-traces`. Use
   `adb shell cat /data/misc/perfetto-traces/trace > trace` to work around.
-* When capturing longer traces, e.g. in the context of benchmarks or CI, use
+- When capturing longer traces, e.g. in the context of benchmarks or CI, use
   `PID=$(perfetto --background)` and then `kill $PID` to stop.
 
-
 ## Other resources
 
-* [TraceConfig Reference](/docs/reference/trace-config-proto.autogen)
-* [Buffers and dataflow](/docs/concepts/buffers.md)
+- [TraceConfig Reference](/docs/reference/trace-config-proto.autogen)
+- [Buffers and dataflow](/docs/concepts/buffers.md)
diff --git a/docs/data-sources/syscalls.md b/docs/data-sources/syscalls.md
index 3e6156d..8e769e8 100644
--- a/docs/data-sources/syscalls.md
+++ b/docs/data-sources/syscalls.md
@@ -15,13 +15,13 @@
 
 At the UI level system calls are shown inlined with the per-thread slice tracks:
 
-![](/docs/images/syscalls.png "System calls in the thread tracks")
+![](/docs/images/syscalls.png 'System calls in the thread tracks')
 
 ## SQL
 
 At the SQL level, syscalls are no different than any other userspace slice
 event. They get interleaved in the per-thread slice stack and can be easily
-filtered by looking for the 'sys_' prefix:
+filtered by looking for the 'sys\_' prefix:
 
 ```sql
 select ts, dur, t.name as thread, s.name, depth from slices as s
@@ -30,14 +30,14 @@
 where s.name like 'sys_%'
 ```
 
-ts | dur | thread | name 
----|-----|--------|------
-856325324372751 | 439867648 | s.nexuslauncher | sys_epoll_pwait
-856325324376970 | 990 | FpsThrottlerThr | sys_recvfrom
-856325324378376 | 2657 | surfaceflinger | sys_ioctl
-856325324419574 | 1250 | android.anim.lf | sys_recvfrom
-856325324428168 | 27344 | android.anim.lf | sys_ioctl
-856325324451345 | 573 | FpsThrottlerThr | sys_getuid
+| ts              | dur       | thread          | name            |
+| --------------- | --------- | --------------- | --------------- |
+| 856325324372751 | 439867648 | s.nexuslauncher | sys_epoll_pwait |
+| 856325324376970 | 990       | FpsThrottlerThr | sys_recvfrom    |
+| 856325324378376 | 2657      | surfaceflinger  | sys_ioctl       |
+| 856325324419574 | 1250      | android.anim.lf | sys_recvfrom    |
+| 856325324428168 | 27344     | android.anim.lf | sys_ioctl       |
+| 856325324451345 | 573       | FpsThrottlerThr | sys_getuid      |
 
 ## TraceConfig
 
diff --git a/docs/instrumentation/tracing-sdk.md b/docs/instrumentation/tracing-sdk.md
index a77d363..a3b7c85a 100644
--- a/docs/instrumentation/tracing-sdk.md
+++ b/docs/instrumentation/tracing-sdk.md
@@ -5,27 +5,26 @@
 
 When using the Tracing SDK there are two main aspects to consider:
 
-1. Whether you are interested only in tracing events coming from your own app
-   or want to collect full-stack traces that overlay app trace events with
-   system trace events like scheduler traces, syscalls or any other Perfetto
-   data source.
+1. Whether you are interested only in tracing events coming from your own app or
+   want to collect full-stack traces that overlay app trace events with system
+   trace events like scheduler traces, syscalls or any other Perfetto data
+   source.
 
 2. For app-specific tracing, whether you need to trace simple types of timeline
-  events (e.g., slices, counters) or need to define complex data sources with a
-  custom strongly-typed schema (e.g., for dumping the state of a subsystem of
-  your app into the trace).
+   events (e.g., slices, counters) or need to define complex data sources with a
+   custom strongly-typed schema (e.g., for dumping the state of a subsystem of
+   your app into the trace).
 
 For Android-only instrumentation, the advice is to keep using the existing
-[android.os.Trace (SDK)][atrace-sdk] / [ATrace_* (NDK)][atrace-ndk] if they
+[android.os.Trace (SDK)][atrace-sdk] / [ATrace\_\* (NDK)][atrace-ndk] if they
 are sufficient for your use cases. Atrace-based instrumentation is fully
-supported in Perfetto.
-See the [Data Sources -> Android System -> Atrace Instrumentation][atrace-ds]
-for details.
+supported in Perfetto. See the [Data Sources -> Android System -> Atrace
+Instrumentation][atrace-ds] for details.
 
 ## Getting started
 
-TIP: The code from these examples is also available [in the
-repository](/examples/sdk/README.md).
+TIP: The code from these examples is also available
+[in the repository](/examples/sdk/README.md).
 
 To start using the Client API, first check out the latest SDK release:
 
@@ -105,9 +104,8 @@
 
 Track events are the suggested option when dealing with app-specific tracing as
 they take care of a number of subtleties (e.g., thread safety, flushing, string
-interning).
-Track events are time bounded events (e.g., slices, counter) based on simple
-`TRACE_EVENT` annotation tags in the codebase, like this:
+interning). Track events are time bounded events (e.g., slices, counter) based
+on simple `TRACE_EVENT` annotation tags in the codebase, like this:
 
 ```c++
 #include <perfetto.h>
@@ -167,15 +165,14 @@
 ### Custom data sources
 
 For most uses, track events are the most straightforward way of instrumenting
-apps for tracing. However, in some rare circumstances they are not
-flexible enough, e.g., when the data doesn't fit the notion of a track or is
-high volume enough that it needs a strongly typed schema to minimize the size of
-each event. In this case, you can implement a *custom data source* for
-Perfetto.
+apps for tracing. However, in some rare circumstances they are not flexible
+enough, e.g., when the data doesn't fit the notion of a track or is high volume
+enough that it needs a strongly typed schema to minimize the size of each event.
+In this case, you can implement a _custom data source_ for Perfetto.
 
 Unlike track events, when working with custom data sources, you will also need
-corresponding changes in [trace processor](/docs/analysis/trace-processor.md)
-to enable importing your data format.
+corresponding changes in [trace processor](/docs/analysis/trace-processor.md) to
+enable importing your data format.
 
 A custom data source is a subclass of `perfetto::DataSource`. Perfetto will
 automatically create one instance of the class for each tracing session it is
@@ -248,9 +245,9 @@
 ```
 
 If necessary the `Trace()` method can access the custom data source state
-(`my_custom_state` in the example above). Doing so, will take a mutex to
-ensure data source isn't destroyed (e.g., because of stopping tracing) while
-the `Trace()` method is called on another thread. For example:
+(`my_custom_state` in the example above). Doing so, will take a mutex to ensure
+data source isn't destroyed (e.g., because of stopping tracing) while the
+`Trace()` method is called on another thread. For example:
 
 ```C++
 CustomDataSource::Trace([](CustomDataSource::TraceContext ctx) {
@@ -261,9 +258,9 @@
 
 ## In-process vs System mode
 
-The two modes are not mutually exclusive. An app can be configured to work
-in both modes and respond both to in-process tracing requests and system
-tracing requests. Both modes generate the same trace file format.
+The two modes are not mutually exclusive. An app can be configured to work in
+both modes and respond both to in-process tracing requests and system tracing
+requests. Both modes generate the same trace file format.
 
 ### In-process mode
 
@@ -275,8 +272,8 @@
 `TracingInitArgs.backends = perfetto::kInProcessBackend` when initializing the
 SDK, see examples below.
 
-This mode is used to generate traces that contain only events emitted by
-the app, but not other types of events (e.g. scheduler traces).
+This mode is used to generate traces that contain only events emitted by the
+app, but not other types of events (e.g. scheduler traces).
 
 The main advantage is that by running fully in-process, it doesn't require any
 special OS privileges and the profiled process can control the lifecycle of
@@ -293,32 +290,32 @@
 `TracingInitArgs.backends = perfetto::kSystemBackend` when initializing the SDK,
 see examples below.
 
-The main advantage of this mode is that it is possible to create fused traces where
-app events are overlaid on the same timeline of OS events. This enables
+The main advantage of this mode is that it is possible to create fused traces
+where app events are overlaid on the same timeline of OS events. This enables
 full-stack performance investigations, looking all the way through syscalls and
 kernel scheduling events.
 
-The main limitation of this mode is that it requires the external `traced` daemon
-to be up and running and reachable through the UNIX socket connection.
+The main limitation of this mode is that it requires the external `traced`
+daemon to be up and running and reachable through the UNIX socket connection.
 
 This is suggested for local debugging or lab testing scenarios where the user
 (or the test harness) can control the OS deployment (e.g., sideload binaries on
 Android).
 
 When using system mode, the tracing session must be controlled from the outside,
-using the `perfetto` command-line client
-(See [reference](/docs/reference/perfetto-cli)). This is because when collecting
+using the `perfetto` command-line client (See
+[reference](/docs/reference/perfetto-cli)). This is because when collecting
 system traces, tracing data producers are not allowed to read back the trace
 data as it might disclose information about other processes and allow
 side-channel attacks.
 
-* On Android 9 (Pie) and beyond, traced is shipped as part of the platform.
-* On older versions of Android, traced can be built from sources using the
-  the [standalone NDK-based workflow](/docs/contributing/build-instructions.md)
-  and sideloaded via adb shell.
-* On Linux and MacOS and Windows `traced` must be built and run separately. See
+- On Android 9 (Pie) and beyond, traced is shipped as part of the platform.
+- On older versions of Android, traced can be built from sources using the the
+  [standalone NDK-based workflow](/docs/contributing/build-instructions.md) and
+  sideloaded via adb shell.
+- On Linux and MacOS and Windows `traced` must be built and run separately. See
   the [Linux quickstart](/docs/quickstart/linux-tracing.md) for instructions.
-* On Windows the tracing protocol works over TCP/IP (
+- On Windows the tracing protocol works over TCP/IP (
   [127.0.0.1:32278](https://cs.android.com/android/platform/superproject/main/+/main:external/perfetto/src/tracing/ipc/default_socket.cc;l=75;drc=4f88a2fdfd3801c109d5e927b8206f9756288b12)
   ) + named shmem.
 
@@ -370,12 +367,12 @@
 ```
 
 TIP: API methods with `Blocking` in their name will suspend the calling thread
-     until the respective operation is complete. There are also asynchronous
-     variants that don't have this limitation.
+until the respective operation is complete. There are also asynchronous variants
+that don't have this limitation.
 
-Now that tracing is active, instruct your app to perform the operation you
-want to record. After that, stop tracing and collect the
-protobuf-formatted trace data:
+Now that tracing is active, instruct your app to perform the operation you want
+to record. After that, stop tracing and collect the protobuf-formatted trace
+data:
 
 ```C++
 tracing_session->StopBlocking();
@@ -388,9 +385,9 @@
 output.close();
 ```
 
-To save memory with longer traces, you can also tell Perfetto to write
-directly into a file by passing a file descriptor into Setup(), remembering
-to close the file after tracing is done:
+To save memory with longer traces, you can also tell Perfetto to write directly
+into a file by passing a file descriptor into Setup(), remembering to close the
+file after tracing is done:
 
 ```C++
 int fd = open("example.perfetto-trace", O_RDWR | O_CREAT | O_TRUNC, 0600);
@@ -401,8 +398,9 @@
 close(fd);
 ```
 
-The resulting trace file can be directly opened in the [Perfetto
-UI](https://ui.perfetto.dev) or the [Trace Processor](/docs/analysis/trace-processor.md).
+The resulting trace file can be directly opened in the
+[Perfetto UI](https://ui.perfetto.dev) or the
+[Trace Processor](/docs/analysis/trace-processor.md).
 
 [ipc]: /docs/design-docs/api-and-abi.md#socket-protocol
 [atrace-ds]: /docs/data-sources/atrace.md
diff --git a/docs/quickstart/callstack-sampling.md b/docs/quickstart/callstack-sampling.md
index 30fd74a..f597e5c 100644
--- a/docs/quickstart/callstack-sampling.md
+++ b/docs/quickstart/callstack-sampling.md
@@ -2,12 +2,12 @@
 
 ## Prerequisites
 
-*   [ADB](https://developer.android.com/studio/command-line/adb) installed.
-*   A device running Android T+.
-*   Either a debuggable (`userdebug`/`eng`) Android image, or the apps to be
-    profiled need to be
-    [marked as profileable or debuggable](https://developer.android.com/guide/topics/manifest/profileable-element)
-    in their manifests.
+- [ADB](https://developer.android.com/studio/command-line/adb) installed.
+- A device running Android T+.
+- Either a debuggable (`userdebug`/`eng`) Android image, or the apps to be
+  profiled need to be
+  [marked as profileable or debuggable](https://developer.android.com/guide/topics/manifest/profileable-element)
+  in their manifests.
 
 ## Capture a CPU profile
 
@@ -130,6 +130,6 @@
 
 `cpu_profile` will also write separate profiles for each process that it
 profiled in the output directory, and those can be visualized using
-[`pprof`](https://github.com/google/pprof). You can merge them into one
-by passing all of them to pprof, e.g.
+[`pprof`](https://github.com/google/pprof). You can merge them into one by
+passing all of them to pprof, e.g.
 `pprof /tmp/perf_profile-240105114948clvad/*`.
diff --git a/infra/perfetto.dev/src/assets/script.js b/infra/perfetto.dev/src/assets/script.js
index 44adbf6..6c4d04d 100644
--- a/infra/perfetto.dev/src/assets/script.js
+++ b/infra/perfetto.dev/src/assets/script.js
@@ -69,7 +69,7 @@
     toc.appendChild(li);
     doAfterLoadEvent(() => {
       tocAnchors.push(
-          {top: anchor.offsetTop + anchor.offsetHeight / 2, obj: link});
+        { top: anchor.offsetTop + anchor.offsetHeight / 2, obj: link });
     });
   }
   tocContainer.innerHTML = '';
@@ -81,7 +81,7 @@
     return;
   tocEventHandlersInstalled = true;
   const doc = document.querySelector('.doc');
-  const passive = {passive: true};
+  const passive = { passive: true };
   if (doc) {
     const offY = doc.offsetTop;
     doc.addEventListener('mousemove', (e) => onMouseMove(offY, e), passive);
@@ -91,9 +91,9 @@
   }
   window.addEventListener('scroll', () => onScroll(), passive);
   resizeObserver = new ResizeObserver(() => requestAnimationFrame(() => {
-                                        updateNav();
-                                        updateTOC();
-                                      }));
+    updateNav();
+    updateTOC();
+  }));
   resizeObserver.observe(doc);
 }
 
@@ -235,7 +235,7 @@
 
 function setupSearch() {
   const URL =
-      'https://www.googleapis.com/customsearch/v1?key=AIzaSyBTD2XJkQkkuvDn76LSftsgWOkdBz9Gfwo&cx=007128963598137843411:8suis14kcmy&q='
+    'https://www.googleapis.com/customsearch/v1?key=AIzaSyBTD2XJkQkkuvDn76LSftsgWOkdBz9Gfwo&cx=007128963598137843411:8suis14kcmy&q='
   const searchContainer = document.getElementById('search');
   const searchBox = document.getElementById('search-box');
   const searchRes = document.getElementById('search-res')
diff --git a/infra/perfetto.dev/src/assets/style.scss b/infra/perfetto.dev/src/assets/style.scss
index 63d6fc1..0a0ff2e 100644
--- a/infra/perfetto.dev/src/assets/style.scss
+++ b/infra/perfetto.dev/src/assets/style.scss
@@ -15,234 +15,235 @@
 // Common + CSS reset
 // -----------------------------------------------------------------------------
 :root {
-    --site-header-height: 50px;
-    --home-highlights-height: 128px;
-    --content-max-width: 1100px;
-    --anim-ease: cubic-bezier(0.4, 0.0, 0.2, 1);
+  --site-header-height: 50px;
+  --home-highlights-height: 128px;
+  --content-max-width: 1100px;
+  --anim-ease: cubic-bezier(0.4, 0, 0.2, 1);
 
-    // This is set to 1 by JS after onload. This is to prevent flickering on
-    // page load on the nav bar and other entries while transitioning in their
-    // initial state.
-    --anim-enabled: 0;
+  // This is set to 1 by JS after onload. This is to prevent flickering on
+  // page load on the nav bar and other entries while transitioning in their
+  // initial state.
+  --anim-enabled: 0;
 
-    --anim-time: calc(0.15s * var(--anim-enabled));
+  --anim-time: calc(0.15s * var(--anim-enabled));
 }
 
 $wide: "(max-width: 1100px)";
 $mobile: "(max-width: 768px)";
 
 @mixin minimal-scrollbar {
-    &::-webkit-scrollbar {
-        width: 8px;
-        background-color: transparent;
-    }
-    &::-webkit-scrollbar-thumb {
-        background-color: #ccc;
-        border-radius: 8px;
-    }
+  &::-webkit-scrollbar {
+    width: 8px;
+    background-color: transparent;
+  }
+  &::-webkit-scrollbar-thumb {
+    background-color: #ccc;
+    border-radius: 8px;
+  }
 }
 
 @media (max-aspect-ratio: 1/1) {
-     :root {
-        --home-highlights-height: 256px;
-    }
+  :root {
+    --home-highlights-height: 256px;
+  }
 }
 
 * {
-    box-sizing: border-box;
-    -webkit-tap-highlight-color: none;
+  box-sizing: border-box;
+  -webkit-tap-highlight-color: none;
 }
 
 html {
-    font-family: Roboto, sans-serif;
-    -webkit-font-smoothing: antialiased;
+  font-family: Roboto, sans-serif;
+  -webkit-font-smoothing: antialiased;
 }
 
 html,
 body {
-    padding: 0;
-    margin: 0;
+  padding: 0;
+  margin: 0;
 }
 
 h1,
 h2,
 h3 {
-    font-family: inherit;
-    font-size: inherit;
-    font-weight: inherit;
-    padding: 0;
-    margin: 0;
+  font-family: inherit;
+  font-size: inherit;
+  font-weight: inherit;
+  padding: 0;
+  margin: 0;
 }
 
 // -----------------------------------------------------------------------------
 // Site header
 // -----------------------------------------------------------------------------
 .site-header {
-    background-color: hsl(210, 30%, 16%);
-    color: hsl(210, 17%, 98%);
-    position: sticky; // Sticky so the .docs element below doesn't start @ 0.
+  background-color: hsl(210, 30%, 16%);
+  color: hsl(210, 17%, 98%);
+  position: sticky; // Sticky so the .docs element below doesn't start @ 0.
+  top: 0;
+  width: 100%;
+  --sh-padding-y: 5px;
+  max-height: var(--site-header-height);
+  padding: var(--sh-padding-y) 30px;
+  box-shadow: rgba(0, 0, 0, 0.3) 0 3px 3px 0;
+  overflow: hidden;
+  display: flex;
+  z-index: 10;
+  transition: max-height var(--anim-ease) var(--anim-time);
+  &.expanded {
+    max-height: 100vh;
+  }
+  .brand {
+    img {
+      height: 40px;
+      vertical-align: bottom;
+    }
+    font-weight: 200;
+    font-size: 28px;
+    flex-grow: 1;
+    .brand-docs {
+      text-transform: uppercase;
+      font-size: 14px;
+      color: #ecba2a;
+      vertical-align: bottom;
+      line-height: 30px;
+      font-weight: 400;
+    }
+  }
+  > *:not(:first-child) {
+    line-height: calc(var(--site-header-height) - var(--sh-padding-y) * 2);
+    font-family: "Source Sans Pro", sans-serif;
+    font-weight: 400;
+    font-size: 1.1rem;
+    margin: 0 20px;
+    color: hsl(210, 17%, 85%);
+  }
+  a {
+    text-decoration: none;
+    &:hover {
+      color: hsl(210, 17%, 100%);
+    }
+  }
+  .menu {
+    visibility: hidden;
+    font-family: "Material Icons Round";
+    font-size: 24px;
+    text-align: center;
+    position: absolute;
+    right: 0;
     top: 0;
-    width: 100%;
-    --sh-padding-y: 5px;
-    max-height: var(--site-header-height);
-    padding: var(--sh-padding-y) 30px;
-    box-shadow: rgba(0, 0, 0, 0.3) 0 3px 3px 0;
-    overflow: hidden;
-    display: flex;
-    z-index: 10;
-    transition: max-height var(--anim-ease) var(--anim-time);
-    &.expanded {
-        max-height: 100vh;
-    }
-    .brand {
-        img {
-            height: 40px;
-            vertical-align: bottom;
-        }
-        font-weight: 200;
-        font-size: 28px;
-        flex-grow: 1;
-        .brand-docs {
-            text-transform: uppercase;
-            font-size: 14px;
-            color: #ecba2a;
-            vertical-align: bottom;
-            line-height: 30px;
-            font-weight: 400;
-        }
-    }
-    >*:not(:first-child) {
-        line-height: calc(var(--site-header-height) - var(--sh-padding-y) * 2);
-        font-family: 'Source Sans Pro', sans-serif;
-        font-weight: 400;
-        font-size: 1.1rem;
-        margin: 0 20px;
-        color: hsl(210, 17%, 85%);
-    }
-    a {
-        text-decoration: none;
-        &:hover {
-            color: hsl(210, 17%, 100%);
-        }
+    line-height: var(--site-header-height);
+  }
+
+  @media #{$mobile} {
+    flex-direction: column;
+    > *:not(:first-child) {
+      margin-left: 40px;
     }
     .menu {
-        visibility: hidden;
-        font-family: 'Material Icons Round';
-        font-size: 24px;
-        text-align: center;
-        position: absolute;
-        right: 0;
-        top: 0;
-        line-height: var(--site-header-height);
+      visibility: visible;
     }
-
-    @media #{$mobile} {
-        flex-direction: column;
-        >*:not(:first-child) {
-            margin-left: 40px;
-        }
-        .menu {
-            visibility: visible;
-        }
-    }
+  }
 }
 
-
 #search {
-    position: relative;
-    flex-grow: 0;
-    transition: flex-grow cubic-bezier(1, 0.01, 1, 1) var(--anim-time), background-color ease var(--anim-time);
-    padding: 0;
+  position: relative;
+  flex-grow: 0;
+  transition: flex-grow cubic-bezier(1, 0.01, 1, 1) var(--anim-time),
+    background-color ease var(--anim-time);
+  padding: 0;
+  &::before {
+    visibility: hidden;
+    user-select: none;
+    content: "";
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: var(--site-header-height);
+    bottom: 0;
+    z-index: -100;
+    background-color: rgba(255, 255, 255, 0.8);
+    backdrop-filter: blur(3px);
+    opacity: 0;
+    transition: opacity ease var(--anim-time), visibility 0s;
+  }
+  &:focus-within {
+    flex-grow: 1000;
     &::before {
-        visibility: hidden;
-        user-select: none;
-        content: '';
-        position: fixed;
-        left: 0;
-        right: 0;
-        top: var(--site-header-height);
-        bottom: 0;
-        z-index: -100;
-        background-color: rgba(255, 255, 255, 0.8);
-        backdrop-filter: blur(3px);
-        opacity: 0;
-        transition: opacity ease var(--anim-time), visibility 0s;
-
+      display: block;
+      opacity: 1;
+      visibility: visible;
     }
-    &:focus-within {
-        flex-grow: 1000;
-        &::before {
-            display: block;
-            opacity: 1;
-            visibility: visible;
-        }
-        #search-res {
-            display: block;
-        }
-
-    }
-
-    @media #{$mobile} {
-        display: none;
-    }
-
-    #search-box {
-        width: 100%;
-        height: 32px;
-        font-size: 1rem;;
-        color: #333;
-        background-color: rgba(255, 255, 255, 0.9);
-        border: 1px solid #eee;
-        border-radius: 2px;
-        background-image: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M39.8 41.95 26.65 28.8q-1.5 1.3-3.5 2.025-2 .725-4.25.725-5.4 0-9.15-3.75T6 18.75q0-5.3 3.75-9.05 3.75-3.75 9.1-3.75 5.3 0 9.025 3.75 3.725 3.75 3.725 9.05 0 2.15-.7 4.15-.7 2-2.1 3.75L42 39.75Zm-20.95-13.4q4.05 0 6.9-2.875Q28.6 22.8 28.6 18.75t-2.85-6.925Q22.9 8.95 18.85 8.95q-4.1 0-6.975 2.875T9 18.75q0 4.05 2.875 6.925t6.975 2.875Z"/></svg>');
-        background-repeat: no-repeat;
-        background-size: contain;
-        padding-left: 40px;
-        outline: none;
-        &:hover, &:focus {
-            background-color: rgba(255, 255, 255, 0.95);
-        }
-    }
-
     #search-res {
-        display: none;
-        background-color: rgba(255, 255, 255, 1.0);
-        border: 1px solid #eee;
-        box-shadow: #aaa 0px 1px 5px;
-        color: #333;
-        line-height: initial;
-        margin-top: -4px;
-        overflow-x: auto;
-        position: fixed;
-        top: var(--site-header-height);
-        max-height: calc(100vh - var(--site-header-height));
-        z-index: 10;
-        >div {
-            padding: 10px;
-            margin: 0;
-            &:hover {
-                background-color: #f0f0f0;
-            }
-        }
-        .sr-title {
-            color: #333;
-            font-weight: bold;
-        }
-        .sr-snippet {
-            color: #444;
-            font-size: 0.9rem;
-         }
+      display: block;
+    }
+  }
 
-        a { text-decoration: none; }
-        a:hover { color: initial };
+  @media #{$mobile} {
+    display: none;
+  }
 
-        &:empty {
-            visibility: hidden;
-        }
+  #search-box {
+    width: 100%;
+    height: 32px;
+    font-size: 1rem;
+    color: #333;
+    background-color: rgba(255, 255, 255, 0.9);
+    border: 1px solid #eee;
+    border-radius: 2px;
+    background-image: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M39.8 41.95 26.65 28.8q-1.5 1.3-3.5 2.025-2 .725-4.25.725-5.4 0-9.15-3.75T6 18.75q0-5.3 3.75-9.05 3.75-3.75 9.1-3.75 5.3 0 9.025 3.75 3.725 3.75 3.725 9.05 0 2.15-.7 4.15-.7 2-2.1 3.75L42 39.75Zm-20.95-13.4q4.05 0 6.9-2.875Q28.6 22.8 28.6 18.75t-2.85-6.925Q22.9 8.95 18.85 8.95q-4.1 0-6.975 2.875T9 18.75q0 4.05 2.875 6.925t6.975 2.875Z"/></svg>');
+    background-repeat: no-repeat;
+    background-size: contain;
+    padding-left: 40px;
+    outline: none;
+    &:hover,
+    &:focus {
+      background-color: rgba(255, 255, 255, 0.95);
+    }
+  }
+
+  #search-res {
+    display: none;
+    background-color: rgba(255, 255, 255, 1);
+    border: 1px solid #eee;
+    box-shadow: #aaa 0px 1px 5px;
+    color: #333;
+    line-height: initial;
+    margin-top: -4px;
+    overflow-x: auto;
+    position: fixed;
+    top: var(--site-header-height);
+    max-height: calc(100vh - var(--site-header-height));
+    z-index: 10;
+    > div {
+      padding: 10px;
+      margin: 0;
+      &:hover {
+        background-color: #f0f0f0;
+      }
+    }
+    .sr-title {
+      color: #333;
+      font-weight: bold;
+    }
+    .sr-snippet {
+      color: #444;
+      font-size: 0.9rem;
     }
 
-}
+    a {
+      text-decoration: none;
+    }
+    a:hover {
+      color: initial;
+    }
 
+    &:empty {
+      visibility: hidden;
+    }
+  }
+}
 
 // -----------------------------------------------------------------------------
 // Site footer
@@ -250,722 +251,759 @@
 
 // Footer in the index page.
 .site-footer {
-    background-color: hsl(210, 30%, 16%);
-    padding: 1em 0;
-    font-size: 14px;
-    color: #fff;
-    text-align: center;
-    ul {
-        list-style: none;
-        margin: 0;
-        padding: 0;
-        li {
-            display: inline;
-            padding: 0 10px;
-            &:not(:last-child) {
-                border-right: solid 1px #fff;
-            }
-        }
+  background-color: hsl(210, 30%, 16%);
+  padding: 1em 0;
+  font-size: 14px;
+  color: #fff;
+  text-align: center;
+  ul {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+    li {
+      display: inline;
+      padding: 0 10px;
+      &:not(:last-child) {
+        border-right: solid 1px #fff;
+      }
     }
-    a,
-    a:visited {
-        text-decoration: none;
-        color: inherit;
-    }
-    .docs-footer-notice { display: none; }
+  }
+  a,
+  a:visited {
+    text-decoration: none;
+    color: inherit;
+  }
+  .docs-footer-notice {
+    display: none;
+  }
 }
 
 // Footer overrides for the /docs/ page.
 .docs .site-footer {
-    grid-area: footer;
-    background: transparent;
-    color: #666;
-    text-align: left;
-    margin: 0 20px;
-    padding: 12px 0;
+  grid-area: footer;
+  background: transparent;
+  color: #666;
+  text-align: left;
+  margin: 0 20px;
+  padding: 12px 0;
 
-    .docs-footer-notice {
-        padding: 0;
-        margin: 0;
-        display: block;
-    }
+  .docs-footer-notice {
+    padding: 0;
+    margin: 0;
+    display: block;
+  }
 
-    ul { display: none; }
+  ul {
+    display: none;
+  }
 }
 
 // -----------------------------------------------------------------------------
 // Site content
 // -----------------------------------------------------------------------------
 .site-content {
-    .section-wrapper {
-        border-bottom: solid 1px #eee;
-        &:nth-child(2n+1) {
-          background-color: hsl(210, 17%, 98%);
-        }
+  .section-wrapper {
+    border-bottom: solid 1px #eee;
+    &:nth-child(2n + 1) {
+      background-color: hsl(210, 17%, 98%);
     }
-    section {
+  }
+  section {
+    display: block;
+    position: relative;
+    overflow: hidden;
+    padding: 0 20px;
+    margin: 0 auto;
+    max-width: calc(var(--content-max-width) + 2 * 20px);
+  }
+
+  .banner {
+    height: calc(
+      100vh - var(--home-highlights-height) - var(--site-header-height)
+    );
+    @media (max-height: 639px) {
+      // If the screen is too short (e.g. smartphone in landscape mode)
+      // move the highlights sections (the four tiles) out of the visible
+      // viewport.
+      height: calc(100vh - var(--site-header-height));
+    }
+    min-height: 25vw;
+    display: grid;
+    grid-template-columns: 1fr;
+    grid-template-rows: 1fr 1fr 5fr;
+    h1,
+    h2 {
+      margin: auto;
+      font-family: "Source Sans Pro", sans-serif;
+      text-align: center;
+      color: hsl(0, 0, 35%);
+      span {
+        white-space: nowrap;
+      }
+    }
+    h1 {
+      font-size: 2.5rem;
+      font-size: calc(min(4rem, 8vw, 6vh));
+      font-weight: 400;
+      padding-top: calc(max(1rem, 2vh));
+    }
+    h2 {
+      font-size: 1.25rem;
+      font-size: calc(min(2rem, 6vw, 4vh));
+      font-weight: 200;
+      padding-top: 10px;
+    }
+    .home-img {
+      padding: 1rem 0;
+      overflow: hidden;
+      position: relative;
+      display: flex;
+      img {
+        max-height: 100%;
+        max-width: 100%;
+        margin: auto;
         display: block;
-        position: relative;
-        overflow: hidden;
-        padding: 0 20px;
-        margin: 0 auto;
-        max-width: calc(var(--content-max-width) + 2 * 20px);
+      }
     }
+  }
 
-    .banner {
-        height: calc(100vh - var(--home-highlights-height) - var(--site-header-height));
-        @media (max-height: 639px) {
-            // If the screen is too short (e.g. smartphone in landscape mode)
-            // move the highlights sections (the four tiles) out of the visible
-            // viewport.
-            height: calc(100vh - var(--site-header-height));
+  .home-highlights {
+    &:before {
+      border-top: 1px solid hsl(210, 17%, 90%);
+    }
+    height: var(--home-highlights-height);
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
+    grid-template-rows: 1fr;
+    background-color: #fff;
+    z-index: 2;
+    @media (max-aspect-ratio: 1/1) {
+      grid-template-columns: repeat(2, 1fr);
+    }
+    > a {
+      color: hsl(0, 0, 20%);
+      font-size: 22px;
+      font-weight: 400;
+      text-align: center;
+      padding: 20px 0;
+      font-family: "Source Sans Pro", sans-serif;
+      text-decoration: none;
+      .icon {
+        background-image: url("/assets/sprite.png");
+        background-repeat: no-repeat;
+        width: 64px;
+        height: 64px;
+        margin: auto;
+        background-size: 256px 128px;
+        filter: grayscale(1);
+        transition: filter ease var(--anim-time);
+      }
+      &:nth-child(1) .icon {
+        background-position: 0 -64px;
+      }
+      &:nth-child(2) .icon {
+        background-position: -64px -64px;
+      }
+      &:nth-child(3) .icon {
+        background-position: -128px -64px;
+      }
+      &:nth-child(4) .icon {
+        background-position: -192px -64px;
+      }
+      &:hover {
+        background-color: hsl(210, 17%, 90%);
+        .icon {
+          filter: grayscale(0);
         }
-        min-height: 25vw;
-        display: grid;
+      }
+    }
+  }
+  .home-section {
+    min-height: calc(min(100vh - var(--site-header-height), 800px));
+    padding: 5% 20px;
+    display: grid;
+    grid-template-rows: 1fr;
+    grid-column-gap: 4vw;
+    > img {
+      grid-area: img;
+      max-width: 100%;
+      max-height: 55vh;
+      margin: auto;
+      margin-top: 40px;
+    }
+    h2,
+    > div {
+      grid-area: content;
+    }
+    h2 {
+      font-family: "Source Sans Pro", sans-serif;
+      font-weight: 600;
+      font-size: 2.5rem;
+      color: #333;
+      text-align: center;
+    }
+    &:nth-child(2n) {
+      grid-template-columns: 5fr 4fr;
+      grid-template-areas: "content img";
+      h2 {
+        padding: 0 0 0 50px;
+        text-align: left;
+      }
+    }
+    &:nth-child(2n + 1) {
+      grid-template-columns: 4fr 5fr;
+      grid-template-areas: "img content";
+      h2 {
+        padding: 0 50px 0 0;
+        text-align: left;
+      }
+    }
+    @media (max-aspect-ratio: 1/1) {
+      padding: 5vh 20px;
+      &:nth-child(n) {
+        grid-template-rows: auto auto;
         grid-template-columns: 1fr;
-        grid-template-rows: 1fr 1fr 5fr;
-        h1,
+        grid-template-areas: "img" "content";
+        grid-row-gap: 30px;
         h2 {
-            margin: auto;
-            font-family: 'Source Sans Pro', sans-serif;
-            text-align: center;
-            color: hsl(0, 0, 35%);
-            span {
-                white-space: nowrap;
-            }
+          padding: 0;
+          text-align: center;
         }
-        h1 {
-            font-size: 2.5rem;
-            font-size: calc(min(4rem, 8vw, 6vh));
-            font-weight: 400;
-            padding-top: calc(max(1rem, 2vh));
-        }
-        h2 {
-            font-size: 1.25rem;
-            font-size: calc(min(2rem, 6vw, 4vh));
-            font-weight: 200;
-            padding-top: 10px;
-        }
-        .home-img {
-            padding: 1rem 0;
-            overflow: hidden;
-            position: relative;
-            display: flex;
-            img {
-                max-height: 100%;
-                max-width: 100%;
-                margin: auto;
-                display: block;
-            }
-        }
+      }
+      > img {
+        padding: 0 10vw;
+      }
     }
-
-
-    .home-highlights {
-        &:before {
-            border-top: 1px solid hsl(210, 17%, 90%);
+    div {
+      grid-area: content;
+      .button {
+        display: inline-block;
+        background: #337ab7;
+        font-weight: 500;
+        color: #fff;
+        border-radius: 6px;
+        font-size: 18px;
+        padding: 10px 16px;
+        transition: background-color ease var(--anim-time);
+        text-decoration: none;
+        &:hover {
+          background: #286090;
         }
-        height: var(--home-highlights-height);
-        display: grid;
-        grid-template-columns: repeat(4, 1fr);
-        grid-template-rows: 1fr;
-        background-color: #fff;
-        z-index: 2;
-        @media (max-aspect-ratio: 1/1) {
-            grid-template-columns: repeat(2, 1fr);
-        }
-        >a {
-            color: hsl(0, 0, 20%);
-            font-size: 22px;
-            font-weight: 400;
-            text-align: center;
-            padding: 20px 0;
-            font-family: 'Source Sans Pro', sans-serif;
-            text-decoration: none;
-            .icon {
-                background-image: url('/assets/sprite.png');
-                background-repeat: no-repeat;
-                width: 64px;
-                height: 64px;
-                margin: auto;
-                background-size: 256px 128px;
-                filter: grayscale(1);
-                transition: filter ease var(--anim-time);
-            }
-            &:nth-child(1) .icon {
-                background-position: 0 -64px;
-            }
-            &:nth-child(2) .icon {
-                background-position: -64px -64px;
-            }
-            &:nth-child(3) .icon {
-                background-position: -128px -64px;
-            }
-            &:nth-child(4) .icon {
-                background-position: -192px -64px;
-            }
-            &:hover {
-                background-color: hsl(210, 17%, 90%);
-                .icon {
-                    filter: grayscale(0);
-                }
-            }
-        }
+      }
     }
-    .home-section {
-        min-height: calc(min(100vh - var(--site-header-height), 800px));
-        padding: 5% 20px;
-        display: grid;
-        grid-template-rows: 1fr;
-        grid-column-gap: 4vw;
-        >img {
-            grid-area: img;
-            max-width: 100%;
-            max-height: 55vh;
-            margin: auto;
-            margin-top: 40px;
-        }
-        h2,
-        >div {
-            grid-area: content;
-        }
-        h2 {
-            font-family: 'Source Sans Pro', sans-serif;
-            font-weight: 600;
-            font-size: 2.5rem;
-            color: #333;
-            text-align: center;
-        }
-        &:nth-child(2n) {
-            grid-template-columns: 5fr 4fr;
-            grid-template-areas: "content img";
-            h2 {
-                padding: 0 0 0 50px;
-                text-align: left;
-            }
-        }
-        &:nth-child(2n+1) {
-            grid-template-columns: 4fr 5fr;
-            grid-template-areas: "img content";
-            h2 {
-                padding: 0 50px 0 0;
-                text-align: left;
-            }
-        }
-        @media (max-aspect-ratio: 1/1) {
-            padding: 5vh 20px;
-            &:nth-child(n) {
-                grid-template-rows: auto auto;
-                grid-template-columns: 1fr;
-                grid-template-areas: "img" "content";
-                grid-row-gap: 30px;
-                h2 {
-                    padding: 0;
-                    text-align: center;
-                }
-            }
-            >img {
-                padding: 0 10vw;
-            }
-        }
-        div {
-            grid-area: content;
-            .button {
-                display: inline-block;
-                background: #337ab7;
-                font-weight: 500;
-                color: #fff;
-                border-radius: 6px;
-                font-size: 18px;
-                padding: 10px 16px;
-                transition: background-color ease var(--anim-time);
-                text-decoration: none;
-                &:hover {
-                    background: #286090;
-                }
-            }
-        }
-        .home-item {
-            display: grid;
-            grid-template-rows: auto auto;
-            grid-template-columns: 50px auto;
-            grid-template-areas: "img title" "img label";
-            grid-column-gap: 20px;
-            padding: 20px 30px;
-            margin: 10px 0;
-            // border: 1px solid #eee;
-            font-family: 'Source Sans Pro', sans-serif;
-            color: #111111;
-            transition: filter var(--anim-ease) var(--anim-time), background-color var(--anim-ease) var(--anim-time), transform var(--anim-ease) var(--anim-time), box-shadow linear var(--anim-time);
-            border-radius: 6px;
-            filter: opacity(0.6);
-            &:hover {
-                background-color: hsla(0, 0, 0, 0.02);
-                filter: opacity(1);
-                transform: scale(1.01);
-            }
-            >img,
-            >i {
-                grid-area: img;
-                margin: auto;
-                font-size: 50px;
-            }
-            >h3 {
-                grid-area: title;
-                font-size: 1.25rem;
-                line-height: 20px;
-                font-weight: 600;
-            }
-            >p {
-                grid-area: label;
-                font-size: 1rem;
-                font-weight: 400;
-                margin: 1em 0;
-            }
-        }
+    .home-item {
+      display: grid;
+      grid-template-rows: auto auto;
+      grid-template-columns: 50px auto;
+      grid-template-areas: "img title" "img label";
+      grid-column-gap: 20px;
+      padding: 20px 30px;
+      margin: 10px 0;
+      // border: 1px solid #eee;
+      font-family: "Source Sans Pro", sans-serif;
+      color: #111111;
+      transition: filter var(--anim-ease) var(--anim-time),
+        background-color var(--anim-ease) var(--anim-time),
+        transform var(--anim-ease) var(--anim-time),
+        box-shadow linear var(--anim-time);
+      border-radius: 6px;
+      filter: opacity(0.6);
+      &:hover {
+        background-color: hsla(0, 0, 0, 0.02);
+        filter: opacity(1);
+        transform: scale(1.01);
+      }
+      > img,
+      > i {
+        grid-area: img;
+        margin: auto;
+        font-size: 50px;
+      }
+      > h3 {
+        grid-area: title;
+        font-size: 1.25rem;
+        line-height: 20px;
+        font-weight: 600;
+      }
+      > p {
+        grid-area: label;
+        font-size: 1rem;
+        font-weight: 400;
+        margin: 1em 0;
+      }
     }
+  }
 }
 
 // -----------------------------------------------------------------------------
 // Docs
 // -----------------------------------------------------------------------------
 .docs {
-    min-height: 100vh;
-    display: grid;
-    --nav-width: 240px;
-    --toc-width: 180px;
+  min-height: 100vh;
+  display: grid;
+  --nav-width: 240px;
+  --toc-width: 180px;
 
-    // 1665px is the clientWidth on a macbook pro. Adjust the layout so that
-    // the max-width of the central .doc fits precisely when the browser is
-    // full-screen on a macbook.
-    --max-doc-width: calc(1665px - var(--toc-width) - var(--nav-width));
+  // 1665px is the clientWidth on a macbook pro. Adjust the layout so that
+  // the max-width of the central .doc fits precisely when the browser is
+  // full-screen on a macbook.
+  --max-doc-width: calc(1665px - var(--toc-width) - var(--nav-width));
 
-    grid-template-columns: var(--nav-width) minmax(auto, var(--max-doc-width)) var(--toc-width);
-    grid-template-rows: 1fr max-content;
-    grid-template-areas: "nav doc toc" "nav footer toc";
+  grid-template-columns: var(--nav-width) minmax(auto, var(--max-doc-width)) var(
+      --toc-width
+    );
+  grid-template-rows: 1fr max-content;
+  grid-template-areas: "nav doc toc" "nav footer toc";
 
-    background-color: hsl(210, 10%, 97%);
-    .nav {
-        grid-area: nav;
-        border-right: 1px solid hsl(210, 30%, 90%);
-        background-color: #fefefe;
-        padding: 20px 0;
-        padding-right: 16px;
+  background-color: hsl(210, 10%, 97%);
+  .nav {
+    grid-area: nav;
+    border-right: 1px solid hsl(210, 30%, 90%);
+    background-color: #fefefe;
+    padding: 20px 0;
+    padding-right: 16px;
 
-        position: sticky;
-        top: var(--site-header-height);
-        height: calc(100vh -  var(--site-header-height));
-        overflow-y: auto;
-        @include minimal-scrollbar;
+    position: sticky;
+    top: var(--site-header-height);
+    height: calc(100vh - var(--site-header-height));
+    overflow-y: auto;
+    @include minimal-scrollbar;
 
-        a {
-            color: inherit;
-            text-decoration: none;
-            line-height: 24px;
-            display: flex;
-            transition: background-color var(--anim-ease) var(--anim-time),
-                        visibility linear var(--anim-time);
-            border-radius: 0 10px 10px 0;
-            -webkit-tap-highlight-color: transparent;
-            &[href] {
-                &:hover {
-                    color: #000;
-                    background-color: #f1f3f4;
-                }
-                &.selected {
-                    background-color: #ecba2a;
-                }
-            }
+    a {
+      color: inherit;
+      text-decoration: none;
+      line-height: 24px;
+      display: flex;
+      transition: background-color var(--anim-ease) var(--anim-time),
+        visibility linear var(--anim-time);
+      border-radius: 0 10px 10px 0;
+      -webkit-tap-highlight-color: transparent;
+      &[href] {
+        &:hover {
+          color: #000;
+          background-color: #f1f3f4;
         }
-
-        ul {
-            list-style: none;
-            margin: 0;
-            padding: 0;
-            overflow: hidden;
-            li {
-                font-size: 1rem;
-                font-weight: 400;
-                font-family: 'Source Sans Pro', sans-serif;
-                color: #4a4a4a;
-                max-width: 100%;
-                margin: 3px 0;
-            }
-            p { margin: 0; }
+        &.selected {
+          background-color: #ecba2a;
         }
-
-        // Applies only to outer-level submenus.
-        >ul {
-            position: static; // Otherwise gets v-centered in the middle.
-            > li {
-                padding-bottom: 10px;
-                margin-bottom: 10px;
-                font-weight: 600;
-                color: #111;
-
-                &:not(:last-child) {
-                    border-bottom: 1px solid #eee;
-                }
-
-                &.compressible {
-                    > p > a::after {
-                        content: 'keyboard_arrow_up';
-                        font-family: 'Material Icons Round';
-                        font-size: 24px;
-                        width: 24px;
-                        transition: transform var(--anim-ease) var(--anim-time);
-                        margin: 0 0 0 auto;
-                        font-weight: 200;
-                        color: #666;
-                    }
-                    > ul {
-                        transition: max-height var(--anim-ease) var(--anim-time),
-                                    opacity var(--anim-ease) var(--anim-time);
-                        opacity: 1;
-                    }
-                    &.compressed {
-                        // The JS will compute and set the maxHeight on each
-                        // element depending on the size of their children.
-                        // !important is needed to override the element-inline
-                        // max-height property set by JS, which is prioritary.
-                        > ul {
-                            max-height: 0 !important;
-                            visibility: hidden;
-                            opacity: 0;
-                        }
-                        > p > a::after {
-                            transform: scaleY(-1);
-                        }
-                    }
-                }  // .compressible
-
-            }
-        }
-
-        li a {
-            padding-left: 16px;
-        }
-        li li a {
-            padding-left: 30px;
-        }
-        li li li a {
-            padding-left: 44px;
-        }
-        .expanded a::after {
-            transform: rotate(180deg);
-        }
+      }
     }
-    .doc {
-        grid-area: doc;
-        background-color: #fff;
-        margin: 20px;
-        padding: 30px 40px;
-        font-family: Roboto, sans-serif;
+
+    ul {
+      list-style: none;
+      margin: 0;
+      padding: 0;
+      overflow: hidden;
+      li {
         font-size: 1rem;
         font-weight: 400;
-        line-height: 24px;
-        -webkit-font-smoothing: antialiased;
+        font-family: "Source Sans Pro", sans-serif;
         color: #4a4a4a;
-        position: relative;
-        box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .1), 0 1px 3px 1px rgba(60, 64, 67, .15);
-        overflow: hidden;
+        max-width: 100%;
+        margin: 3px 0;
+      }
+      p {
+        margin: 0;
+      }
+    }
 
-        a {
-            text-decoration: none;
-            &:link { color: #007b83; }
-            &:visited { color: #8e3317; }
-            &:hover { color: #009da8; }
-            &[href^="http"] {
-                // External link.
-                &:after {
-                    content: 'open_in_new';
-                    font-family: 'Material Icons Round';
-                    color: #666;
-                    text-decoration: none;
-                    margin-left: 2px;
-                    margin-right: 4px;
-                    vertical-align: bottom;
-                }
-            }
+    // Applies only to outer-level submenus.
+    > ul {
+      position: static; // Otherwise gets v-centered in the middle.
+      > li {
+        padding-bottom: 10px;
+        margin-bottom: 10px;
+        font-weight: 600;
+        color: #111;
+
+        &:not(:last-child) {
+          border-bottom: 1px solid #eee;
         }
 
-        h1,
-        h2,
-        h3 {
-            margin: 10px 0;
-            padding: 0;
-            padding-top: 30px;
-        }
-        h1 {
-            font-size: 2.25rem;
-            line-height: 2.25rem;
-            margin: 0;
-            padding: 0;
-            margin-bottom: 1.5rem;
-            font-family: 'Source Sans Pro', sans-serif;
-        }
-        h2 {
-            font-size: 1.5rem;
-            border-bottom: 1px solid #e8eaed;
-            padding-bottom: 6px;
-        }
-        h3 {
-            font-size: 1.25rem;
-        }
-        * {
-            max-width: 100%;
-        }
-
-        img[alt$="screenshot"] {
-            box-shadow: 0 0 10px 2px #eee;
-        }
-
-        code:not(.code-block) {
-            background: hsla(210, 17%, 90%, 0.2);
-            border: 1px solid #E8EAED;
-            border-radius: 6px;
-            padding: 1px 4px;
-        }
-        .code-block {
-            overflow-x: auto;
-            white-space: pre;
-            border-radius: 6px;
-            box-shadow: 1px 1px 6px #999;
-            border-top: 5px solid #8BC34A;
-        }
-        // Hide mermaid graphs until they are rendered, this is to avoid showing
-        // the mermaid source while the renderer generates the SVG.
-        .mermaid {
-            transition: opacity var(--anim-ease) var(--anim-time);
-            &:not(.rendered) {
-                opacity: 0;
-            }
-        }
-        .anchor {
-            margin-left: -29px;
-            padding-right: 5px;
-            text-decoration: none;
-            position: absolute;
-            padding-top: var(--site-header-height);
-            margin-top: calc(-1 * var(--site-header-height));
-            outline: none;
-            opacity: 0;
-            transition: opacity var(--anim-ease) var(--anim-time);
-            &::before {
-                content: 'insert_link';
-                font-family: 'Material Icons Round';
-                color: #333;
-                font-size: 24px;
-            }
-        }
-        *:hover .anchor {
+        &.compressible {
+          > p > a::after {
+            content: "keyboard_arrow_up";
+            font-family: "Material Icons Round";
+            font-size: 24px;
+            width: 24px;
+            transition: transform var(--anim-ease) var(--anim-time);
+            margin: 0 0 0 auto;
+            font-weight: 200;
+            color: #666;
+          }
+          > ul {
+            transition: max-height var(--anim-ease) var(--anim-time),
+              opacity var(--anim-ease) var(--anim-time);
             opacity: 1;
+          }
+          &.compressed {
+            // The JS will compute and set the maxHeight on each
+            // element depending on the size of their children.
+            // !important is needed to override the element-inline
+            // max-height property set by JS, which is prioritary.
+            > ul {
+              max-height: 0 !important;
+              visibility: hidden;
+              opacity: 0;
+            }
+            > p > a::after {
+              transform: scaleY(-1);
+            }
+          }
+        } // .compressible
+      }
+    }
+
+    li a {
+      padding-left: 16px;
+    }
+    li li a {
+      padding-left: 30px;
+    }
+    li li li a {
+      padding-left: 44px;
+    }
+    .expanded a::after {
+      transform: rotate(180deg);
+    }
+  }
+  .doc {
+    grid-area: doc;
+    background-color: #fff;
+    margin: 20px;
+    padding: 30px 40px;
+    font-family: Roboto, sans-serif;
+    font-size: 1rem;
+    font-weight: 400;
+    line-height: 24px;
+    -webkit-font-smoothing: antialiased;
+    color: #4a4a4a;
+    position: relative;
+    box-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.1),
+      0 1px 3px 1px rgba(60, 64, 67, 0.15);
+    overflow: hidden;
+
+    a {
+      text-decoration: none;
+      &:link {
+        color: #007b83;
+      }
+      &:visited {
+        color: #8e3317;
+      }
+      &:hover {
+        color: #009da8;
+      }
+      &[href^="http"] {
+        // External link.
+        &:after {
+          content: "open_in_new";
+          font-family: "Material Icons Round";
+          color: #666;
+          text-decoration: none;
+          margin-left: 2px;
+          margin-right: 4px;
+          vertical-align: bottom;
         }
+      }
+    }
+
+    h1,
+    h2,
+    h3 {
+      margin: 10px 0;
+      padding: 0;
+      padding-top: 30px;
+    }
+    h1 {
+      font-size: 2.25rem;
+      line-height: 2.25rem;
+      margin: 0;
+      padding: 0;
+      margin-bottom: 1.5rem;
+      font-family: "Source Sans Pro", sans-serif;
+    }
+    h2 {
+      font-size: 1.5rem;
+      border-bottom: 1px solid #e8eaed;
+      padding-bottom: 6px;
+    }
+    h3 {
+      font-size: 1.25rem;
+    }
+    * {
+      max-width: 100%;
+    }
+
+    img[alt$="screenshot"] {
+      box-shadow: 0 0 10px 2px #eee;
+    }
+
+    code:not(.code-block) {
+      background: hsla(210, 17%, 90%, 0.2);
+      border: 1px solid #e8eaed;
+      border-radius: 6px;
+      padding: 1px 4px;
+    }
+    .code-block {
+      overflow-x: auto;
+      white-space: pre;
+      border-radius: 6px;
+      box-shadow: 1px 1px 6px #999;
+      border-top: 5px solid #8bc34a;
+    }
+    // Hide mermaid graphs until they are rendered, this is to avoid showing
+    // the mermaid source while the renderer generates the SVG.
+    .mermaid {
+      transition: opacity var(--anim-ease) var(--anim-time);
+      &:not(.rendered) {
+        opacity: 0;
+      }
+    }
+    .anchor {
+      margin-left: -29px;
+      padding-right: 5px;
+      text-decoration: none;
+      position: absolute;
+      padding-top: var(--site-header-height);
+      margin-top: calc(-1 * var(--site-header-height));
+      outline: none;
+      opacity: 0;
+      transition: opacity var(--anim-ease) var(--anim-time);
+      &::before {
+        content: "insert_link";
+        font-family: "Material Icons Round";
+        color: #333;
+        font-size: 24px;
+      }
+    }
+    *:hover .anchor {
+      opacity: 1;
+    }
+    code {
+      font-family: "Roboto Mono", monospace;
+      font-size: 14px;
+    }
+    table {
+      width: 100%;
+      font-size: 14px;
+      border-spacing: 0;
+      border-collapse: collapse;
+      th,
+      td {
+        padding: 8px;
+        border: 0 solid #dadce0;
+        border-top-width: 1px;
+        border-bottom-width: 1px;
+      }
+      tr {
+        height: 20px;
+      }
+      tr:target {
+        background-color: #ecba2a;
+      }
+      thead {
+        text-align: left;
+        background-color: #e8eaed;
+        color: #202124;
+      }
+    }
+
+    &[data-md-file^="/docs/reference/"] {
+      h1,
+      h2,
+      h3 {
         code {
-            font-family: 'Roboto Mono', monospace;
-            font-size: 14px;
+          margin-left: 20px;
+          color: #666;
         }
-        table {
-            width: 100%;
-            font-size: 14px;
-            border-spacing: 0;
-            border-collapse: collapse;
-            th, td {
-                padding: 8px;
-                border: 0 solid #dadce0;
-                border-top-width: 1px;
-                border-bottom-width: 1px;
-
-            }
-            tr {
-                height: 20px;
-            }
-            tr:target {
-                background-color: #ecba2a;
-            }
-            thead {
-                text-align: left;
-                background-color: #e8eaed;
-                color: #202124;
-            }
+      }
+      table {
+        width: 100%;
+        font-size: 14px;
+        border-spacing: 0;
+        border-collapse: collapse;
+        th,
+        td {
+          padding: 8px;
+          border: 0 solid #dadce0;
+          border-top-width: 1px;
+          border-bottom-width: 1px;
         }
+        tr {
+          height: 20px;
+        }
+        thead {
+          text-align: left;
+          background-color: #e8eaed;
+          color: #202124;
+        }
+        td {
+          &:first-child {
+            background: #f7f7f7;
+          }
 
-        &[data-md-file^="/docs/reference/"] {
-            h1, h2, h3 {
-                code {
-                    margin-left: 20px;
-                    color: #666;
-                }
-            }
-            table {
-                width: 100%;
-                font-size: 14px;
-                border-spacing: 0;
-                border-collapse: collapse;
-                th, td {
-                    padding: 8px;
-                    border: 0 solid #dadce0;
-                    border-top-width: 1px;
-                    border-bottom-width: 1px;
-
-                }
-                tr {
-                    height: 20px;
-                }
-                thead {
-                    text-align: left;
-                    background-color: #e8eaed;
-                    color: #202124;
-                }
-                td {
-                    &:first-child { background: #f7f7f7; }
-
-                    /* Not really 100% but makes sure that the description
+          /* Not really 100% but makes sure that the description
                      * column takes most of the width */
-                    &:last-child { width: 80%; }
-                }
-            }
+          &:last-child {
+            width: 80%;
+          }
         }
-
-        .callout {
-            padding: .5rem .5rem .5rem 2rem;
-            border: none;
-            border-radius: 2px;
-            margin-left: auto;
-            margin-right: auto;
-            width: 90%;
-            border-left: 3px solid transparent;
-            box-shadow: 0 0.2rem 0.5rem rgba(0,0,0,.05), 0 0 0.05rem rgba(0,0,0,.1);
-
-            &:before {
-                font-family: 'Material Icons Round';
-                position: absolute;
-                font-size: 1.5rem;
-                margin-left: -1.75rem;
-                margin-top: -2px;
-            }
-
-            &.note {
-                background-color: #E8F0FE;
-                border-color: #1967D2;
-                color: #1967D2;
-                &:before { content: 'bookmark'; }
-            }
-
-            &.summary {
-                background-color: #E4F7FB;
-                border-color:  #129EAF;
-                color: #129EAF;
-                &:before { content: 'sms'; }
-            }
-
-            &.tip {
-                background-color: #E6F4EA;
-                border-color: #188038;
-                color: #188038;
-                &:before { content: 'star'; }
-            }
-
-            &.todo {
-                background-color: #F1F3F4;
-                border-color: #5F6368;
-                color: #5F6368;
-                &:before { content: 'error'; }
-            }
-
-            &.warning {
-                background-color: #FCE8E6;
-                border-color: #C5221F;
-                color: #C5221F;
-                &:before { content: 'warning'; }
-            }
-        }
+      }
     }
-    .toc {
-        grid-area: toc;
-        padding: 20px 16px 20px 0;
 
-        position: sticky;
-        top: var(--site-header-height);
-        height: calc(100vh - var(--site-header-height));
-        overflow-y: auto;
-        @include minimal-scrollbar;
+    .callout {
+      padding: 0.5rem 0.5rem 0.5rem 2rem;
+      border: none;
+      border-radius: 2px;
+      margin-left: auto;
+      margin-right: auto;
+      width: 90%;
+      border-left: 3px solid transparent;
+      box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05),
+        0 0 0.05rem rgba(0, 0, 0, 0.1);
 
-        font-family: 'Source Sans Pro', sans-serif;
-        word-break: break-word;
-        a {
-            text-decoration: none;
+      &:before {
+        font-family: "Material Icons Round";
+        position: absolute;
+        font-size: 1.5rem;
+        margin-left: -1.75rem;
+        margin-top: -2px;
+      }
+
+      &.note {
+        background-color: #e8f0fe;
+        border-color: #1967d2;
+        color: #1967d2;
+        &:before {
+          content: "bookmark";
         }
-        a,
-        a:visited {
-            color: #333;
+      }
+
+      &.summary {
+        background-color: #e4f7fb;
+        border-color: #129eaf;
+        color: #129eaf;
+        &:before {
+          content: "sms";
         }
-        a.highlighted {
-            font-weight: 500;
-            color: hsl(45, 100%, 40%);
+      }
+
+      &.tip {
+        background-color: #e6f4ea;
+        border-color: #188038;
+        color: #188038;
+        &:before {
+          content: "star";
         }
-        font-size: 0.875rem;
-        ul {
-            list-style: none;
-            margin: 0;
-            padding: 0;
-            li {
-                margin: 5px 0;
-                /* This make it so that a single word gets elided but if there
+      }
+
+      &.todo {
+        background-color: #f1f3f4;
+        border-color: #5f6368;
+        color: #5f6368;
+        &:before {
+          content: "error";
+        }
+      }
+
+      &.warning {
+        background-color: #fce8e6;
+        border-color: #c5221f;
+        color: #c5221f;
+        &:before {
+          content: "warning";
+        }
+      }
+    }
+  }
+  .toc {
+    grid-area: toc;
+    padding: 20px 16px 20px 0;
+
+    position: sticky;
+    top: var(--site-header-height);
+    height: calc(100vh - var(--site-header-height));
+    overflow-y: auto;
+    @include minimal-scrollbar;
+
+    font-family: "Source Sans Pro", sans-serif;
+    word-break: break-word;
+    a {
+      text-decoration: none;
+    }
+    a,
+    a:visited {
+      color: #333;
+    }
+    a.highlighted {
+      font-weight: 500;
+      color: hsl(45, 100%, 40%);
+    }
+    font-size: 0.875rem;
+    ul {
+      list-style: none;
+      margin: 0;
+      padding: 0;
+      li {
+        margin: 5px 0;
+        /* This make it so that a single word gets elided but if there
                  * are multiple words they span across lines.  */
-                overflow: hidden;
-                text-overflow: ellipsis;
-                white-space: break-spaces;
-                word-break: normal;
-            }
-        }
-        >ul {
-            border-left: 4px solid #ecba2a;
-            padding-left: 10px;
-            position: static;  // Otherwise gets v-centered in the middle.
-            top: calc(var(--site-header-height) + 25px);
-        }
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: break-spaces;
+        word-break: normal;
+      }
     }
+    > ul {
+      border-left: 4px solid #ecba2a;
+      padding-left: 10px;
+      position: static; // Otherwise gets v-centered in the middle.
+      top: calc(var(--site-header-height) + 25px);
+    }
+  }
 
-    @media #{$wide} {
-        grid-template-columns: var(--nav-width) auto 0;
-        .toc { display: none; }
+  @media #{$wide} {
+    grid-template-columns: var(--nav-width) auto 0;
+    .toc {
+      display: none;
     }
-    @media #{$mobile} {
+  }
+  @media #{$mobile} {
+    display: block;
+    .doc {
+      margin: 0;
+      padding: 20px;
+    }
+    .nav {
+      // JS will persistently toggle to .after_first_click. This is to
+      // avoid spurious transitions on page load.
+      display: none;
+
+      --nav-width-mobile: calc(min(90vw, 360px));
+      width: var(--nav-width-mobile);
+      position: fixed;
+      z-index: 2;
+      height: 100vh;
+      overflow-y: auto;
+      top: var(--site-header-height);
+      transition: transform var(--anim-ease) var(--anim-time),
+        box-shadow var(--anim-ease) var(--anim-time),
+        visibility ease var(--anim-time);
+      transform: translateX(calc(-1 * var(--nav-width-mobile)));
+      visibility: hidden;
+      > ul {
+        position: static;
+        top: 0;
+      }
+      &.after_first_click {
         display: block;
-        .doc {
-            margin: 0;
-            padding: 20px;
-        }
-        .nav {
-            // JS will persistently toggle to .after_first_click. This is to
-            // avoid spurious transitions on page load.
-            display: none;
-
-            --nav-width-mobile: calc(min(90vw, 360px));
-            width: var(--nav-width-mobile);
-            position: fixed;
-            z-index: 2;
-            height: 100vh;
-            overflow-y: auto;
-            top: var(--site-header-height);
-            transition: transform var(--anim-ease) var(--anim-time),
-                        box-shadow var(--anim-ease) var(--anim-time),
-                        visibility ease var(--anim-time);
-            transform: translateX(calc(-1 * var(--nav-width-mobile)));
-            visibility: hidden;
-            >ul {
-                position: static;
-                top: 0;
-            }
-            &.after_first_click {
-                display: block;
-            }
-            &.expanded {
-                visibility: visible;
-                transform: translateX(0);
-                box-shadow: 0 1px 0 100vw rgba(0,0,0,0.4);
-            }
-        }
+      }
+      &.expanded {
+        visibility: visible;
+        transform: translateX(0);
+        box-shadow: 0 1px 0 100vw rgba(0, 0, 0, 0.4);
+      }
     }
+  }
 }
diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index 40259f2..ba88077 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -2726,276 +2726,13 @@
   ATOM_NOTIFICATION_MEMORY_USE = 10174;
   ATOM_HDR_CAPABILITIES = 10175;
   ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT = 10176;
-  ATOM_WS_WEAR_TIME_SESSION = 610;
-  ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
-  ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
-  ATOM_WS_CALL_DURATION_REPORTED = 628;
-  ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
-  ATOM_WS_CALL_INTERACTION_REPORTED = 630;
-  ATOM_WS_ON_BODY_STATE_CHANGED = 787;
-  ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
-  ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
-  ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
-  ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
-  ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
-  ATOM_SETTINGS_SPA_REPORTED = 622;
-  ATOM_PDF_LOAD_REPORTED = 859;
-  ATOM_PDF_API_USAGE_REPORTED = 860;
-  ATOM_PDF_SEARCH_REPORTED = 861;
-  ATOM_HDMI_EARC_STATUS_REPORTED = 701;
-  ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
-  ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
-  ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
-  ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
-  ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
-  ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
-  ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
-  ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
-  ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
-  ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
-  ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
-  ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
-  ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
-  ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
-  ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
-  ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
-  ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
-  ATOM_WEAR_POWER_MENU_OPENED = 731;
-  ATOM_WEAR_ASSISTANT_OPENED = 755;
-  ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
-  ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
-  ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
-  ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
-  ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
-  ATOM_AUTOFILL_SESSION_COMMITTED = 607;
-  ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
-  ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
-  ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
-  ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
-  ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
-  ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
-  ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
-  ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
-  ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
-  ATOM_APF_SESSION_INFO_REPORTED = 777;
-  ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
-  ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
-  ATOM_VPN_CONNECTION_REPORTED = 851;
-  ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
-  ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
-  ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
-  ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
-  ATOM_ART_DATUM_REPORTED = 332;
-  ATOM_ART_DEVICE_DATUM_REPORTED = 550;
-  ATOM_ART_DATUM_DELTA_REPORTED = 565;
-  ATOM_ART_DEX2OAT_REPORTED = 929;
-  ATOM_ART_DEVICE_STATUS = 10205;
-  ATOM_ODREFRESH_REPORTED = 366;
-  ATOM_ODSIGN_REPORTED = 548;
-  ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
-  ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
-  ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
-  ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
-  ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
-  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
-  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
-  ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
-  ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
-  ATOM_EMERGENCY_STATE_CHANGED = 633;
-  ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
-  ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
-  ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
-  ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
-  ATOM_HEALTH_CONNECT_API_CALLED = 616;
-  ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
-  ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
-  ATOM_HEALTH_CONNECT_API_INVOKED = 643;
-  ATOM_EXERCISE_ROUTE_API_CALLED = 654;
-  ATOM_SELINUX_AUDIT_LOG = 799;
-  ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
-  ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
-  ATOM_EMERGENCY_NUMBERS_INFO = 10180;
-  ATOM_DATA_NETWORK_VALIDATION = 10207;
-  ATOM_DATA_RAT_STATE_CHANGED = 854;
-  ATOM_CONNECTED_CHANNEL_CHANGED = 882;
-  ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
-  ATOM_QNS_IMS_CALL_DROP_STATS = 635;
-  ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
-  ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
-  ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
-  ATOM_QNS_HANDOVER_PINGPONG = 10179;
-  ATOM_SATELLITE_CONTROLLER = 10182;
-  ATOM_SATELLITE_SESSION = 10183;
-  ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
-  ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
-  ATOM_SATELLITE_PROVISION = 10186;
-  ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
-  ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
-  ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
-  ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
-  ATOM_SATELLITE_ENTITLEMENT = 10214;
-  ATOM_SATELLITE_CONFIG_UPDATER = 10215;
-  ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
-  ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
-  ATOM_KEYBOARD_CONFIGURED = 682;
-  ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
-  ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
-  ATOM_TOUCHPAD_USAGE = 10191;
-  ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
-  ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
-  ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
-  ATOM_CRONET_ENGINE_CREATED = 703;
-  ATOM_CRONET_TRAFFIC_REPORTED = 704;
-  ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
-  ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
-  ATOM_CRONET_INITIALIZED = 764;
-  ATOM_WEAR_MODE_STATE_CHANGED = 715;
-  ATOM_RENDERER_INITIALIZED = 736;
-  ATOM_SCHEMA_VERSION_RECEIVED = 737;
-  ATOM_LAYOUT_INSPECTED = 741;
-  ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
-  ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
-  ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
-  ATOM_TILE_REQUESTED = 745;
-  ATOM_STATE_RESPONSE_RECEIVED = 746;
-  ATOM_TILE_RESPONSE_RECEIVED = 747;
-  ATOM_INFLATION_FINISHED = 748;
-  ATOM_INFLATION_FAILED = 749;
-  ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
-  ATOM_DRAWABLE_RENDERED = 751;
-  ATOM_MEDIA_ACTION_REPORTED = 608;
-  ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
-  ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
-  ATOM_MEDIATOR_UPDATED = 721;
-  ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
-  ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
   ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED = 820;
-  ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
-  ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
-  ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
-  ATOM_RKPD_POOL_STATS = 664;
-  ATOM_RKPD_CLIENT_OPERATION = 665;
-  ATOM_CPU_POLICY = 10199;
-  ATOM_ATOM_9999 = 9999;
-  ATOM_ATOM_99999 = 99999;
-  ATOM_SCREEN_OFF_REPORTED = 776;
-  ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
-  ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
-  ATOM_SCREEN_DIM_REPORTED = 867;
-  ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
-  ATOM_BAL_ALLOWED = 632;
-  ATOM_IN_TASK_ACTIVITY_STARTED = 685;
-  ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
-  ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
-  ATOM_USER_RISK_EVENT_REPORTED = 725;
-  ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
-  ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
-  ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
-  ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
-  ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
-  ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
-  ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
-  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
-  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
-  ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
-  ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
-  ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
-  ATOM_DREAM_SETTING_CHANGED = 705;
-  ATOM_DREAM_SETTING_SNAPSHOT = 10192;
-  ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
-  ATOM_WIFI_AWARE_NDP_REPORTED = 638;
-  ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
-  ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
-  ATOM_SOFT_AP_STARTED = 680;
-  ATOM_SOFT_AP_STOPPED = 681;
-  ATOM_WIFI_LOCK_RELEASED = 687;
-  ATOM_WIFI_LOCK_DEACTIVATED = 688;
-  ATOM_WIFI_CONFIG_SAVED = 689;
-  ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED = 690;
-  ATOM_WIFI_AWARE_HAL_API_CALLED = 691;
-  ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED = 692;
-  ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
-  ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
-  ATOM_WIFI_STATE_CHANGED = 700;
-  ATOM_PNO_SCAN_STARTED = 719;
-  ATOM_PNO_SCAN_STOPPED = 720;
-  ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
-  ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
-  ATOM_SOFT_AP_STATE_CHANGED = 805;
-  ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
-  ATOM_WIFI_AWARE_CAPABILITIES = 10190;
-  ATOM_WIFI_MODULE_INFO = 10193;
-  ATOM_WIFI_SETTING_INFO = 10194;
-  ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
-  ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
-  ATOM_MTE_STATE = 10181;
-  ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
-  ATOM_SANDBOX_API_CALLED = 488;
-  ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
-  ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
-  ATOM_SANDBOX_SDK_STORAGE = 10159;
-  ATOM_EXPRESS_EVENT_REPORTED = 528;
-  ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
-  ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
-  ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
-  ATOM_IKE_SESSION_TERMINATED = 678;
-  ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
-  ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
-  ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
-  ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
-  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
-  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
-  ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
-  ATOM_DEVICE_POLICY_STATE = 10217;
-  ATOM_DESKTOP_MODE_UI_CHANGED = 818;
-  ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
-  ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
-  ATOM_MEDIA_CODEC_STARTED = 641;
-  ATOM_MEDIA_CODEC_STOPPED = 642;
-  ATOM_MEDIA_CODEC_RENDERED = 684;
-  ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
-  ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
-  ATOM_PLUGIN_INITIALIZED = 655;
-  ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
-  ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
-  ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
   ATOM_THERMAL_STATUS_CALLED = 772;
   ATOM_THERMAL_HEADROOM_CALLED = 773;
   ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED = 774;
   ATOM_ADPF_HINT_SESSION_TID_CLEANUP = 839;
   ATOM_THERMAL_HEADROOM_THRESHOLDS = 10201;
   ATOM_ADPF_SESSION_SNAPSHOT = 10218;
-  ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
-  ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
-  ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
-  ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
-  ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
-  ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
-  ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
-  ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
-  ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
-  ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
-  ATOM_LE_RADIO_SCAN_STOPPED = 871;
-  ATOM_LE_SCAN_RESULT_RECEIVED = 872;
-  ATOM_LE_SCAN_ABUSED = 873;
-  ATOM_LE_ADV_STATE_CHANGED = 874;
-  ATOM_LE_ADV_ERROR_REPORTED = 875;
-  ATOM_A2DP_SESSION_REPORTED = 904;
-  ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
-  ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
-  ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
-  ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
-  ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
-  ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
-  ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
-  ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
-  ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
-  ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
-  ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
-  ATOM_EMERGENCY_NUMBER_DIALED = 637;
   ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
   ATOM_AD_SERVICES_API_CALLED = 435;
   ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
@@ -3063,27 +2800,68 @@
   ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED = 876;
   ATOM_REPORT_IMPRESSION_API_CALLED = 877;
   ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS = 885;
-  ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
-  ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
-  ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
-  ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
-  ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
-  ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
-  ATOM_NFC_FIELD_CHANGED = 856;
-  ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
-  ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
-  ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
-  ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
-  ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
-  ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
-  ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
-  ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
-  ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
-  ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
-  ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+  ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
+  ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
+  ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
+  ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
+  ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
   ATOM_APEX_INSTALLATION_REQUESTED = 732;
   ATOM_APEX_INSTALLATION_STAGED = 733;
   ATOM_APEX_INSTALLATION_ENDED = 734;
+  ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
+  ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
+  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
+  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
+  ATOM_ART_DATUM_REPORTED = 332;
+  ATOM_ART_DEVICE_DATUM_REPORTED = 550;
+  ATOM_ART_DATUM_DELTA_REPORTED = 565;
+  ATOM_ART_DEX2OAT_REPORTED = 929;
+  ATOM_ART_DEVICE_STATUS = 10205;
+  ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
+  ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
+  ATOM_ODREFRESH_REPORTED = 366;
+  ATOM_ODSIGN_REPORTED = 548;
+  ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
+  ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
+  ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
+  ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
+  ATOM_AUTOFILL_SESSION_COMMITTED = 607;
+  ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+  ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
+  ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
+  ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
+  ATOM_PLUGIN_INITIALIZED = 655;
+  ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
+  ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
+  ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
+  ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
+  ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
+  ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
+  ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
+  ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
+  ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
+  ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
+  ATOM_LE_RADIO_SCAN_STOPPED = 871;
+  ATOM_LE_SCAN_RESULT_RECEIVED = 872;
+  ATOM_LE_SCAN_ABUSED = 873;
+  ATOM_LE_ADV_STATE_CHANGED = 874;
+  ATOM_LE_ADV_ERROR_REPORTED = 875;
+  ATOM_A2DP_SESSION_REPORTED = 904;
+  ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
+  ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
+  ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
+  ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE = 982;
+  ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
+  ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
+  ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
+  ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
+  ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
+  ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED = 979;
+  ATOM_APF_SESSION_INFO_REPORTED = 777;
+  ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
+  ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
+  ATOM_VPN_CONNECTION_REPORTED = 851;
+  ATOM_CPU_POLICY = 10199;
   ATOM_CREDENTIAL_MANAGER_API_CALLED = 585;
   ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED = 651;
   ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED = 652;
@@ -3093,8 +2871,232 @@
   ATOM_CREDENTIAL_MANAGER_GET_REPORTED = 669;
   ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED = 670;
   ATOM_CREDENTIAL_MANAGER_APIV2_CALLED = 671;
-  ATOM_UWB_ACTIVITY_INFO = 10188;
+  ATOM_CRONET_ENGINE_CREATED = 703;
+  ATOM_CRONET_TRAFFIC_REPORTED = 704;
+  ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
+  ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
+  ATOM_CRONET_INITIALIZED = 764;
+  ATOM_DESKTOP_MODE_UI_CHANGED = 818;
+  ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
+  ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
+  ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
+  ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
+  ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
+  ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
+  ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
+  ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
+  ATOM_DEVICE_POLICY_STATE = 10217;
+  ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
+  ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
   ATOM_DND_STATE_CHANGED = 657;
+  ATOM_DREAM_SETTING_CHANGED = 705;
+  ATOM_DREAM_SETTING_SNAPSHOT = 10192;
+  ATOM_EXPRESS_EVENT_REPORTED = 528;
+  ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
+  ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
+  ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
+  ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
+  ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
+  ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
+  ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
+  ATOM_BAL_ALLOWED = 632;
+  ATOM_IN_TASK_ACTIVITY_STARTED = 685;
+  ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
+  ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
+  ATOM_USER_RISK_EVENT_REPORTED = 725;
+  ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
+  ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
+  ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
+  ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
+  ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
+  ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
+  ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
+  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
+  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
+  ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
+  ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
+  ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
+  ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
+  ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
+  ATOM_HDMI_EARC_STATUS_REPORTED = 701;
+  ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
+  ATOM_HEALTH_CONNECT_API_CALLED = 616;
+  ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
+  ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
+  ATOM_HEALTH_CONNECT_API_INVOKED = 643;
+  ATOM_EXERCISE_ROUTE_API_CALLED = 654;
+  ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
+  ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
+  ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
+  ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
+  ATOM_IKE_SESSION_TERMINATED = 678;
+  ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
+  ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
+  ATOM_KEYBOARD_CONFIGURED = 682;
+  ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
+  ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
+  ATOM_TOUCHPAD_USAGE = 10191;
+  ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
+  ATOM_EMERGENCY_STATE_CHANGED = 633;
+  ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
+  ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
+  ATOM_MEDIA_CODEC_STARTED = 641;
+  ATOM_MEDIA_CODEC_STOPPED = 642;
+  ATOM_MEDIA_CODEC_RENDERED = 684;
+  ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
+  ATOM_MTE_STATE = 10181;
+  ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
+  ATOM_NFC_FIELD_CHANGED = 856;
+  ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
+  ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
+  ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
+  ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
+  ATOM_PDF_LOAD_REPORTED = 859;
+  ATOM_PDF_API_USAGE_REPORTED = 860;
+  ATOM_PDF_SEARCH_REPORTED = 861;
+  ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
+  ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
+  ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
+  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
+  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
+  ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
+  ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
+  ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
+  ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
+  ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
+  ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
+  ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
+  ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
+  ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
+  ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
+  ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
+  ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
+  ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
+  ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
+  ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
+  ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
+  ATOM_ATOM_9999 = 9999;
+  ATOM_ATOM_99999 = 99999;
+  ATOM_SCREEN_OFF_REPORTED = 776;
+  ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
+  ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
+  ATOM_SCREEN_DIM_REPORTED = 867;
+  ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
+  ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
+  ATOM_RKPD_POOL_STATS = 664;
+  ATOM_RKPD_CLIENT_OPERATION = 665;
+  ATOM_SANDBOX_API_CALLED = 488;
+  ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
+  ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
+  ATOM_SANDBOX_SDK_STORAGE = 10159;
+  ATOM_SELINUX_AUDIT_LOG = 799;
+  ATOM_SETTINGS_SPA_REPORTED = 622;
+  ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
+  ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
+  ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
+  ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
+  ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
+  ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
+  ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
+  ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
+  ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
+  ATOM_EMERGENCY_NUMBER_DIALED = 637;
+  ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
+  ATOM_EMERGENCY_NUMBERS_INFO = 10180;
+  ATOM_DATA_NETWORK_VALIDATION = 10207;
+  ATOM_DATA_RAT_STATE_CHANGED = 854;
+  ATOM_CONNECTED_CHANNEL_CHANGED = 882;
+  ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
+  ATOM_QNS_IMS_CALL_DROP_STATS = 635;
+  ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
+  ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
+  ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
+  ATOM_QNS_HANDOVER_PINGPONG = 10179;
+  ATOM_SATELLITE_CONTROLLER = 10182;
+  ATOM_SATELLITE_SESSION = 10183;
+  ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
+  ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
+  ATOM_SATELLITE_PROVISION = 10186;
+  ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
+  ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
+  ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
+  ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
+  ATOM_SATELLITE_ENTITLEMENT = 10214;
+  ATOM_SATELLITE_CONFIG_UPDATER = 10215;
+  ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
+  ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
+  ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
+  ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
+  ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
+  ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
+  ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+  ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
+  ATOM_UWB_ACTIVITY_INFO = 10188;
+  ATOM_MEDIATOR_UPDATED = 721;
+  ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
+  ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
+  ATOM_MEDIA_ACTION_REPORTED = 608;
+  ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
+  ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
+  ATOM_WEAR_MODE_STATE_CHANGED = 715;
+  ATOM_RENDERER_INITIALIZED = 736;
+  ATOM_SCHEMA_VERSION_RECEIVED = 737;
+  ATOM_LAYOUT_INSPECTED = 741;
+  ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
+  ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
+  ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
+  ATOM_TILE_REQUESTED = 745;
+  ATOM_STATE_RESPONSE_RECEIVED = 746;
+  ATOM_TILE_RESPONSE_RECEIVED = 747;
+  ATOM_INFLATION_FINISHED = 748;
+  ATOM_INFLATION_FAILED = 749;
+  ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
+  ATOM_DRAWABLE_RENDERED = 751;
+  ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
+  ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
+  ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+  ATOM_WS_WEAR_TIME_SESSION = 610;
+  ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
+  ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
+  ATOM_WS_CALL_DURATION_REPORTED = 628;
+  ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
+  ATOM_WS_CALL_INTERACTION_REPORTED = 630;
+  ATOM_WS_ON_BODY_STATE_CHANGED = 787;
+  ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
+  ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
+  ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
+  ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
+  ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
+  ATOM_WEAR_POWER_MENU_OPENED = 731;
+  ATOM_WEAR_ASSISTANT_OPENED = 755;
+  ATOM_WIFI_AWARE_NDP_REPORTED = 638;
+  ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
+  ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
+  ATOM_SOFT_AP_STARTED = 680;
+  ATOM_SOFT_AP_STOPPED = 681;
+  ATOM_WIFI_LOCK_RELEASED = 687;
+  ATOM_WIFI_LOCK_DEACTIVATED = 688;
+  ATOM_WIFI_CONFIG_SAVED = 689;
+  ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED = 690;
+  ATOM_WIFI_AWARE_HAL_API_CALLED = 691;
+  ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED = 692;
+  ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
+  ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
+  ATOM_WIFI_STATE_CHANGED = 700;
+  ATOM_PNO_SCAN_STARTED = 719;
+  ATOM_PNO_SCAN_STOPPED = 720;
+  ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
+  ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
+  ATOM_SOFT_AP_STATE_CHANGED = 805;
+  ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
+  ATOM_WIFI_AWARE_CAPABILITIES = 10190;
+  ATOM_WIFI_MODULE_INFO = 10193;
+  ATOM_WIFI_SETTING_INFO = 10194;
+  ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
+  ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
 }
 // End of protos/perfetto/config/statsd/atom_ids.proto
 
diff --git a/protos/perfetto/config/statsd/atom_ids.proto b/protos/perfetto/config/statsd/atom_ids.proto
index 0d0af24..c4da538 100644
--- a/protos/perfetto/config/statsd/atom_ids.proto
+++ b/protos/perfetto/config/statsd/atom_ids.proto
@@ -752,276 +752,13 @@
   ATOM_NOTIFICATION_MEMORY_USE = 10174;
   ATOM_HDR_CAPABILITIES = 10175;
   ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT = 10176;
-  ATOM_WS_WEAR_TIME_SESSION = 610;
-  ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
-  ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
-  ATOM_WS_CALL_DURATION_REPORTED = 628;
-  ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
-  ATOM_WS_CALL_INTERACTION_REPORTED = 630;
-  ATOM_WS_ON_BODY_STATE_CHANGED = 787;
-  ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
-  ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
-  ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
-  ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
-  ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
-  ATOM_SETTINGS_SPA_REPORTED = 622;
-  ATOM_PDF_LOAD_REPORTED = 859;
-  ATOM_PDF_API_USAGE_REPORTED = 860;
-  ATOM_PDF_SEARCH_REPORTED = 861;
-  ATOM_HDMI_EARC_STATUS_REPORTED = 701;
-  ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
-  ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
-  ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
-  ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
-  ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
-  ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
-  ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
-  ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
-  ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
-  ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
-  ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
-  ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
-  ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
-  ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
-  ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
-  ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
-  ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
-  ATOM_WEAR_POWER_MENU_OPENED = 731;
-  ATOM_WEAR_ASSISTANT_OPENED = 755;
-  ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
-  ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
-  ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
-  ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
-  ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
-  ATOM_AUTOFILL_SESSION_COMMITTED = 607;
-  ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
-  ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
-  ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
-  ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
-  ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
-  ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
-  ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
-  ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
-  ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
-  ATOM_APF_SESSION_INFO_REPORTED = 777;
-  ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
-  ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
-  ATOM_VPN_CONNECTION_REPORTED = 851;
-  ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
-  ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
-  ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
-  ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
-  ATOM_ART_DATUM_REPORTED = 332;
-  ATOM_ART_DEVICE_DATUM_REPORTED = 550;
-  ATOM_ART_DATUM_DELTA_REPORTED = 565;
-  ATOM_ART_DEX2OAT_REPORTED = 929;
-  ATOM_ART_DEVICE_STATUS = 10205;
-  ATOM_ODREFRESH_REPORTED = 366;
-  ATOM_ODSIGN_REPORTED = 548;
-  ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
-  ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
-  ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
-  ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
-  ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
-  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
-  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
-  ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
-  ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
-  ATOM_EMERGENCY_STATE_CHANGED = 633;
-  ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
-  ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
-  ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
-  ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
-  ATOM_HEALTH_CONNECT_API_CALLED = 616;
-  ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
-  ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
-  ATOM_HEALTH_CONNECT_API_INVOKED = 643;
-  ATOM_EXERCISE_ROUTE_API_CALLED = 654;
-  ATOM_SELINUX_AUDIT_LOG = 799;
-  ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
-  ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
-  ATOM_EMERGENCY_NUMBERS_INFO = 10180;
-  ATOM_DATA_NETWORK_VALIDATION = 10207;
-  ATOM_DATA_RAT_STATE_CHANGED = 854;
-  ATOM_CONNECTED_CHANNEL_CHANGED = 882;
-  ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
-  ATOM_QNS_IMS_CALL_DROP_STATS = 635;
-  ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
-  ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
-  ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
-  ATOM_QNS_HANDOVER_PINGPONG = 10179;
-  ATOM_SATELLITE_CONTROLLER = 10182;
-  ATOM_SATELLITE_SESSION = 10183;
-  ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
-  ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
-  ATOM_SATELLITE_PROVISION = 10186;
-  ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
-  ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
-  ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
-  ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
-  ATOM_SATELLITE_ENTITLEMENT = 10214;
-  ATOM_SATELLITE_CONFIG_UPDATER = 10215;
-  ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
-  ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
-  ATOM_KEYBOARD_CONFIGURED = 682;
-  ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
-  ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
-  ATOM_TOUCHPAD_USAGE = 10191;
-  ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
-  ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
-  ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
-  ATOM_CRONET_ENGINE_CREATED = 703;
-  ATOM_CRONET_TRAFFIC_REPORTED = 704;
-  ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
-  ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
-  ATOM_CRONET_INITIALIZED = 764;
-  ATOM_WEAR_MODE_STATE_CHANGED = 715;
-  ATOM_RENDERER_INITIALIZED = 736;
-  ATOM_SCHEMA_VERSION_RECEIVED = 737;
-  ATOM_LAYOUT_INSPECTED = 741;
-  ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
-  ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
-  ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
-  ATOM_TILE_REQUESTED = 745;
-  ATOM_STATE_RESPONSE_RECEIVED = 746;
-  ATOM_TILE_RESPONSE_RECEIVED = 747;
-  ATOM_INFLATION_FINISHED = 748;
-  ATOM_INFLATION_FAILED = 749;
-  ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
-  ATOM_DRAWABLE_RENDERED = 751;
-  ATOM_MEDIA_ACTION_REPORTED = 608;
-  ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
-  ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
-  ATOM_MEDIATOR_UPDATED = 721;
-  ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
-  ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
   ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED = 820;
-  ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
-  ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
-  ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
-  ATOM_RKPD_POOL_STATS = 664;
-  ATOM_RKPD_CLIENT_OPERATION = 665;
-  ATOM_CPU_POLICY = 10199;
-  ATOM_ATOM_9999 = 9999;
-  ATOM_ATOM_99999 = 99999;
-  ATOM_SCREEN_OFF_REPORTED = 776;
-  ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
-  ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
-  ATOM_SCREEN_DIM_REPORTED = 867;
-  ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
-  ATOM_BAL_ALLOWED = 632;
-  ATOM_IN_TASK_ACTIVITY_STARTED = 685;
-  ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
-  ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
-  ATOM_USER_RISK_EVENT_REPORTED = 725;
-  ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
-  ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
-  ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
-  ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
-  ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
-  ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
-  ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
-  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
-  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
-  ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
-  ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
-  ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
-  ATOM_DREAM_SETTING_CHANGED = 705;
-  ATOM_DREAM_SETTING_SNAPSHOT = 10192;
-  ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
-  ATOM_WIFI_AWARE_NDP_REPORTED = 638;
-  ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
-  ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
-  ATOM_SOFT_AP_STARTED = 680;
-  ATOM_SOFT_AP_STOPPED = 681;
-  ATOM_WIFI_LOCK_RELEASED = 687;
-  ATOM_WIFI_LOCK_DEACTIVATED = 688;
-  ATOM_WIFI_CONFIG_SAVED = 689;
-  ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED = 690;
-  ATOM_WIFI_AWARE_HAL_API_CALLED = 691;
-  ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED = 692;
-  ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
-  ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
-  ATOM_WIFI_STATE_CHANGED = 700;
-  ATOM_PNO_SCAN_STARTED = 719;
-  ATOM_PNO_SCAN_STOPPED = 720;
-  ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
-  ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
-  ATOM_SOFT_AP_STATE_CHANGED = 805;
-  ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
-  ATOM_WIFI_AWARE_CAPABILITIES = 10190;
-  ATOM_WIFI_MODULE_INFO = 10193;
-  ATOM_WIFI_SETTING_INFO = 10194;
-  ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
-  ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
-  ATOM_MTE_STATE = 10181;
-  ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
-  ATOM_SANDBOX_API_CALLED = 488;
-  ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
-  ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
-  ATOM_SANDBOX_SDK_STORAGE = 10159;
-  ATOM_EXPRESS_EVENT_REPORTED = 528;
-  ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
-  ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
-  ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
-  ATOM_IKE_SESSION_TERMINATED = 678;
-  ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
-  ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
-  ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
-  ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
-  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
-  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
-  ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
-  ATOM_DEVICE_POLICY_STATE = 10217;
-  ATOM_DESKTOP_MODE_UI_CHANGED = 818;
-  ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
-  ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
-  ATOM_MEDIA_CODEC_STARTED = 641;
-  ATOM_MEDIA_CODEC_STOPPED = 642;
-  ATOM_MEDIA_CODEC_RENDERED = 684;
-  ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
-  ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
-  ATOM_PLUGIN_INITIALIZED = 655;
-  ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
-  ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
-  ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
   ATOM_THERMAL_STATUS_CALLED = 772;
   ATOM_THERMAL_HEADROOM_CALLED = 773;
   ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED = 774;
   ATOM_ADPF_HINT_SESSION_TID_CLEANUP = 839;
   ATOM_THERMAL_HEADROOM_THRESHOLDS = 10201;
   ATOM_ADPF_SESSION_SNAPSHOT = 10218;
-  ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
-  ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
-  ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
-  ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
-  ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
-  ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
-  ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
-  ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
-  ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
-  ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
-  ATOM_LE_RADIO_SCAN_STOPPED = 871;
-  ATOM_LE_SCAN_RESULT_RECEIVED = 872;
-  ATOM_LE_SCAN_ABUSED = 873;
-  ATOM_LE_ADV_STATE_CHANGED = 874;
-  ATOM_LE_ADV_ERROR_REPORTED = 875;
-  ATOM_A2DP_SESSION_REPORTED = 904;
-  ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
-  ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
-  ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
-  ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
-  ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
-  ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
-  ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
-  ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
-  ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
-  ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
-  ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
-  ATOM_EMERGENCY_NUMBER_DIALED = 637;
   ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
   ATOM_AD_SERVICES_API_CALLED = 435;
   ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
@@ -1089,27 +826,68 @@
   ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED = 876;
   ATOM_REPORT_IMPRESSION_API_CALLED = 877;
   ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS = 885;
-  ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
-  ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
-  ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
-  ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
-  ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
-  ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
-  ATOM_NFC_FIELD_CHANGED = 856;
-  ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
-  ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
-  ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
-  ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
-  ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
-  ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
-  ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
-  ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
-  ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
-  ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
-  ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+  ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
+  ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
+  ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
+  ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
+  ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
   ATOM_APEX_INSTALLATION_REQUESTED = 732;
   ATOM_APEX_INSTALLATION_STAGED = 733;
   ATOM_APEX_INSTALLATION_ENDED = 734;
+  ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
+  ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
+  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
+  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
+  ATOM_ART_DATUM_REPORTED = 332;
+  ATOM_ART_DEVICE_DATUM_REPORTED = 550;
+  ATOM_ART_DATUM_DELTA_REPORTED = 565;
+  ATOM_ART_DEX2OAT_REPORTED = 929;
+  ATOM_ART_DEVICE_STATUS = 10205;
+  ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
+  ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
+  ATOM_ODREFRESH_REPORTED = 366;
+  ATOM_ODSIGN_REPORTED = 548;
+  ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
+  ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
+  ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
+  ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
+  ATOM_AUTOFILL_SESSION_COMMITTED = 607;
+  ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+  ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
+  ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
+  ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
+  ATOM_PLUGIN_INITIALIZED = 655;
+  ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
+  ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
+  ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
+  ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
+  ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
+  ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
+  ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
+  ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
+  ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
+  ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
+  ATOM_LE_RADIO_SCAN_STOPPED = 871;
+  ATOM_LE_SCAN_RESULT_RECEIVED = 872;
+  ATOM_LE_SCAN_ABUSED = 873;
+  ATOM_LE_ADV_STATE_CHANGED = 874;
+  ATOM_LE_ADV_ERROR_REPORTED = 875;
+  ATOM_A2DP_SESSION_REPORTED = 904;
+  ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
+  ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
+  ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
+  ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE = 982;
+  ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
+  ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
+  ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
+  ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
+  ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
+  ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED = 979;
+  ATOM_APF_SESSION_INFO_REPORTED = 777;
+  ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
+  ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
+  ATOM_VPN_CONNECTION_REPORTED = 851;
+  ATOM_CPU_POLICY = 10199;
   ATOM_CREDENTIAL_MANAGER_API_CALLED = 585;
   ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED = 651;
   ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED = 652;
@@ -1119,6 +897,230 @@
   ATOM_CREDENTIAL_MANAGER_GET_REPORTED = 669;
   ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED = 670;
   ATOM_CREDENTIAL_MANAGER_APIV2_CALLED = 671;
-  ATOM_UWB_ACTIVITY_INFO = 10188;
+  ATOM_CRONET_ENGINE_CREATED = 703;
+  ATOM_CRONET_TRAFFIC_REPORTED = 704;
+  ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
+  ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
+  ATOM_CRONET_INITIALIZED = 764;
+  ATOM_DESKTOP_MODE_UI_CHANGED = 818;
+  ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
+  ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
+  ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
+  ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
+  ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
+  ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
+  ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
+  ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
+  ATOM_DEVICE_POLICY_STATE = 10217;
+  ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
+  ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
   ATOM_DND_STATE_CHANGED = 657;
+  ATOM_DREAM_SETTING_CHANGED = 705;
+  ATOM_DREAM_SETTING_SNAPSHOT = 10192;
+  ATOM_EXPRESS_EVENT_REPORTED = 528;
+  ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
+  ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
+  ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
+  ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
+  ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
+  ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
+  ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
+  ATOM_BAL_ALLOWED = 632;
+  ATOM_IN_TASK_ACTIVITY_STARTED = 685;
+  ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
+  ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
+  ATOM_USER_RISK_EVENT_REPORTED = 725;
+  ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
+  ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
+  ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
+  ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
+  ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
+  ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
+  ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
+  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
+  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
+  ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
+  ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
+  ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
+  ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
+  ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
+  ATOM_HDMI_EARC_STATUS_REPORTED = 701;
+  ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
+  ATOM_HEALTH_CONNECT_API_CALLED = 616;
+  ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
+  ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
+  ATOM_HEALTH_CONNECT_API_INVOKED = 643;
+  ATOM_EXERCISE_ROUTE_API_CALLED = 654;
+  ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
+  ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
+  ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
+  ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
+  ATOM_IKE_SESSION_TERMINATED = 678;
+  ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
+  ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
+  ATOM_KEYBOARD_CONFIGURED = 682;
+  ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
+  ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
+  ATOM_TOUCHPAD_USAGE = 10191;
+  ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
+  ATOM_EMERGENCY_STATE_CHANGED = 633;
+  ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
+  ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
+  ATOM_MEDIA_CODEC_STARTED = 641;
+  ATOM_MEDIA_CODEC_STOPPED = 642;
+  ATOM_MEDIA_CODEC_RENDERED = 684;
+  ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
+  ATOM_MTE_STATE = 10181;
+  ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
+  ATOM_NFC_FIELD_CHANGED = 856;
+  ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
+  ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
+  ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
+  ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
+  ATOM_PDF_LOAD_REPORTED = 859;
+  ATOM_PDF_API_USAGE_REPORTED = 860;
+  ATOM_PDF_SEARCH_REPORTED = 861;
+  ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
+  ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
+  ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
+  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
+  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
+  ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
+  ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
+  ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
+  ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
+  ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
+  ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
+  ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
+  ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
+  ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
+  ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
+  ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
+  ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
+  ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
+  ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
+  ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
+  ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
+  ATOM_ATOM_9999 = 9999;
+  ATOM_ATOM_99999 = 99999;
+  ATOM_SCREEN_OFF_REPORTED = 776;
+  ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
+  ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
+  ATOM_SCREEN_DIM_REPORTED = 867;
+  ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
+  ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
+  ATOM_RKPD_POOL_STATS = 664;
+  ATOM_RKPD_CLIENT_OPERATION = 665;
+  ATOM_SANDBOX_API_CALLED = 488;
+  ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
+  ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
+  ATOM_SANDBOX_SDK_STORAGE = 10159;
+  ATOM_SELINUX_AUDIT_LOG = 799;
+  ATOM_SETTINGS_SPA_REPORTED = 622;
+  ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
+  ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
+  ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
+  ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
+  ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
+  ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
+  ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
+  ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
+  ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
+  ATOM_EMERGENCY_NUMBER_DIALED = 637;
+  ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
+  ATOM_EMERGENCY_NUMBERS_INFO = 10180;
+  ATOM_DATA_NETWORK_VALIDATION = 10207;
+  ATOM_DATA_RAT_STATE_CHANGED = 854;
+  ATOM_CONNECTED_CHANNEL_CHANGED = 882;
+  ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
+  ATOM_QNS_IMS_CALL_DROP_STATS = 635;
+  ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
+  ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
+  ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
+  ATOM_QNS_HANDOVER_PINGPONG = 10179;
+  ATOM_SATELLITE_CONTROLLER = 10182;
+  ATOM_SATELLITE_SESSION = 10183;
+  ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
+  ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
+  ATOM_SATELLITE_PROVISION = 10186;
+  ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
+  ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
+  ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
+  ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
+  ATOM_SATELLITE_ENTITLEMENT = 10214;
+  ATOM_SATELLITE_CONFIG_UPDATER = 10215;
+  ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
+  ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
+  ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
+  ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
+  ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
+  ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
+  ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+  ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
+  ATOM_UWB_ACTIVITY_INFO = 10188;
+  ATOM_MEDIATOR_UPDATED = 721;
+  ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
+  ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
+  ATOM_MEDIA_ACTION_REPORTED = 608;
+  ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
+  ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
+  ATOM_WEAR_MODE_STATE_CHANGED = 715;
+  ATOM_RENDERER_INITIALIZED = 736;
+  ATOM_SCHEMA_VERSION_RECEIVED = 737;
+  ATOM_LAYOUT_INSPECTED = 741;
+  ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
+  ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
+  ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
+  ATOM_TILE_REQUESTED = 745;
+  ATOM_STATE_RESPONSE_RECEIVED = 746;
+  ATOM_TILE_RESPONSE_RECEIVED = 747;
+  ATOM_INFLATION_FINISHED = 748;
+  ATOM_INFLATION_FAILED = 749;
+  ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
+  ATOM_DRAWABLE_RENDERED = 751;
+  ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
+  ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
+  ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+  ATOM_WS_WEAR_TIME_SESSION = 610;
+  ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
+  ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
+  ATOM_WS_CALL_DURATION_REPORTED = 628;
+  ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
+  ATOM_WS_CALL_INTERACTION_REPORTED = 630;
+  ATOM_WS_ON_BODY_STATE_CHANGED = 787;
+  ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
+  ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
+  ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
+  ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
+  ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
+  ATOM_WEAR_POWER_MENU_OPENED = 731;
+  ATOM_WEAR_ASSISTANT_OPENED = 755;
+  ATOM_WIFI_AWARE_NDP_REPORTED = 638;
+  ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
+  ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
+  ATOM_SOFT_AP_STARTED = 680;
+  ATOM_SOFT_AP_STOPPED = 681;
+  ATOM_WIFI_LOCK_RELEASED = 687;
+  ATOM_WIFI_LOCK_DEACTIVATED = 688;
+  ATOM_WIFI_CONFIG_SAVED = 689;
+  ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED = 690;
+  ATOM_WIFI_AWARE_HAL_API_CALLED = 691;
+  ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED = 692;
+  ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
+  ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
+  ATOM_WIFI_STATE_CHANGED = 700;
+  ATOM_PNO_SCAN_STARTED = 719;
+  ATOM_PNO_SCAN_STOPPED = 720;
+  ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
+  ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
+  ATOM_SOFT_AP_STATE_CHANGED = 805;
+  ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
+  ATOM_WIFI_AWARE_CAPABILITIES = 10190;
+  ATOM_WIFI_MODULE_INFO = 10193;
+  ATOM_WIFI_SETTING_INFO = 10194;
+  ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
+  ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
 }
\ No newline at end of file
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 6104064..50b81bc 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -2726,276 +2726,13 @@
   ATOM_NOTIFICATION_MEMORY_USE = 10174;
   ATOM_HDR_CAPABILITIES = 10175;
   ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT = 10176;
-  ATOM_WS_WEAR_TIME_SESSION = 610;
-  ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
-  ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
-  ATOM_WS_CALL_DURATION_REPORTED = 628;
-  ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
-  ATOM_WS_CALL_INTERACTION_REPORTED = 630;
-  ATOM_WS_ON_BODY_STATE_CHANGED = 787;
-  ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
-  ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
-  ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
-  ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
-  ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
-  ATOM_SETTINGS_SPA_REPORTED = 622;
-  ATOM_PDF_LOAD_REPORTED = 859;
-  ATOM_PDF_API_USAGE_REPORTED = 860;
-  ATOM_PDF_SEARCH_REPORTED = 861;
-  ATOM_HDMI_EARC_STATUS_REPORTED = 701;
-  ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
-  ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
-  ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
-  ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
-  ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
-  ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
-  ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
-  ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
-  ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
-  ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
-  ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
-  ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
-  ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
-  ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
-  ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
-  ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
-  ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
-  ATOM_WEAR_POWER_MENU_OPENED = 731;
-  ATOM_WEAR_ASSISTANT_OPENED = 755;
-  ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
-  ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
-  ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
-  ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
-  ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
-  ATOM_AUTOFILL_SESSION_COMMITTED = 607;
-  ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
-  ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
-  ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
-  ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
-  ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
-  ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
-  ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
-  ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
-  ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
-  ATOM_APF_SESSION_INFO_REPORTED = 777;
-  ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
-  ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
-  ATOM_VPN_CONNECTION_REPORTED = 851;
-  ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
-  ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
-  ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
-  ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
-  ATOM_ART_DATUM_REPORTED = 332;
-  ATOM_ART_DEVICE_DATUM_REPORTED = 550;
-  ATOM_ART_DATUM_DELTA_REPORTED = 565;
-  ATOM_ART_DEX2OAT_REPORTED = 929;
-  ATOM_ART_DEVICE_STATUS = 10205;
-  ATOM_ODREFRESH_REPORTED = 366;
-  ATOM_ODSIGN_REPORTED = 548;
-  ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
-  ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
-  ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
-  ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
-  ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
-  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
-  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
-  ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
-  ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
-  ATOM_EMERGENCY_STATE_CHANGED = 633;
-  ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
-  ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
-  ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
-  ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
-  ATOM_HEALTH_CONNECT_API_CALLED = 616;
-  ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
-  ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
-  ATOM_HEALTH_CONNECT_API_INVOKED = 643;
-  ATOM_EXERCISE_ROUTE_API_CALLED = 654;
-  ATOM_SELINUX_AUDIT_LOG = 799;
-  ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
-  ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
-  ATOM_EMERGENCY_NUMBERS_INFO = 10180;
-  ATOM_DATA_NETWORK_VALIDATION = 10207;
-  ATOM_DATA_RAT_STATE_CHANGED = 854;
-  ATOM_CONNECTED_CHANNEL_CHANGED = 882;
-  ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
-  ATOM_QNS_IMS_CALL_DROP_STATS = 635;
-  ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
-  ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
-  ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
-  ATOM_QNS_HANDOVER_PINGPONG = 10179;
-  ATOM_SATELLITE_CONTROLLER = 10182;
-  ATOM_SATELLITE_SESSION = 10183;
-  ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
-  ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
-  ATOM_SATELLITE_PROVISION = 10186;
-  ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
-  ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
-  ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
-  ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
-  ATOM_SATELLITE_ENTITLEMENT = 10214;
-  ATOM_SATELLITE_CONFIG_UPDATER = 10215;
-  ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
-  ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
-  ATOM_KEYBOARD_CONFIGURED = 682;
-  ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
-  ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
-  ATOM_TOUCHPAD_USAGE = 10191;
-  ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
-  ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
-  ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
-  ATOM_CRONET_ENGINE_CREATED = 703;
-  ATOM_CRONET_TRAFFIC_REPORTED = 704;
-  ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
-  ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
-  ATOM_CRONET_INITIALIZED = 764;
-  ATOM_WEAR_MODE_STATE_CHANGED = 715;
-  ATOM_RENDERER_INITIALIZED = 736;
-  ATOM_SCHEMA_VERSION_RECEIVED = 737;
-  ATOM_LAYOUT_INSPECTED = 741;
-  ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
-  ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
-  ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
-  ATOM_TILE_REQUESTED = 745;
-  ATOM_STATE_RESPONSE_RECEIVED = 746;
-  ATOM_TILE_RESPONSE_RECEIVED = 747;
-  ATOM_INFLATION_FINISHED = 748;
-  ATOM_INFLATION_FAILED = 749;
-  ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
-  ATOM_DRAWABLE_RENDERED = 751;
-  ATOM_MEDIA_ACTION_REPORTED = 608;
-  ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
-  ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
-  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
-  ATOM_MEDIATOR_UPDATED = 721;
-  ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
-  ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
   ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED = 820;
-  ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
-  ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
-  ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
-  ATOM_RKPD_POOL_STATS = 664;
-  ATOM_RKPD_CLIENT_OPERATION = 665;
-  ATOM_CPU_POLICY = 10199;
-  ATOM_ATOM_9999 = 9999;
-  ATOM_ATOM_99999 = 99999;
-  ATOM_SCREEN_OFF_REPORTED = 776;
-  ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
-  ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
-  ATOM_SCREEN_DIM_REPORTED = 867;
-  ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
-  ATOM_BAL_ALLOWED = 632;
-  ATOM_IN_TASK_ACTIVITY_STARTED = 685;
-  ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
-  ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
-  ATOM_USER_RISK_EVENT_REPORTED = 725;
-  ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
-  ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
-  ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
-  ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
-  ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
-  ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
-  ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
-  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
-  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
-  ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
-  ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
-  ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
-  ATOM_DREAM_SETTING_CHANGED = 705;
-  ATOM_DREAM_SETTING_SNAPSHOT = 10192;
-  ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
-  ATOM_WIFI_AWARE_NDP_REPORTED = 638;
-  ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
-  ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
-  ATOM_SOFT_AP_STARTED = 680;
-  ATOM_SOFT_AP_STOPPED = 681;
-  ATOM_WIFI_LOCK_RELEASED = 687;
-  ATOM_WIFI_LOCK_DEACTIVATED = 688;
-  ATOM_WIFI_CONFIG_SAVED = 689;
-  ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED = 690;
-  ATOM_WIFI_AWARE_HAL_API_CALLED = 691;
-  ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED = 692;
-  ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
-  ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
-  ATOM_WIFI_STATE_CHANGED = 700;
-  ATOM_PNO_SCAN_STARTED = 719;
-  ATOM_PNO_SCAN_STOPPED = 720;
-  ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
-  ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
-  ATOM_SOFT_AP_STATE_CHANGED = 805;
-  ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
-  ATOM_WIFI_AWARE_CAPABILITIES = 10190;
-  ATOM_WIFI_MODULE_INFO = 10193;
-  ATOM_WIFI_SETTING_INFO = 10194;
-  ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
-  ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
-  ATOM_MTE_STATE = 10181;
-  ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
-  ATOM_SANDBOX_API_CALLED = 488;
-  ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
-  ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
-  ATOM_SANDBOX_SDK_STORAGE = 10159;
-  ATOM_EXPRESS_EVENT_REPORTED = 528;
-  ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
-  ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
-  ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
-  ATOM_IKE_SESSION_TERMINATED = 678;
-  ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
-  ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
-  ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
-  ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
-  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
-  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
-  ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
-  ATOM_DEVICE_POLICY_STATE = 10217;
-  ATOM_DESKTOP_MODE_UI_CHANGED = 818;
-  ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
-  ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
-  ATOM_MEDIA_CODEC_STARTED = 641;
-  ATOM_MEDIA_CODEC_STOPPED = 642;
-  ATOM_MEDIA_CODEC_RENDERED = 684;
-  ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
-  ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
-  ATOM_PLUGIN_INITIALIZED = 655;
-  ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
-  ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
-  ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
   ATOM_THERMAL_STATUS_CALLED = 772;
   ATOM_THERMAL_HEADROOM_CALLED = 773;
   ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED = 774;
   ATOM_ADPF_HINT_SESSION_TID_CLEANUP = 839;
   ATOM_THERMAL_HEADROOM_THRESHOLDS = 10201;
   ATOM_ADPF_SESSION_SNAPSHOT = 10218;
-  ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
-  ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
-  ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
-  ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
-  ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
-  ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
-  ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
-  ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
-  ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
-  ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
-  ATOM_LE_RADIO_SCAN_STOPPED = 871;
-  ATOM_LE_SCAN_RESULT_RECEIVED = 872;
-  ATOM_LE_SCAN_ABUSED = 873;
-  ATOM_LE_ADV_STATE_CHANGED = 874;
-  ATOM_LE_ADV_ERROR_REPORTED = 875;
-  ATOM_A2DP_SESSION_REPORTED = 904;
-  ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
-  ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
-  ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
-  ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
-  ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
-  ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
-  ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
-  ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
-  ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
-  ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
-  ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
-  ATOM_EMERGENCY_NUMBER_DIALED = 637;
   ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
   ATOM_AD_SERVICES_API_CALLED = 435;
   ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
@@ -3063,27 +2800,68 @@
   ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED = 876;
   ATOM_REPORT_IMPRESSION_API_CALLED = 877;
   ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS = 885;
-  ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
-  ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
-  ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
-  ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
-  ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
-  ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
-  ATOM_NFC_FIELD_CHANGED = 856;
-  ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
-  ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
-  ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
-  ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
-  ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
-  ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
-  ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
-  ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
-  ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
-  ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
-  ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+  ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
+  ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
+  ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
+  ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
+  ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
   ATOM_APEX_INSTALLATION_REQUESTED = 732;
   ATOM_APEX_INSTALLATION_STAGED = 733;
   ATOM_APEX_INSTALLATION_ENDED = 734;
+  ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
+  ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
+  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
+  ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
+  ATOM_ART_DATUM_REPORTED = 332;
+  ATOM_ART_DEVICE_DATUM_REPORTED = 550;
+  ATOM_ART_DATUM_DELTA_REPORTED = 565;
+  ATOM_ART_DEX2OAT_REPORTED = 929;
+  ATOM_ART_DEVICE_STATUS = 10205;
+  ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
+  ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
+  ATOM_ODREFRESH_REPORTED = 366;
+  ATOM_ODSIGN_REPORTED = 548;
+  ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
+  ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
+  ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
+  ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
+  ATOM_AUTOFILL_SESSION_COMMITTED = 607;
+  ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+  ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
+  ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
+  ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
+  ATOM_PLUGIN_INITIALIZED = 655;
+  ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
+  ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
+  ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
+  ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
+  ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
+  ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
+  ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
+  ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
+  ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
+  ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
+  ATOM_LE_RADIO_SCAN_STOPPED = 871;
+  ATOM_LE_SCAN_RESULT_RECEIVED = 872;
+  ATOM_LE_SCAN_ABUSED = 873;
+  ATOM_LE_ADV_STATE_CHANGED = 874;
+  ATOM_LE_ADV_ERROR_REPORTED = 875;
+  ATOM_A2DP_SESSION_REPORTED = 904;
+  ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
+  ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
+  ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
+  ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE = 982;
+  ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
+  ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
+  ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
+  ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
+  ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
+  ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED = 979;
+  ATOM_APF_SESSION_INFO_REPORTED = 777;
+  ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
+  ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
+  ATOM_VPN_CONNECTION_REPORTED = 851;
+  ATOM_CPU_POLICY = 10199;
   ATOM_CREDENTIAL_MANAGER_API_CALLED = 585;
   ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED = 651;
   ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED = 652;
@@ -3093,8 +2871,232 @@
   ATOM_CREDENTIAL_MANAGER_GET_REPORTED = 669;
   ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED = 670;
   ATOM_CREDENTIAL_MANAGER_APIV2_CALLED = 671;
-  ATOM_UWB_ACTIVITY_INFO = 10188;
+  ATOM_CRONET_ENGINE_CREATED = 703;
+  ATOM_CRONET_TRAFFIC_REPORTED = 704;
+  ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
+  ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
+  ATOM_CRONET_INITIALIZED = 764;
+  ATOM_DESKTOP_MODE_UI_CHANGED = 818;
+  ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
+  ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
+  ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
+  ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
+  ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
+  ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
+  ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
+  ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
+  ATOM_DEVICE_POLICY_STATE = 10217;
+  ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
+  ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
   ATOM_DND_STATE_CHANGED = 657;
+  ATOM_DREAM_SETTING_CHANGED = 705;
+  ATOM_DREAM_SETTING_SNAPSHOT = 10192;
+  ATOM_EXPRESS_EVENT_REPORTED = 528;
+  ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
+  ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
+  ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
+  ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
+  ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
+  ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
+  ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
+  ATOM_BAL_ALLOWED = 632;
+  ATOM_IN_TASK_ACTIVITY_STARTED = 685;
+  ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
+  ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
+  ATOM_USER_RISK_EVENT_REPORTED = 725;
+  ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
+  ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
+  ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
+  ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
+  ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
+  ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
+  ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
+  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
+  ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
+  ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
+  ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
+  ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
+  ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
+  ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
+  ATOM_HDMI_EARC_STATUS_REPORTED = 701;
+  ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
+  ATOM_HEALTH_CONNECT_API_CALLED = 616;
+  ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
+  ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
+  ATOM_HEALTH_CONNECT_API_INVOKED = 643;
+  ATOM_EXERCISE_ROUTE_API_CALLED = 654;
+  ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
+  ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
+  ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
+  ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
+  ATOM_IKE_SESSION_TERMINATED = 678;
+  ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
+  ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
+  ATOM_KEYBOARD_CONFIGURED = 682;
+  ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
+  ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
+  ATOM_TOUCHPAD_USAGE = 10191;
+  ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
+  ATOM_EMERGENCY_STATE_CHANGED = 633;
+  ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
+  ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
+  ATOM_MEDIA_CODEC_STARTED = 641;
+  ATOM_MEDIA_CODEC_STOPPED = 642;
+  ATOM_MEDIA_CODEC_RENDERED = 684;
+  ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
+  ATOM_MTE_STATE = 10181;
+  ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
+  ATOM_NFC_FIELD_CHANGED = 856;
+  ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
+  ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
+  ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
+  ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
+  ATOM_PDF_LOAD_REPORTED = 859;
+  ATOM_PDF_API_USAGE_REPORTED = 860;
+  ATOM_PDF_SEARCH_REPORTED = 861;
+  ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
+  ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
+  ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
+  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
+  ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
+  ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
+  ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
+  ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
+  ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
+  ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
+  ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
+  ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
+  ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
+  ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
+  ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
+  ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
+  ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
+  ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
+  ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
+  ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
+  ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
+  ATOM_ATOM_9999 = 9999;
+  ATOM_ATOM_99999 = 99999;
+  ATOM_SCREEN_OFF_REPORTED = 776;
+  ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
+  ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
+  ATOM_SCREEN_DIM_REPORTED = 867;
+  ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
+  ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
+  ATOM_RKPD_POOL_STATS = 664;
+  ATOM_RKPD_CLIENT_OPERATION = 665;
+  ATOM_SANDBOX_API_CALLED = 488;
+  ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
+  ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
+  ATOM_SANDBOX_SDK_STORAGE = 10159;
+  ATOM_SELINUX_AUDIT_LOG = 799;
+  ATOM_SETTINGS_SPA_REPORTED = 622;
+  ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
+  ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
+  ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
+  ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
+  ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
+  ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
+  ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
+  ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
+  ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
+  ATOM_EMERGENCY_NUMBER_DIALED = 637;
+  ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
+  ATOM_EMERGENCY_NUMBERS_INFO = 10180;
+  ATOM_DATA_NETWORK_VALIDATION = 10207;
+  ATOM_DATA_RAT_STATE_CHANGED = 854;
+  ATOM_CONNECTED_CHANNEL_CHANGED = 882;
+  ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
+  ATOM_QNS_IMS_CALL_DROP_STATS = 635;
+  ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
+  ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
+  ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
+  ATOM_QNS_HANDOVER_PINGPONG = 10179;
+  ATOM_SATELLITE_CONTROLLER = 10182;
+  ATOM_SATELLITE_SESSION = 10183;
+  ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
+  ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
+  ATOM_SATELLITE_PROVISION = 10186;
+  ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
+  ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
+  ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
+  ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
+  ATOM_SATELLITE_ENTITLEMENT = 10214;
+  ATOM_SATELLITE_CONFIG_UPDATER = 10215;
+  ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
+  ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
+  ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
+  ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
+  ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
+  ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
+  ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+  ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
+  ATOM_UWB_ACTIVITY_INFO = 10188;
+  ATOM_MEDIATOR_UPDATED = 721;
+  ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
+  ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
+  ATOM_MEDIA_ACTION_REPORTED = 608;
+  ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
+  ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
+  ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
+  ATOM_WEAR_MODE_STATE_CHANGED = 715;
+  ATOM_RENDERER_INITIALIZED = 736;
+  ATOM_SCHEMA_VERSION_RECEIVED = 737;
+  ATOM_LAYOUT_INSPECTED = 741;
+  ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
+  ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
+  ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
+  ATOM_TILE_REQUESTED = 745;
+  ATOM_STATE_RESPONSE_RECEIVED = 746;
+  ATOM_TILE_RESPONSE_RECEIVED = 747;
+  ATOM_INFLATION_FINISHED = 748;
+  ATOM_INFLATION_FAILED = 749;
+  ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
+  ATOM_DRAWABLE_RENDERED = 751;
+  ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
+  ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
+  ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+  ATOM_WS_WEAR_TIME_SESSION = 610;
+  ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
+  ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
+  ATOM_WS_CALL_DURATION_REPORTED = 628;
+  ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
+  ATOM_WS_CALL_INTERACTION_REPORTED = 630;
+  ATOM_WS_ON_BODY_STATE_CHANGED = 787;
+  ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
+  ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
+  ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
+  ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
+  ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
+  ATOM_WEAR_POWER_MENU_OPENED = 731;
+  ATOM_WEAR_ASSISTANT_OPENED = 755;
+  ATOM_WIFI_AWARE_NDP_REPORTED = 638;
+  ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
+  ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
+  ATOM_SOFT_AP_STARTED = 680;
+  ATOM_SOFT_AP_STOPPED = 681;
+  ATOM_WIFI_LOCK_RELEASED = 687;
+  ATOM_WIFI_LOCK_DEACTIVATED = 688;
+  ATOM_WIFI_CONFIG_SAVED = 689;
+  ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED = 690;
+  ATOM_WIFI_AWARE_HAL_API_CALLED = 691;
+  ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED = 692;
+  ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
+  ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
+  ATOM_WIFI_STATE_CHANGED = 700;
+  ATOM_PNO_SCAN_STARTED = 719;
+  ATOM_PNO_SCAN_STOPPED = 720;
+  ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
+  ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
+  ATOM_SOFT_AP_STATE_CHANGED = 805;
+  ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
+  ATOM_WIFI_AWARE_CAPABILITIES = 10190;
+  ATOM_WIFI_MODULE_INFO = 10193;
+  ATOM_WIFI_SETTING_INFO = 10194;
+  ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
+  ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
 }
 // End of protos/perfetto/config/statsd/atom_ids.proto
 
diff --git a/protos/third_party/chromium/chrome_track_event.proto b/protos/third_party/chromium/chrome_track_event.proto
index 7cf29f6..6d92cb6 100644
--- a/protos/third_party/chromium/chrome_track_event.proto
+++ b/protos/third_party/chromium/chrome_track_event.proto
@@ -2020,6 +2020,15 @@
 
   // Timestamp in microseconds of the start of the task containing this slice.
   optional uint64 task_start_time_us = 2;
+
+  // t1 - t0, where t1 is the start timestamp of this slice and t0 is the
+  // timestamp of the time when the task containing this slice
+  // was queued.
+  optional uint64 task_queueing_time_us = 3;
+
+  // Timestamp in microseconds of the time when the task containing
+  // this slice was queued.
+  optional uint64 task_queued_time_us = 4;
 }
 
 message ChromeLatencyInfo2 {
diff --git a/src/trace_processor/importers/proto/atoms.descriptor b/src/trace_processor/importers/proto/atoms.descriptor
index b318814..85c6ca8 100644
--- a/src/trace_processor/importers/proto/atoms.descriptor
+++ b/src/trace_processor/importers/proto/atoms.descriptor
Binary files differ
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql b/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql
index 496e4ee..29c0b84 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql
@@ -51,12 +51,21 @@
   dw_statsd_events_update_by_instance AS (
     SELECT instance_id, session_id, min(uid) AS uid FROM atoms
     WHERE type = 'TASK_INFO_CHANGED' GROUP BY instance_id, session_id),
+  dw_statsd_reset_event AS (
+    SELECT ts FROM atoms
+    WHERE type = 'TASK_INIT_STATSD'
+    UNION
+    SELECT trace_end()),
   dw_windows AS (
     SELECT
       a.ts AS raw_add_ts,
       r.ts AS raw_remove_ts,
       ifnull(a.ts, trace_start()) AS ts,  -- Assume trace_start() if no add event found.
-      ifnull(r.ts, trace_end()) - ifnull(a.ts, trace_start()) AS dur,  -- Assume trace_end() if no remove event found.
+      ifnull(r.ts,
+        (
+          SELECT MIN(ts) FROM dw_statsd_reset_event
+          WHERE ts > ifnull(a.ts, trace_start())
+        )) - ifnull(a.ts, trace_start()) AS dur,  -- Assume next reset event or trace_end() if no remove event found.
       ifnull(a.instance_id, r.instance_id) AS instance_id,
       ifnull(a.uid, r.uid) AS uid
     FROM dw_statsd_events_add a
diff --git a/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn
index d7e9608..3a2ccbe 100644
--- a/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn
@@ -16,6 +16,7 @@
 
 perfetto_sql_source_set("sched") {
   sources = [
+    "latency.sql",
     "runnable.sql",
     "states.sql",
     "thread_executing_span.sql",
diff --git a/src/trace_processor/perfetto_sql/stdlib/sched/latency.sql b/src/trace_processor/perfetto_sql/stdlib/sched/latency.sql
new file mode 100644
index 0000000..50dd7e7
--- /dev/null
+++ b/src/trace_processor/perfetto_sql/stdlib/sched/latency.sql
@@ -0,0 +1,51 @@
+--
+-- Copyright 2024 The Android Open Source Project
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+--     https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+INCLUDE PERFETTO MODULE sched.runnable;
+
+CREATE PERFETTO VIEW _sched_with_thread_state_join AS
+SELECT
+    thread_state.id AS thread_state_id,
+    sched.id AS sched_id
+FROM sched
+JOIN thread_state USING (utid, ts, dur);
+
+-- Scheduling latency of running thread states.
+-- For each time the thread was running, returns the duration of the runnable
+-- state directly before.
+CREATE PERFETTO TABLE sched_latency_for_running_interval(
+    -- Running state of the thread. Alias of `thread_state.id`.
+    thread_state_id INT,
+    -- Id of a corresponding slice in a `sched` table. Alias of `sched.id`.
+    sched_id INT,
+    -- Thread with running state. Alias of `thread.id`.
+    utid INT,
+    -- Runnable state before thread is "running". Duration of this thread state
+    -- is `latency_dur`. One of `thread_state.id`.
+    runnable_latency_id INT,
+    -- Scheduling latency of thread state. Duration of thread state with
+    -- `runnable_latency_id`.
+    latency_dur INT
+) AS
+SELECT
+    r.id AS thread_state_id,
+    sched_id,
+    utid,
+    prev_runnable_id AS runnable_latency_id,
+    dur AS latency_dur
+FROM sched_previous_runnable_on_thread r
+JOIN thread_state prev_ts ON prev_runnable_id = prev_ts.id
+JOIN _sched_with_thread_state_join ON thread_state_id = r.id
+
diff --git a/src/trace_processor/perfetto_sql/stdlib/sched/runnable.sql b/src/trace_processor/perfetto_sql/stdlib/sched/runnable.sql
index 38956b1..ffe8b55 100644
--- a/src/trace_processor/perfetto_sql/stdlib/sched/runnable.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/sched/runnable.sql
@@ -19,12 +19,12 @@
 -- - previous "Runnable" (or runnable preempted) state.
 -- - previous uninterrupted "Runnable" state with a valid waker thread.
 CREATE PERFETTO TABLE sched_previous_runnable_on_thread(
-    -- `thread_state.id` id.
+    -- Alias of `thread_state.id`.
     id INT,
-    -- Previous runnable `thread_state.id`.
+    -- Previous runnable thread state. Alias of `thread_state.id`.
     prev_runnable_id INT,
-    -- Previous runnable `thread_state.id` with valid waker
-    -- thread.
+    -- Previous runnable thread state with valid waker thread. Alias of
+    -- `thread_state.id`.
     prev_wakeup_runnable_id INT
 ) AS
 WITH running_and_runnable AS (
diff --git a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_freq.sql b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_freq.sql
index 94f8fd7..1256f3b 100644
--- a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_freq.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_freq.sql
@@ -51,4 +51,16 @@
   freq,
   cpu,
   policy
-FROM _cpu_freq;
+FROM _cpu_freq
+UNION ALL
+-- Add empty cpu freq counters for CPUs that are physically present, but did not
+-- have a single freq event register. The time region needs to be defined so
+-- that interval_intersect doesn't remove the undefined time region.
+SELECT
+  trace_start() as ts,
+  trace_dur() as dur,
+  NULL as freq,
+  cpu,
+  NULL as policy
+FROM _dev_cpu_policy_map
+WHERE cpu NOT IN (SELECT cpu FROM first_cpu_freq_slices);
diff --git a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_idle.sql b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_idle.sql
index 5c8c6b5..c2170b7 100644
--- a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_idle.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_idle.sql
@@ -91,4 +91,15 @@
   idle
 FROM _cpu_idle
 -- Some durations are 0 post-adjustment and won't work with interval intersect
-WHERE dur > 0;
+WHERE dur > 0
+UNION ALL
+-- Add empty cpu idle counters for CPUs that are physically present, but did not
+-- have a single idle event register. The time region needs to be defined so
+-- that interval_intersect doesn't remove the undefined time region.
+SELECT
+  trace_start() as ts,
+  trace_dur() as dur,
+  cpu,
+  NULL as idle
+FROM _dev_cpu_policy_map
+WHERE cpu NOT IN (SELECT cpu FROM first_cpu_idle_slices);
diff --git a/test/data/android_desktop_mode/task_update_reset_events.pb.sha256 b/test/data/android_desktop_mode/task_update_reset_events.pb.sha256
new file mode 100644
index 0000000..f047a6a
--- /dev/null
+++ b/test/data/android_desktop_mode/task_update_reset_events.pb.sha256
@@ -0,0 +1 @@
+1aca7da3154a8893d214444d10559d88e689d090e6d39206e30959aa2a2cd306
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/stdlib/android/desktop_mode_tests.py b/test/trace_processor/diff_tests/stdlib/android/desktop_mode_tests.py
index 6c16720..0570da9 100644
--- a/test/trace_processor/diff_tests/stdlib/android/desktop_mode_tests.py
+++ b/test/trace_processor/diff_tests/stdlib/android/desktop_mode_tests.py
@@ -108,3 +108,37 @@
         8966481546961,"[NULL]",8966481546961,3595287192,1000028,1110329
         """))
 
+  def test_android_desktop_mode_windows_statsd_events_reset_events(self):
+    return DiffTestBlueprint(
+        trace=DataPath('android_desktop_mode/task_update_reset_events.pb'),
+        query="""
+          INCLUDE PERFETTO MODULE android.desktop_mode;
+          SELECT * FROM android_desktop_mode_windows;
+          """,
+        out=Csv("""
+        "raw_add_ts","raw_remove_ts","ts","dur","instance_id","uid"
+        84164708379314,84188981730278,84164708379314,24273350964,1000054,1010210
+        84182861720998,84184961957530,84182861720998,2100236532,1000056,1010197
+        84190656246474,"[NULL]",84190656246474,663853800,1000054,1010210
+        84190656724094,"[NULL]",84190656724094,663376180,1000058,1010222
+        84199757126076,84223637163807,84199757126076,23880037731,1000054,1010210
+        84199757350156,84223637751006,84199757350156,23880400850,1000058,1010222
+        84204112441752,84208226333681,84204112441752,4113891929,1000062,1010226
+        84226052369131,84241418229490,84226052369131,15365860359,1000054,1010210
+        84226054551300,84241419846189,84226054551300,15365294889,1000058,1010222
+        84248341935751,"[NULL]",84248341935751,407771770,1000054,1010210
+        84248342227662,"[NULL]",84248342227662,407479859,1000058,1010222
+        84253290279911,84292320102806,84253290279911,39029822895,1000054,1010210
+        84253290608646,84292320892072,84253290608646,39030283426,1000058,1010222
+        84294338295719,84856791435520,84294338295719,562453139801,1000054,1010210
+        84294339318912,84859506938084,84294339318912,565167619172,1000058,1010222
+        84304813959094,84858368194309,84304813959094,553554235215,1000069,1010211
+        84335762434858,84852636055309,84335762434858,516873620451,1000070,1010297
+        84357340686822,84378879321354,84357340686822,21538634532,1000071,1010225
+        84361592237320,84363638663184,84361592237320,2046425864,1000072,1010317
+        84370549790954,84853627568534,84370549790954,483077777580,1000074,1010317
+        84575862070921,84643498791291,84575862070921,67636720370,1000075,1001000
+        84619864755554,84638100287708,84619864755554,18235532154,1000076,1010235
+        84782344478655,84804145589506,84782344478655,21801110851,1000077,1010238
+        """))
+
diff --git a/test/trace_processor/diff_tests/stdlib/sched/tests.py b/test/trace_processor/diff_tests/stdlib/sched/tests.py
index 1de62b5..a327125 100644
--- a/test/trace_processor/diff_tests/stdlib/sched/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/sched/tests.py
@@ -187,3 +187,33 @@
         538177,537492,537492
         538175,538174,524613
         """))
+
+  def test_sched_latency(self):
+    return DiffTestBlueprint(
+        trace=DataPath('android_boot.pftrace'),
+        query="""
+        INCLUDE PERFETTO MODULE sched.latency;
+
+        SELECT 
+          thread_state_id, 
+          sched_id, 
+          utid, 
+          runnable_latency_id, 
+          latency_dur
+        FROM sched_latency_for_running_interval
+        ORDER BY thread_state_id DESC
+        LIMIT 10;
+        """,
+        out=Csv("""
+        "thread_state_id","sched_id","utid","runnable_latency_id","latency_dur"
+        538199,269427,2,538191,91919
+        538197,269425,2,538191,91919
+        538195,269423,2,538191,91919
+        538190,269422,1330,538136,1437215
+        538188,269420,2,538088,826823
+        538184,269419,91,538176,131388
+        538181,269418,319,538178,4883
+        538179,269417,1022,524619,469849
+        538177,269416,319,537492,670736
+        538175,269415,91,538174,12532
+        """))
diff --git a/ui/src/base/hotkeys.ts b/ui/src/base/hotkeys.ts
index 17e3a00..85c194f 100644
--- a/ui/src/base/hotkeys.ts
+++ b/ui/src/base/hotkeys.ts
@@ -88,7 +88,9 @@
   | 'ArrowLeft'
   | 'ArrowRight'
   | '['
-  | ']';
+  | ']'
+  | ','
+  | '.';
 export type Key = Alphabet | Number | Special;
 export type Modifier =
   | ''
diff --git a/ui/src/core_plugins/track_utils/index.ts b/ui/src/core_plugins/track_utils/index.ts
index 369d2fe..e13d479 100644
--- a/ui/src/core_plugins/track_utils/index.ts
+++ b/ui/src/core_plugins/track_utils/index.ts
@@ -18,6 +18,7 @@
 import {AppImpl} from '../../core/app_impl';
 import {getTimeSpanOfSelectionOrVisibleWindow} from '../../public/utils';
 import {exists} from '../../base/utils';
+import {LONG, NUM, NUM_NULL} from '../../trace_processor/query_result';
 
 export default class implements PerfettoPlugin {
   static readonly id = 'perfetto.TrackUtils';
@@ -83,5 +84,57 @@
         id && ctx.workspace.getTrackById(id)?.pin();
       },
     });
+
+    ctx.commands.registerCommand({
+      id: 'perfetto.SelectNextTrackEvent',
+      name: 'Select next track event',
+      defaultHotkey: '.',
+      callback: async () => {
+        await selectAdjacentTrackEvent(ctx, 'next');
+      },
+    });
+
+    ctx.commands.registerCommand({
+      id: 'perfetto.SelectPreviousTrackEvent',
+      name: 'Select previous track event',
+      defaultHotkey: ',',
+      callback: async () => {
+        await selectAdjacentTrackEvent(ctx, 'prev');
+      },
+    });
   }
 }
+
+/**
+ * If a track event is currently selected, select the next or previous event on
+ * that same track chronologically ordered by `ts`.
+ */
+async function selectAdjacentTrackEvent(
+  ctx: Trace,
+  direction: 'next' | 'prev',
+) {
+  const selection = ctx.selection.selection;
+  if (selection.kind !== 'track_event') return;
+
+  const td = ctx.tracks.getTrack(selection.trackUri);
+  const dataset = td?.track.getDataset?.();
+  if (!dataset || !dataset.implements({id: NUM, ts: LONG})) return;
+
+  const windowFunc = direction === 'next' ? 'LEAD' : 'LAG';
+  const result = await ctx.engine.query(`
+      WITH
+        CTE AS (
+          SELECT
+            id,
+            ${windowFunc}(id) OVER (ORDER BY ts) AS resultId
+          FROM (${dataset.query()})
+        )
+      SELECT * FROM CTE WHERE id = ${selection.eventId}
+    `);
+  const resultId = result.maybeFirstRow({resultId: NUM_NULL})?.resultId;
+  if (!exists(resultId)) return;
+
+  ctx.selection.selectTrackEvent(selection.trackUri, resultId, {
+    scrollToSelection: true,
+  });
+}
diff --git a/ui/src/plugins/dev.perfetto.CpuSlices/cpu_slice_track.ts b/ui/src/plugins/dev.perfetto.CpuSlices/cpu_slice_track.ts
index 2c5b456..95e35b5 100644
--- a/ui/src/plugins/dev.perfetto.CpuSlices/cpu_slice_track.ts
+++ b/ui/src/plugins/dev.perfetto.CpuSlices/cpu_slice_track.ts
@@ -42,6 +42,7 @@
 import {Trace} from '../../public/trace';
 import {exists} from '../../base/utils';
 import {ThreadMap} from '../dev.perfetto.Thread/threads';
+import {Dataset, SourceDataset} from '../../trace_processor/dataset';
 
 export interface Data extends TrackData {
   // Slices are stored in a columnar fashion. All fields have the same length.
@@ -96,6 +97,21 @@
     this.lastRowId = it.firstRow({lastRowId: NUM}).lastRowId;
   }
 
+  getDataset(): Dataset | undefined {
+    return new SourceDataset({
+      src: 'select id, ts, dur, cpu from sched where utid != 0',
+      schema: {
+        id: NUM,
+        ts: LONG,
+        dur: LONG,
+      },
+      filter: {
+        col: 'cpu',
+        eq: this.cpu,
+      },
+    });
+  }
+
   async onUpdate({
     visibleWindow,
     resolution,