summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.bp433
-rw-r--r--Android.mk33
-rw-r--r--binder/com/google/android/startop/iorap/DexOptEvent.aidl20
-rw-r--r--binder/com/google/android/startop/iorap/IIorap.aidl10
-rw-r--r--binder/com/google/android/startop/iorap/JobScheduledEvent.aidl20
-rw-r--r--include/binder/app_launch_event.h54
-rw-r--r--include/binder/dexopt_event.h42
-rw-r--r--include/binder/job_scheduled_event.h59
-rw-r--r--include/binder/request_id.h8
-rw-r--r--include/binder/task_result.h11
-rw-r--r--iorapd.rc3
l---------seccomp_policy/prefetcherd.arm.policy1
-rw-r--r--seccomp_policy/prefetcherd.arm64.policy21
l---------seccomp_policy/prefetcherd.x86.policy1
l---------seccomp_policy/prefetcherd.x86_64.policy1
-rw-r--r--src/binder/iiorap_def.h5
-rw-r--r--src/binder/iiorap_impl.cc223
-rw-r--r--src/binder/iiorap_impl.h6
-rw-r--r--src/binder/package_change_observer.cc37
-rw-r--r--src/binder/package_change_observer.h42
-rw-r--r--src/binder/package_manager_remote.cc194
-rw-r--r--src/binder/package_manager_remote.h83
-rw-r--r--src/binder/package_version_map.cc117
-rw-r--r--src/binder/package_version_map.h83
-rw-r--r--src/common/async_pool.h91
-rw-r--r--src/common/cmd_utils.h170
-rw-r--r--src/common/expected.h8
-rw-r--r--src/common/loggers.h56
-rw-r--r--src/common/printer.h62
-rw-r--r--src/common/rx_async.h77
-rw-r--r--src/common/trace.h48
-rw-r--r--src/compiler/compiler.cc949
-rw-r--r--src/compiler/compiler.h65
-rw-r--r--src/compiler/main.cc207
-rw-r--r--src/db/app_component_name.h130
-rw-r--r--src/db/clean_up.cc115
-rw-r--r--src/db/clean_up.h54
-rw-r--r--src/db/file_models.cc181
-rw-r--r--src/db/file_models.h124
-rw-r--r--src/db/main.cc230
-rw-r--r--src/db/models.cc21
-rw-r--r--src/db/models.h1130
-rw-r--r--src/inode2filename/data_source.cc187
-rw-r--r--src/inode2filename/data_source.h74
-rw-r--r--src/inode2filename/inode.cc6
-rw-r--r--src/inode2filename/inode.h89
-rw-r--r--src/inode2filename/inode_resolver.cc207
-rw-r--r--src/inode2filename/inode_resolver.h121
-rw-r--r--src/inode2filename/inode_result.cc62
-rw-r--r--src/inode2filename/inode_result.h82
-rw-r--r--src/inode2filename/main.cc356
-rw-r--r--src/inode2filename/out_of_process_inode_resolver.cc425
-rw-r--r--src/inode2filename/out_of_process_inode_resolver.h44
-rw-r--r--src/inode2filename/search_directories.cc497
-rw-r--r--src/inode2filename/search_directories.h75
-rw-r--r--src/iorapd/main.cc47
-rw-r--r--src/maintenance/controller.cc620
-rw-r--r--src/maintenance/controller.h113
-rw-r--r--src/maintenance/db_cleaner.cc66
-rw-r--r--src/maintenance/db_cleaner.h34
-rw-r--r--src/maintenance/main.cc194
-rw-r--r--src/manager/event_manager.cc1101
-rw-r--r--src/manager/event_manager.h66
-rw-r--r--src/perfetto/perfetto_consumer.cc608
-rw-r--r--src/perfetto/perfetto_consumer.h35
-rw-r--r--src/perfetto/rx_producer.cc100
-rw-r--r--src/perfetto/rx_producer.h53
-rw-r--r--src/prefetcher/main.cc190
-rw-r--r--src/prefetcher/main_client.cc160
-rw-r--r--src/prefetcher/minijail.cc49
-rw-r--r--src/prefetcher/minijail.h23
-rw-r--r--src/prefetcher/prefetcher_daemon.cc1367
-rw-r--r--src/prefetcher/prefetcher_daemon.h130
-rw-r--r--src/prefetcher/read_ahead.cc435
-rw-r--r--src/prefetcher/read_ahead.h63
-rw-r--r--src/prefetcher/session.cc724
-rw-r--r--src/prefetcher/session.h236
-rw-r--r--src/prefetcher/session_manager.cc281
-rw-r--r--src/prefetcher/session_manager.h91
-rw-r--r--src/prefetcher/task_id.h39
-rw-r--r--src/serialize/TraceFile.proto47
-rw-r--r--src/serialize/arena_ptr.h76
-rw-r--r--src/serialize/protobuf_io.cc173
-rw-r--r--src/serialize/protobuf_io.h64
-rw-r--r--tests/src/compiler/compiler_test.cc162
-rw-r--r--tests/src/compiler/testdata/common_perfetto_trace.pbbin0 -> 70434 bytes
-rw-r--r--tests/src/compiler/testdata/common_perfetto_trace2.pbbin0 -> 41762 bytes
-rw-r--r--tests/src/compiler/testdata/common_textcache14756
-rw-r--r--tests/src/db/app_component_name_test.cc41
-rw-r--r--tests/src/inode2filename/search_directories_test.cc13
-rw-r--r--tests/src/maintenance/controller_test.cc157
-rw-r--r--tests/src/maintenance/testdata/test_sqlite.dbbin0 -> 32768 bytes
92 files changed, 29505 insertions, 259 deletions
diff --git a/Android.bp b/Android.bp
index e947946..138ba4b 100644
--- a/Android.bp
+++ b/Android.bp
@@ -61,7 +61,11 @@ cc_defaults {
*/
clang: true,
+ static_libs: ["libc++fs"],
shared_libs: ["libbase"],
+
+ // build all ioraps for host.
+ host_supported: true,
}
cc_defaults {
@@ -85,6 +89,9 @@ cc_defaults {
// libplatformprotos has an indirect dependency on full, causing compilation/linking
// errors if we use lite
"libprotobuf-cpp-full",
+
+ // phenotype flags support
+ "server_configurable_flags",
],
// srcs: [":libprotobuf-internal-protos"],
@@ -101,6 +108,9 @@ cc_library_static {
srcs: [
":iorap-aidl",
"src/binder/iiorap_impl.cc",
+ "src/binder/package_change_observer.cc",
+ "src/binder/package_manager_remote.cc",
+ "src/binder/package_version_map.cc",
],
shared_libs: [
"libbinder",
@@ -112,6 +122,7 @@ cc_library_static {
include_dirs: ["frameworks/native/aidl/binder"],
export_aidl_headers: true,
},
+
static_libs: [
"libplatformprotos", // android framework C++ protos.
],
@@ -120,10 +131,16 @@ cc_library_static {
cc_defaults {
name: "libiorap-manager-default-dependencies",
static_libs: [
+ "libiorap-binder",
"libiorap-perfetto",
+ "libiorap-prefetcher",
+ "libiorap-db",
+ "libiorap-maintenance",
],
defaults: [
"libiorap-perfetto-default-dependencies",
+ "libiorap-prefetcher-default-dependencies",
+ "libiorap-db-default-dependencies",
],
// Users of 'libiorap-manager' also need to include these defaults to avoid
// linking errors.
@@ -158,6 +175,13 @@ cc_binary {
init_rc: [
"iorapd.rc",
],
+ // iorapd fork+execs into iorap.prefetcherd and iorap.cmd.compiler
+ // maintenance used by tests
+ required: [
+ "iorap.cmd.compiler",
+ "iorap.prefetcherd",
+ "iorap.cmd.maintenance",
+ ],
}
cc_library_static {
@@ -205,14 +229,53 @@ cc_test {
defaults: [
"iorap-default-flags",
"iorap-default-dependencies",
+ "libiorap-compiler-default-dependencies",
],
srcs: [
- "tests/src/**/*.cc",
+ "tests/src/binder/*.cc",
+ "tests/src/inode2filename/*.cc",
+ "tests/src/log/*.cc",
+ "tests/src/tmp/*.cc",
+ ],
+ data: [
+ "tests/src/compiler/testdata/*",
],
cflags: ["-O2", "-UNDEBUG"],
// TODO: we should probably have per-component tests.
static_libs: ["libgmock_main", "libgmock", "libgtest", "libiorap-inode2filename"],
+
+}
+
+
+cc_test_host {
+ name: "iorapd-host-tests",
+ gtest: false, // we use gtest *and* gmock.
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-compiler-default-dependencies",
+ "libiorap-maintenance-default-dependencies",
+ ],
+ srcs: [
+ "tests/src/compiler/*.cc",
+ "tests/src/db/*.cc",
+ "tests/src/maintenance/*.cc",
+ ],
+ data: [
+ "tests/src/compiler/testdata/*",
+ "tests/src/maintenance/testdata/*",
+ ],
+ cflags: ["-O2", "-UNDEBUG"],
+
+ // TODO: we should probably have per-component tests.
+ static_libs: [
+ "libgmock_main",
+ "libgmock",
+ "libgtest",
+ "libiorap-compiler",
+ "libiorap-maintenance",
+ ],
}
filegroup {
@@ -294,3 +357,371 @@ cc_binary {
"perfetto_trace_protos",
],
}
+
+// Static libraries cannot export their dependencies,
+// the current convention is to use an extra 'defaults' rule for statics
+// to bring in all the dependencies.
+cc_defaults {
+ name: "libiorap-compiler-default-dependencies",
+
+ defaults: [
+ // use the perfetto namespace
+ "libiorap-perfetto-default-dependencies",
+ // use the inode2filename namespace
+ "libiorap-serialize-default-dependencies", // uses but does not re-export serialize.
+ ],
+
+ // Some of the libperfetto header typedefs leak out into iorap.
+ // Avoids compilation #include errors.
+ // TODO: clean this up, the headers should not leak out (maybe all we need is a PerfettoConsumer
+ // forward declaration?).
+ include_dirs: [],
+ // Various perfetto protos are used directly by iorap.
+ //
+ // Furthermore, we need this regardless to avoid linking errors when linking
+ // libiorap-compiler.a into the main cc_binary rule.
+ static_libs: [
+ "libiorap-perfetto",
+ // "perfetto_trace_protos",
+ "libiorap-inode2filename",
+ "libiorap-serialize",
+ ],
+
+ shared_libs: [
+ // Not part of true dependencies: Users of 'libiorap-compiler' do not link against
+ // libperfetto.
+ // We only put this to avoid linking errors when building iorapd.
+ // TODO: can we split iorapd into libiorapd-main that doesn't link against libperfetto?
+ // only the last cc_binary should need the full transitive closure of the dependency graph.
+ ]
+}
+
+cc_library_static {
+ name: "libiorap-compiler",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-compiler-default-dependencies",
+ ],
+
+ srcs: [
+ "src/compiler/**/*.cc",
+ ],
+}
+
+cc_binary {
+ name: "iorap.cmd.compiler",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-compiler-default-dependencies",
+ ],
+ shared_libs: [],
+ include_dirs: [],
+ srcs: [
+ "src/compiler/**/*.cc",
+ ],
+ // Easier debugging. TODO: make a separate debug config.
+ // XX: Using -O0 seems to completely hide some errors.
+ cflags: ["-O2", "-UNDEBUG", "-DIORAP_COMPILER_MAIN=1"],
+ sanitize: {
+ undefined: true,
+ all_undefined: true,
+ // Pretty print when ubsan detects a problem.
+ // Otherwise it just calls abort().
+
+/*
+ diag: {
+ undefined: true,
+ },
+ */ // don't use the diag when you want it to crash.
+ },
+
+ static_libs: [
+ ],
+ required: [
+ "iorap.inode2filename",
+ ],
+}
+
+// Static libraries cannot export their dependencies,
+// the current convention is to use an extra 'defaults' rule for statics
+// to bring in all the dependencies.
+cc_defaults {
+ name: "libiorap-serialize-default-dependencies",
+
+ defaults: [
+ ],
+
+ include_dirs: [],
+ static_libs: [
+ ],
+ shared_libs: [
+ ],
+ // Above intentionally left empty.
+ srcs: [
+ "src/serialize/**/*.proto",
+ ],
+}
+
+cc_library_static {
+ name: "libiorap-serialize",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-serialize-default-dependencies",
+ ],
+
+ srcs: [
+ "src/serialize/**/*.cc",
+ ],
+}
+
+
+// Static libraries cannot export their dependencies,
+// the current convention is to use an extra 'defaults' rule for statics
+// to bring in all the dependencies.
+cc_defaults {
+ name: "libiorap-prefetcher-default-dependencies",
+
+ defaults: [
+ ],
+
+ include_dirs: [],
+ static_libs: [
+ "libiorap-serialize",
+ ],
+ shared_libs: [
+ "libminijail",
+ ],
+
+ // disable mac builds because libminijail doesn't work there
+ target: {
+ darwin: {
+ enabled: false,
+ },
+ },
+}
+
+cc_library_static {
+ name: "libiorap-prefetcher",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-prefetcher-default-dependencies",
+ "libiorap-serialize-default-dependencies",
+ ],
+
+ srcs: [
+ "src/prefetcher/**/*.cc",
+ ],
+}
+
+cc_binary {
+ name: "iorap.prefetcherd",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-prefetcher-default-dependencies",
+ "libiorap-serialize-default-dependencies",
+ ],
+ shared_libs: [],
+ include_dirs: [],
+ srcs: [
+ "src/prefetcher/**/*.cc",
+ ],
+ // Easier debugging. TODO: make a separate debug config.
+ // XX: Using -O0 seems to completely hide some errors.
+ cflags: ["-O2", "-UNDEBUG", "-DIORAP_PREFETCHER_MAIN=1"],
+ sanitize: {
+ undefined: true,
+ all_undefined: true,
+ // Pretty print when ubsan detects a problem.
+ // Otherwise it just calls abort().
+
+/*
+ diag: {
+ undefined: true,
+ },
+ */ // don't use the diag when you want it to crash.
+ },
+
+ static_libs: [
+ ],
+}
+
+cc_binary {
+ name: "iorap.cmd.prefetcher.client",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-prefetcher-default-dependencies",
+ "libiorap-serialize-default-dependencies",
+ ],
+ shared_libs: [],
+ include_dirs: [],
+ srcs: [
+ "src/prefetcher/**/*.cc",
+ ],
+ // Easier debugging. TODO: make a separate debug config.
+ // XX: Using -O0 seems to completely hide some errors.
+ cflags: ["-O2", "-UNDEBUG", "-DIORAP_PREFETCHER_MAIN_CLIENT=1"],
+ sanitize: {
+ undefined: true,
+ all_undefined: true,
+ // Pretty print when ubsan detects a problem.
+ // Otherwise it just calls abort().
+
+/*
+ diag: {
+ undefined: true,
+ },
+ */ // don't use the diag when you want it to crash.
+ },
+
+ static_libs: [
+ ],
+}
+
+prebuilt_etc {
+ name: "iorap.prefetcherd.policy",
+ sub_dir: "seccomp_policy",
+ arch: {
+ arm: {
+ src: "seccomp_policy/prefetcherd.arm.policy"
+ },
+ arm64: {
+ src: "seccomp_policy/prefetcherd.arm64.policy"
+ },
+ x86: {
+ src: "seccomp_policy/prefetcherd.x86.policy"
+ },
+ x86_64: {
+ src: "seccomp_policy/prefetcherd.x86_64.policy"
+ },
+ },
+ required: [
+ "crash_dump.policy",
+ ],
+}
+
+// Static libraries cannot export their dependencies,
+// the current convention is to use an extra 'defaults' rule for statics
+// to bring in all the dependencies.
+cc_defaults {
+ name: "libiorap-db-default-dependencies",
+
+ defaults: [
+ ],
+
+ include_dirs: [],
+ static_libs: [
+ ],
+ shared_libs: [
+ "libsqlite",
+ ],
+}
+
+cc_library_static {
+ name: "libiorap-db",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-db-default-dependencies",
+ ],
+
+ srcs: [
+ "src/db/**/*.cc",
+ ],
+}
+
+cc_binary {
+ name: "iorap.cmd.db",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-db-default-dependencies",
+ ],
+ shared_libs: [],
+ include_dirs: [],
+ srcs: [
+ "src/db/**/*.cc",
+ ],
+ // Easier debugging. TODO: make a separate debug config.
+ // XX: Using -O0 seems to completely hide some errors.
+ cflags: ["-O2", "-UNDEBUG", "-DIORAP_DB_MAIN=1"],
+ sanitize: {
+ undefined: true,
+ all_undefined: true,
+ // Pretty print when ubsan detects a problem.
+ // Otherwise it just calls abort().
+
+/*
+ diag: {
+ undefined: true,
+ },
+ */ // don't use the diag when you want it to crash.
+ },
+
+ static_libs: [
+ ],
+}
+
+cc_defaults {
+ name: "libiorap-maintenance-default-dependencies",
+
+ defaults: [
+ "libiorap-compiler-default-dependencies",
+ "libiorap-db-default-dependencies",
+ "libiorap-prefetcher-default-dependencies",
+ ],
+
+ include_dirs: [],
+
+ static_libs: [
+ "libiorap-binder",
+ "libiorap-compiler",
+ "libiorap-db",
+ "libiorap-prefetcher",
+ ],
+
+ shared_libs: []
+}
+
+cc_library_static {
+ name: "libiorap-maintenance",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-maintenance-default-dependencies",
+ ],
+
+ srcs: [
+ "src/maintenance/*.cc",
+ ],
+}
+
+cc_binary {
+ name: "iorap.cmd.maintenance",
+ defaults: [
+ "iorap-default-flags",
+ "iorap-default-dependencies",
+ "libiorap-maintenance-default-dependencies",
+ ],
+ shared_libs: [],
+ include_dirs: [],
+ srcs: [
+ "src/maintenance/*.cc",
+ ],
+ cflags: ["-O2", "-UNDEBUG", "-DIORAP_MAINTENANCE_MAIN=1"],
+ sanitize: {
+ undefined: true,
+ all_undefined: true,
+
+ diag: {
+ undefined: true,
+ },
+ },
+
+ static_libs: [],
+}
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..4e9f5fd
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2019 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
+#
+# http://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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+# Build every binary target in system/iorap
+.PHONY: iorap-nall
+iorap-nall: \
+ iorapd iorap.inode2filename iorapd-tests iorap.cmd.perfetto \
+ iorap.cmd.compiler
+
+# Build every binary target required for
+# frameworks/base/startop/scripts/app_startup_runner
+# to work with iorap.
+.PHONY: iorap-app-startup-runner
+iorap-app-startup-runner: \
+ iorapd iorap.inode2filename \
+ iorap.cmd.compiler
+
+
diff --git a/binder/com/google/android/startop/iorap/DexOptEvent.aidl b/binder/com/google/android/startop/iorap/DexOptEvent.aidl
new file mode 100644
index 0000000..a4e175b
--- /dev/null
+++ b/binder/com/google/android/startop/iorap/DexOptEvent.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2020 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
+ *
+ * http://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.
+ */
+
+package com.google.android.startop.iorap;
+
+/** @hide */
+parcelable DexOptEvent cpp_header "binder/dexopt_event.h";
diff --git a/binder/com/google/android/startop/iorap/IIorap.aidl b/binder/com/google/android/startop/iorap/IIorap.aidl
index fe91d15..05faefe 100644
--- a/binder/com/google/android/startop/iorap/IIorap.aidl
+++ b/binder/com/google/android/startop/iorap/IIorap.aidl
@@ -18,12 +18,14 @@ package com.google.android.startop.iorap;
import com.google.android.startop.iorap.ITaskListener;
-import com.google.android.startop.iorap.PackageEvent;
-import com.google.android.startop.iorap.AppLaunchEvent;
import com.google.android.startop.iorap.AppIntentEvent;
+import com.google.android.startop.iorap.AppLaunchEvent;
+import com.google.android.startop.iorap.DexOptEvent;
+import com.google.android.startop.iorap.JobScheduledEvent;
+import com.google.android.startop.iorap.PackageEvent;
+import com.google.android.startop.iorap.RequestId;
import com.google.android.startop.iorap.SystemServiceEvent;
import com.google.android.startop.iorap.SystemServiceUserEvent;
-import com.google.android.startop.iorap.RequestId;
/**
* IIOrap is a client interface to the input/output readahead and pin daemon (iorapd).
@@ -109,6 +111,8 @@ oneway interface IIorap {
// void onActivityHintEvent(in RequestId request, in ActivityHintEvent event);
void onAppLaunchEvent(in RequestId request, in AppLaunchEvent event);
+ void onDexOptEvent(in RequestId request, in DexOptEvent event);
+ void onJobScheduledEvent(in RequestId request, in JobScheduledEvent event);
void onPackageEvent(in RequestId request, in PackageEvent event);
void onAppIntentEvent(in RequestId request, in AppIntentEvent event);
void onSystemServiceEvent(in RequestId request, in SystemServiceEvent event);
diff --git a/binder/com/google/android/startop/iorap/JobScheduledEvent.aidl b/binder/com/google/android/startop/iorap/JobScheduledEvent.aidl
new file mode 100644
index 0000000..d4b5454
--- /dev/null
+++ b/binder/com/google/android/startop/iorap/JobScheduledEvent.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 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
+ *
+ * http://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.
+ */
+
+package com.google.android.startop.iorap;
+
+/** @hide */
+parcelable JobScheduledEvent cpp_header "binder/job_scheduled_event.h";
diff --git a/include/binder/app_launch_event.h b/include/binder/app_launch_event.h
index 784db16..0127e09 100644
--- a/include/binder/app_launch_event.h
+++ b/include/binder/app_launch_event.h
@@ -31,7 +31,7 @@ namespace binder {
// These protos are part of the iorapd binder ABI, alias them for easier usage.
using IntentProto = ::android::content::IntentProto;
-using ActivityRecordProto = ::com::android::server::am::ActivityRecordProto;
+using ActivityRecordProto = ::com::android::server::wm::ActivityRecordProto;
struct AppLaunchEvent : public ::android::Parcelable {
// Index position matters: Keep up-to-date with AppLaunchEvent.java sTypes field.
@@ -42,6 +42,7 @@ struct AppLaunchEvent : public ::android::Parcelable {
kActivityLaunched = 2,
kActivityLaunchFinished = 3,
kActivityLaunchCancelled = 4,
+ kReportFullyDrawn = 5,
};
enum class Temperature : int32_t {
@@ -59,18 +60,45 @@ struct AppLaunchEvent : public ::android::Parcelable {
Temperature temperature{Temperature::kUninitialized};
// kActivityLaunch*. Can be null in kActivityLaunchCancelled.
std::unique_ptr<ActivityRecordProto> activity_record_proto;
+ // kIntentStarted, kActivityLaunchFinished and kReportFullyDrawn only.
+ int64_t timestamp_nanos{-1};
AppLaunchEvent() = default;
AppLaunchEvent(Type type,
int64_t sequence_id,
std::unique_ptr<IntentProto> intent_proto = nullptr,
Temperature temperature = Temperature::kUninitialized,
- std::unique_ptr<ActivityRecordProto> activity_record_proto = nullptr)
+ std::unique_ptr<ActivityRecordProto> activity_record_proto = nullptr,
+ int64_t timestamp_nanos = -1)
: type(type),
sequence_id(sequence_id),
intent_proto(std::move(intent_proto)),
temperature(temperature),
- activity_record_proto(std::move(activity_record_proto)) {
+ activity_record_proto(std::move(activity_record_proto)),
+ timestamp_nanos(timestamp_nanos) {
+ }
+
+ AppLaunchEvent(const AppLaunchEvent& other) {
+ *this = other;
+ }
+
+ AppLaunchEvent& operator=(const AppLaunchEvent& other) {
+ if (&other == this) {
+ return *this;
+ }
+
+ type = other.type;
+ sequence_id = other.sequence_id;
+ if (other.intent_proto != nullptr) {
+ intent_proto.reset(new IntentProto(*other.intent_proto));
+ }
+ temperature = other.temperature;
+ if (other.activity_record_proto != nullptr) {
+ activity_record_proto.reset(new ActivityRecordProto(*other.activity_record_proto));
+ }
+ timestamp_nanos = other.timestamp_nanos;
+
+ return *this;
}
::android::status_t readFromParcel(const android::Parcel* parcel) override {
@@ -92,6 +120,7 @@ struct AppLaunchEvent : public ::android::Parcelable {
switch (type) {
case Type::kIntentStarted:
PARCEL_READ_OR_RETURN(readIntent, parcel);
+ PARCEL_READ_OR_RETURN(parcel->readInt64, &timestamp_nanos);
break;
case Type::kIntentFailed:
// No extra arguments.
@@ -105,10 +134,15 @@ struct AppLaunchEvent : public ::android::Parcelable {
}
case Type::kActivityLaunchFinished:
PARCEL_READ_OR_RETURN(readActivityRecordProto, parcel);
+ PARCEL_READ_OR_RETURN(parcel->readInt64, &timestamp_nanos);
break;
case Type::kActivityLaunchCancelled:
PARCEL_READ_OR_RETURN(readActivityRecordProtoNullable, parcel);
break;
+ case Type::kReportFullyDrawn:
+ PARCEL_READ_OR_RETURN(readActivityRecordProto, parcel);
+ PARCEL_READ_OR_RETURN(parcel->readInt64, &timestamp_nanos);
+ break;
default:
return android::BAD_VALUE;
}
@@ -131,6 +165,7 @@ struct AppLaunchEvent : public ::android::Parcelable {
switch (type) {
case Type::kIntentStarted:
PARCEL_WRITE_OR_RETURN(writeIntent, parcel);
+ PARCEL_WRITE_OR_RETURN(parcel->writeInt64, timestamp_nanos);
break;
case Type::kIntentFailed:
// No extra arguments.
@@ -141,10 +176,15 @@ struct AppLaunchEvent : public ::android::Parcelable {
break;
case Type::kActivityLaunchFinished:
PARCEL_WRITE_OR_RETURN(writeActivityRecordProto, parcel);
+ PARCEL_WRITE_OR_RETURN(parcel->writeInt64, timestamp_nanos);
break;
case Type::kActivityLaunchCancelled:
PARCEL_WRITE_OR_RETURN(writeActivityRecordProtoNullable, parcel);
break;
+ case Type::kReportFullyDrawn:
+ PARCEL_WRITE_OR_RETURN(writeActivityRecordProtoNullable, parcel);
+ PARCEL_WRITE_OR_RETURN(parcel->writeInt64, timestamp_nanos);
+ break;
default:
DCHECK(false) << "attempted to write an uninitialized AppLaunchEvent to Parcel";
return android::BAD_VALUE;
@@ -320,6 +360,9 @@ inline std::ostream& operator<<(std::ostream& os, const AppLaunchEvent::Type& ty
case AppLaunchEvent::Type::kActivityLaunchFinished:
os << "kActivityLaunchFinished";
break;
+ case AppLaunchEvent::Type::kReportFullyDrawn:
+ os << "kReportFullyDrawn";
+ break;
default:
os << "(unknown)";
}
@@ -378,6 +421,11 @@ inline std::ostream& operator<<(std::ostream& os, const AppLaunchEvent& e) {
// title or component name.
os << "'" << e.activity_record_proto->identifier().title() << "'";
}
+ os << ",";
+
+ os << "timestamp_nanos=" << e.timestamp_nanos << ",";
+ os << ",";
+
os << "}";
return os;
diff --git a/include/binder/dexopt_event.h b/include/binder/dexopt_event.h
new file mode 100644
index 0000000..cb506f4
--- /dev/null
+++ b/include/binder/dexopt_event.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2020 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
+ *
+ * http://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.
+ */
+
+#ifndef IORAP_BINDER_DEXOPT_EVENT_H_
+#define IORAP_BINDER_DEXOPT_EVENT_H_
+
+#include "binder/common.h"
+#include "binder/auto_parcelable.h"
+#include "common/introspection.h"
+
+namespace iorap {
+namespace binder {
+
+struct DexOptEvent : public AutoParcelable<DexOptEvent> {
+ enum class Type : int32_t {
+ kPackageUpdate = 0,
+ };
+
+ Type type;
+ std::string package_name;
+};
+
+IORAP_INTROSPECT_ADAPT_STRUCT(DexOptEvent, type, package_name);
+
+}
+}
+IORAP_JAVA_NAMESPACE_BINDER_TYPEDEF(DexOptEvent)
+
+#endif // IORAP_BINDER_DEXOPT_EVENT_H_
diff --git a/include/binder/job_scheduled_event.h b/include/binder/job_scheduled_event.h
new file mode 100644
index 0000000..f85f39b
--- /dev/null
+++ b/include/binder/job_scheduled_event.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2018 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
+ *
+ * http://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.
+ */
+
+#ifndef IORAP_BINDER_JOB_SCHEDULED_EVENT_H_
+#define IORAP_BINDER_JOB_SCHEDULED_EVENT_H_
+
+#include "binder/common.h"
+#include "binder/auto_parcelable.h"
+#include "common/introspection.h"
+
+namespace iorap {
+namespace binder {
+
+struct JobScheduledEvent : public AutoParcelable<JobScheduledEvent> {
+ enum class Type : int32_t {
+ kStartJob = 0,
+ kStopJob = 1,
+ };
+
+ Type type;
+ int32_t job_id;
+
+ enum class Sort : int32_t {
+ kIdleMaintenance = 0,
+ };
+
+ Sort sort;
+
+ constexpr bool operator==(const JobScheduledEvent& other) const {
+ return type == other.type
+ && job_id == other.job_id
+ && sort == other.sort;
+ }
+
+ constexpr bool operator!=(const JobScheduledEvent& other) const {
+ return !(*this == other);
+ }
+};
+
+IORAP_INTROSPECT_ADAPT_STRUCT(JobScheduledEvent, type, job_id, sort);
+
+}
+}
+IORAP_JAVA_NAMESPACE_BINDER_TYPEDEF(JobScheduledEvent)
+
+#endif // IORAP_BINDER_JOB_SCHEDULED_EVENT_H_
diff --git a/include/binder/request_id.h b/include/binder/request_id.h
index c41ff3c..71a2edd 100644
--- a/include/binder/request_id.h
+++ b/include/binder/request_id.h
@@ -25,6 +25,14 @@ namespace binder {
struct RequestId : public AutoParcelable<RequestId> {
int64_t request_id;
+
+ constexpr bool operator==(const RequestId& other) const {
+ return request_id == other.request_id;
+ }
+
+ constexpr bool operator!=(const RequestId& other) const {
+ return !(*this == other);
+ }
};
IORAP_INTROSPECT_ADAPT_STRUCT(RequestId, request_id);
diff --git a/include/binder/task_result.h b/include/binder/task_result.h
index 3fc3ff9..b060f3f 100644
--- a/include/binder/task_result.h
+++ b/include/binder/task_result.h
@@ -34,6 +34,17 @@ struct TaskResult : public AutoParcelable<TaskResult> {
};
State state;
+
+ TaskResult() = default;
+ explicit TaskResult(State state) : state(state) {}
+
+ constexpr bool operator==(const TaskResult& other) const {
+ return state == other.state;
+ }
+
+ constexpr bool operator!=(const TaskResult& other) const {
+ return !(*this == other);
+ }
};
IORAP_INTROSPECT_ADAPT_STRUCT(TaskResult, state);
diff --git a/iorapd.rc b/iorapd.rc
index e48a04a..8f8e014 100644
--- a/iorapd.rc
+++ b/iorapd.rc
@@ -16,6 +16,7 @@ service iorapd /system/bin/iorapd
class main
user iorapd
group iorapd
+ capabilities DAC_READ_SEARCH
writepid /dev/cpuset/system-background/tasks
# TODO: should this be something else like performance/tasks?
# the main 'activity hint' thread needs to be fairly high priority to kick off
@@ -26,4 +27,4 @@ on property:ro.iorapd.enable=false
on post-fs-data
# Create directory for iorapd (see iorapd_data_file in selinux file_contexts).
- mkdir /data/misc/iorapd/ 0770 iorapd iorapd
+ mkdir /data/misc/iorapd/ 0750 iorapd system
diff --git a/seccomp_policy/prefetcherd.arm.policy b/seccomp_policy/prefetcherd.arm.policy
new file mode 120000
index 0000000..a4642af
--- /dev/null
+++ b/seccomp_policy/prefetcherd.arm.policy
@@ -0,0 +1 @@
+prefetcherd.arm64.policy \ No newline at end of file
diff --git a/seccomp_policy/prefetcherd.arm64.policy b/seccomp_policy/prefetcherd.arm64.policy
new file mode 100644
index 0000000..a796ad1
--- /dev/null
+++ b/seccomp_policy/prefetcherd.arm64.policy
@@ -0,0 +1,21 @@
+# Copyright (C) 2019 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
+#
+# http://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.
+
+# main usage: fadvise to prefetch data
+fadvise64: 1
+
+# bionic's fdsan requires this
+getrlimit: 1
+
+@include /system/etc/seccomp_policy/crash_dump.arm64.policy
diff --git a/seccomp_policy/prefetcherd.x86.policy b/seccomp_policy/prefetcherd.x86.policy
new file mode 120000
index 0000000..a4642af
--- /dev/null
+++ b/seccomp_policy/prefetcherd.x86.policy
@@ -0,0 +1 @@
+prefetcherd.arm64.policy \ No newline at end of file
diff --git a/seccomp_policy/prefetcherd.x86_64.policy b/seccomp_policy/prefetcherd.x86_64.policy
new file mode 120000
index 0000000..a4642af
--- /dev/null
+++ b/seccomp_policy/prefetcherd.x86_64.policy
@@ -0,0 +1 @@
+prefetcherd.arm64.policy \ No newline at end of file
diff --git a/src/binder/iiorap_def.h b/src/binder/iiorap_def.h
index 0c1eac8..5763380 100644
--- a/src/binder/iiorap_def.h
+++ b/src/binder/iiorap_def.h
@@ -29,6 +29,9 @@ FN_BEGIN(::com::google::android::startup::iorap::,IIorap)
FN(setTaskListener, (const ::android::sp<::com::google::android::startop::iorap::,ITaskListener,>&,listener)) /*NOLINT*/ \
FN(onAppLaunchEvent,(const ::com::google::android::startop::iorap::,RequestId,&,request), \
(const ::com::google::android::startop::iorap::,AppLaunchEvent,&,event)) \
+FN(onJobScheduledEvent, \
+ (const ::com::google::android::startop::iorap::,RequestId,&,request), \
+ (const ::com::google::android::startop::iorap::,JobScheduledEvent,&,event)) \
FN(onPackageEvent, (const ::com::google::android::startop::iorap::,RequestId,&,request), \
(const ::com::google::android::startop::iorap::,PackageEvent,&,event)) \
FN(onAppIntentEvent,(const ::com::google::android::startop::iorap::,RequestId,&,request), \
@@ -39,6 +42,8 @@ FN(onSystemServiceEvent,
FN(onSystemServiceUserEvent, \
(const ::com::google::android::startop::iorap::,RequestId,&,request), \
(const ::com::google::android::startop::iorap::,SystemServiceUserEvent,&,event))\
+FN(onDexOptEvent, (const ::com::google::android::startop::iorap::,RequestId,&,request), \
+ (const ::com::google::android::startop::iorap::,DexOptEvent,&,event)) \
FN_END() \
// Convenience macros to unpack the 2nd parameter from IIORAP_IFACE_DEF#FN calls.
diff --git a/src/binder/iiorap_impl.cc b/src/binder/iiorap_impl.cc
index a6f6409..de5a55d 100644
--- a/src/binder/iiorap_impl.cc
+++ b/src/binder/iiorap_impl.cc
@@ -24,6 +24,11 @@
#include <binder/BinderService.h>
#include <binder/IPCThreadState.h>
#include <include/binder/request_id.h>
+#include <utils/Printer.h>
+
+#include <codecvt>
+#include <locale>
+#include <utility>
/*
* Definitions for the IIorap binder native service implementation.
@@ -76,10 +81,42 @@ static std::atomic<bool> s_service_params_ready_{false};
static ServiceParams s_service_params_;
static std::atomic<ServiceParams*> s_service_params_atomic_;
+// Convert an android::String16 (UTF-16) to a UTF-8 std::string.
+static std::string String16ToStdString(const ::android::String16& s16) {
+ std::u16string u16{s16.string()};
+ std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert;
+
+ std::string res = convert.to_bytes(u16);
+ return res;
+}
+
} // namespace anonymous
class IIorapImpl::Impl {
+ // ITaskListener implementation for iorap::manager::EventManager.
+ struct EventManagerTaskCallbacks : public iorap::manager::TaskResultCallbacks {
+ explicit EventManagerTaskCallbacks(iorap::borrowed<IIorapImpl::Impl*> impl) {
+ CHECK(impl != nullptr);
+ impl_ = impl;
+ }
+
+ virtual void OnProgress(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) override {
+ impl_->ReplyWithResult(request_id, /*completed*/false, std::move(task_result));
+ }
+ virtual void OnComplete(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) override {
+ impl_->ReplyWithResult(request_id, /*completed*/true, std::move(task_result));
+ }
+
+ virtual ~EventManagerTaskCallbacks() {}
+
+ iorap::borrowed<IIorapImpl::Impl*> impl_;
+ };
+
public:
+ ~Impl() {
+ package_manager_->UnregisterPackageChangeObserver(package_change_observer_);
+ }
+
void SetTaskListener(const ::android::sp<ITaskListener>& listener) {
::android::sp<ITaskListener> old_listener = listener_;
if (old_listener != nullptr && listener != nullptr) {
@@ -93,7 +130,7 @@ class IIorapImpl::Impl {
if (listener == nullptr) {
// No listener. Cannot send anything back to the client.
// This could be normal, e.g. client had set listener to null before disconnecting.
- LOG(WARNING) << "Drop result, no listener registered.";
+ LOG(DEBUG) << "Drop result, no listener registered.";
// TODO: print the result with ostream operator<<
return;
}
@@ -111,6 +148,26 @@ class IIorapImpl::Impl {
}
}
+ void ReplyWithResult(const RequestId& request_id, bool completed, TaskResult result) {
+ ::android::sp<ITaskListener> listener = listener_;
+ if (listener == nullptr) {
+ // No listener. Cannot send anything back to the client.
+ // This could be normal, e.g. client had set listener to null before disconnecting.
+ LOG(DEBUG) << "Drop result, no listener registered.";
+ // TODO: print the result with ostream operator<<
+ return;
+ }
+
+ // TODO: verbose, not info.
+ if (completed) {
+ LOG(VERBOSE) << "ITaskListener::onComplete (request_id=" << request_id.request_id << ")";
+ listener->onComplete(request_id, result);
+ } else {
+ LOG(VERBOSE) << "ITaskListener::onProgress (request_id=" << request_id.request_id << ")";
+ listener->onProgress(request_id, result);
+ }
+ }
+
bool OnAppLaunchEvent(const RequestId& request_id,
const AppLaunchEvent& event) {
if (MaybeHandleFakeBehavior(request_id)) {
@@ -120,6 +177,89 @@ class IIorapImpl::Impl {
return service_params_.event_manager_->OnAppLaunchEvent(request_id, event);
}
+ bool OnDexOptEvent(const RequestId& request_id, const DexOptEvent& event) {
+ if (MaybeHandleFakeBehavior(request_id)) {
+ return true;
+ }
+
+ return service_params_.event_manager_->OnDexOptEvent(request_id, event);
+ }
+
+ bool OnJobScheduledEvent(const RequestId& request_id,
+ const JobScheduledEvent& event) {
+ if (MaybeHandleFakeBehavior(request_id)) {
+ return true;
+ }
+
+ return service_params_.event_manager_->OnJobScheduledEvent(request_id, event);
+ }
+
+ void Dump(/*borrow*/::android::Printer& printer,
+ const ::android::Vector<::android::String16>& args) {
+
+ if (args.size() == 0) {
+ service_params_.event_manager_->Dump(/*borrow*/printer);
+ return;
+ }
+
+ ::android::String16 arg_prev;
+ for (const ::android::String16& arg : args) {
+ bool unknown = false;
+ if (arg == ::android::String16("--all") || arg == ::android::String16("-a")) {
+ // using 'dumpsys' or 'bugreport' passes a single '-a' flag to this function.
+ service_params_.event_manager_->Dump(/*borrow*/printer);
+ } else if (arg == ::android::String16("--refresh-properties")) {
+ service_params_.event_manager_->RefreshSystemProperties(/*borrow*/printer);
+ printer.printLine("System properties refreshed.");
+ } else if (arg == ::android::String16("--compile-package")) {
+ // Intentionally left blank.
+ } else if (arg_prev == ::android::String16("--compile-package")) {
+ std::string package_name = String16ToStdString(arg);
+
+ if (!service_params_.event_manager_->CompilePackage(/*borrow*/printer, package_name)) {
+ printer.printFormatLine("Failed to compile package %s.", package_name.c_str());
+ } else {
+ printer.printFormatLine("Package %s compiled.", package_name.c_str());
+ }
+ } else if (arg == ::android::String16("--purge-package")) {
+ // Intentionally left blank.
+ } else if (arg_prev == ::android::String16("--purge-package")) {
+ std::string package_name = String16ToStdString(arg);
+
+ if (!service_params_.event_manager_->PurgePackage(/*borrow*/printer, package_name)) {
+ printer.printFormatLine("Failed to purge package %s.", package_name.c_str());
+ } else {
+ printer.printFormatLine("Package %s purged.", package_name.c_str());
+ }
+ } else {
+ unknown = true;
+ }
+
+ if (unknown && arg != ::android::String16("--help")) {
+ printer.printLine("Invalid arguments.");
+ printer.printLine("");
+
+ printer.printLine("Arguments were:");
+ for (const ::android::String16& arg16 : args) {
+ printer.printFormatLine(" '%s'", String16ToStdString(arg16).c_str());
+ }
+ printer.printLine("");
+ }
+
+ if (unknown || arg == ::android::String16("--help")) {
+ printer.printLine("Iorapd dumpsys commands:");
+ printer.printLine(" (none),--all,-a: Print state information for debugging iorapd.");
+ printer.printLine(" --help: Display this help menu");
+ printer.printLine(" --compile-package <name>: Compile single package on device");
+ printer.printLine(" --purge-package <name>: Delete database entries/files for package");
+ printer.printLine(" --refresh-properties: Refresh system properties");
+ return;
+ }
+
+ arg_prev = arg;
+ }
+ }
+
void HandleFakeBehavior(const RequestId& request_id) {
DCHECK(service_params_.fake_);
@@ -141,11 +281,36 @@ class IIorapImpl::Impl {
::android::sp<ITaskListener> listener_;
- Impl(ServiceParams p) : service_params_{std::move(p)} {
+ Impl(ServiceParams p) : service_params_{std::move(p)}, event_manager_callbacks_{new EventManagerTaskCallbacks{this}} {
CHECK(service_params_.event_manager_ != nullptr);
+
+ service_params_.event_manager_->SetTaskResultCallbacks(
+ std::static_pointer_cast<manager::TaskResultCallbacks>(event_manager_callbacks_));
+
+ // Init the package change observer.
+ package_manager_ = PackageManagerRemote::Create();
+
+ if (package_manager_ == nullptr) {
+ LOG(FATAL) << "Failed to get package manager service in IIorapImpl::Impl";
+ return;
+ }
+
+ package_change_observer_ =
+ new PackageChangeObserver(service_params_.event_manager_);
+ package_manager_death_recipient_ =
+ new PackageManagerDeathRecipient(package_manager_, package_change_observer_);
+
+ package_manager_->RegisterPackageChangeObserver(package_change_observer_);
+ package_manager_->
+ RegisterPackageManagerDeathRecipient(package_manager_death_recipient_);
+
}
ServiceParams service_params_;
+ std::shared_ptr<EventManagerTaskCallbacks> event_manager_callbacks_;
+ android::sp<PackageChangeObserver> package_change_observer_;
+ android::sp<PackageManagerDeathRecipient> package_manager_death_recipient_;
+ std::shared_ptr<PackageManagerRemote> package_manager_;
};
using Impl = IIorapImpl::Impl;
@@ -203,9 +368,21 @@ bool IIorapImpl::Start(std::shared_ptr<manager::EventManager> event_manager) {
// Release edge synchronizes-with the top of this function.
s_service_started_.store(true);
+ // TODO: IIRC thread-start(t1) synchronizes-with t1.main, so we should be able
+ // to delete the majority of atomics for any pre-thread-start initialization...
+
return true;
}
+::android::status_t IIorapImpl::dump(int fd, const ::android::Vector<::android::String16>& args) {
+
+ ::android::FdPrinter printer{fd};
+
+ impl_->Dump(printer, args);
+
+ return ::android::NO_ERROR;
+}
+
namespace {
#define MAYBE_HAVE_FAKE_BEHAVIOR(self, request_id) \
@@ -260,6 +437,48 @@ Status SendArgs(const char* function_name,
}
template <typename ... Args>
+Status SendArgs(const char* function_name,
+ Impl* self,
+ const RequestId& request_id,
+ const DexOptEvent& event) {
+ DCHECK_EQ(std::string(function_name), "onDexOptEvent");
+ LOG(VERBOSE) << "IIorap::onDexOptEvent";
+
+ MAYBE_HAVE_FAKE_BEHAVIOR(self, request_id);
+
+ if (self->OnDexOptEvent(request_id, event)) {
+ return Status::ok();
+ } else {
+ return Status::fromStatusT(::android::BAD_VALUE);
+ }
+}
+
+template <typename ... Args>
+Status SendArgs(const char* function_name,
+ Impl* self,
+ const RequestId& request_id,
+ const JobScheduledEvent& event) {
+ DCHECK_EQ(std::string(function_name), "onJobScheduledEvent");
+ LOG(VERBOSE) << "IIorap::onJobScheduledEvent";
+
+ MAYBE_HAVE_FAKE_BEHAVIOR(self, request_id);
+
+ if (self->OnJobScheduledEvent(request_id, event)) {
+ return Status::ok();
+ } else {
+ // TODO: I suppose this should write out an exception back,
+ // like a service-specific error or something.
+ //
+ // It depends on whether or not we even have any synchronous
+ // errors.
+ //
+ // Most of the work here is done async, so it should handle
+ // async callbacks.
+ return Status::fromStatusT(::android::BAD_VALUE);
+ }
+}
+
+template <typename ... Args>
Status Send(const char* function_name, Args&&... args) {
LOG(VERBOSE) << "IIorap::Send(" << function_name << ")";
diff --git a/src/binder/iiorap_impl.h b/src/binder/iiorap_impl.h
index 811497f..ae1422f 100644
--- a/src/binder/iiorap_impl.h
+++ b/src/binder/iiorap_impl.h
@@ -18,6 +18,8 @@
#define IORAP_BINDER_IIORAP_IMPL_H
#include "binder/iiorap_def.h"
+#include "binder/package_change_observer.h"
+#include "binder/package_manager_remote.h"
#include "common/macros.h"
#include "com/google/android/startop/iorap/BnIorap.h"
@@ -45,6 +47,9 @@ public:
static bool Start(std::shared_ptr<iorap::manager::EventManager> event_manager);
static constexpr const char* getServiceName() { return "iorapd"; };
+ virtual ::android::status_t dump(int fd,
+ const ::android::Vector<::android::String16>& args) override;
+
// Join all parameter declarations by splitting each parameter with a comma.
// Types are used fully.
#define IIORAP_IMPL_ARGS(...) \
@@ -65,7 +70,6 @@ private:
std::unique_ptr<Impl> impl_;
};
-
}
}
diff --git a/src/binder/package_change_observer.cc b/src/binder/package_change_observer.cc
new file mode 100644
index 0000000..1907af8
--- /dev/null
+++ b/src/binder/package_change_observer.cc
@@ -0,0 +1,37 @@
+// Copyright (C) 2020 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
+//
+// http://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 "package_change_observer.h"
+#include "package_manager_remote.h"
+#include "manager/event_manager.h"
+
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+
+namespace iorap::binder {
+
+PackageChangeObserver::PackageChangeObserver(
+ std::shared_ptr<iorap::manager::EventManager> event_manager) :
+ event_manager_(event_manager){}
+
+android::binder::Status PackageChangeObserver::onPackageChanged(
+ const android::content::pm::PackageChangeEvent& event) {
+ LOG(DEBUG) << "Received PackageChangeObserver::onPackageChanged";
+ if (event_manager_->OnPackageChanged(event)) {
+ return android::binder::Status::ok();
+ } else {
+ return android::binder::Status::fromStatusT(android::BAD_VALUE);
+ }
+}
+} // namespace iorap::binder
diff --git a/src/binder/package_change_observer.h b/src/binder/package_change_observer.h
new file mode 100644
index 0000000..ac488ac
--- /dev/null
+++ b/src/binder/package_change_observer.h
@@ -0,0 +1,42 @@
+// Copyright (C) 2020 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_PACKAGE_CHANGE_OBSERVER_H_
+#define IORAP_SRC_PACKAGE_CHANGE_OBSERVER_H_
+
+#include "binder/iiorap_def.h"
+
+#include <android/content/pm/BnPackageChangeObserver.h>
+#include <android/content/pm/PackageChangeEvent.h>
+#include <android/content/pm/IPackageManagerNative.h>
+
+namespace iorap::manager {
+ class EventManager;
+};
+
+namespace iorap::binder {
+
+class PackageChangeObserver : public android::content::pm::BnPackageChangeObserver {
+ public:
+ PackageChangeObserver(std::shared_ptr<iorap::manager::EventManager> event_manager);
+
+ // Callback when the package is changed.
+ android::binder::Status onPackageChanged(
+ const ::android::content::pm::PackageChangeEvent& event) override;
+ private:
+ std::shared_ptr<iorap::manager::EventManager> event_manager_;
+};
+} // namespace iorap::binder
+
+#endif // IORAP_SRC_PACKAGE_CHANGE_OBSERVER_H_
diff --git a/src/binder/package_manager_remote.cc b/src/binder/package_manager_remote.cc
new file mode 100644
index 0000000..daeb6af
--- /dev/null
+++ b/src/binder/package_manager_remote.cc
@@ -0,0 +1,194 @@
+// Copyright (C) 2020 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
+//
+// http://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 "package_manager_remote.h"
+
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+
+#include <chrono>
+#include <thread>
+
+namespace iorap::binder {
+
+const constexpr int64_t kTimeoutMs = 60 * 1000; // 1 min
+const constexpr int64_t kIntervalMs = 1000; // 1 sec
+
+std::shared_ptr<PackageManagerRemote> PackageManagerRemote::Create() {
+ std::shared_ptr<PackageManagerRemote> package_manager =
+ std::make_shared<PackageManagerRemote>();
+ if (package_manager->ReconnectWithTimeout(kTimeoutMs)) {
+ return package_manager;
+ }
+ return nullptr;
+}
+
+android::sp<IPackageManager> PackageManagerRemote::GetPackageService() {
+ android::sp<android::IBinder> binder = android::defaultServiceManager()->getService(
+ android::String16{"package_native"});
+ if (binder == nullptr) {
+ LOG(ERROR) << "Cannot get package manager service!";
+ return nullptr;
+ }
+
+ return android::interface_cast<IPackageManager>(binder);
+}
+
+std::optional<int64_t> PackageManagerRemote::GetPackageVersion(
+ const std::string& package_name) {
+ int64_t version_code;
+ android::binder::Status status = InvokeRemote(
+ [this, &version_code, &package_name]() {
+ return package_service_->getVersionCodeForPackage(
+ android::String16(package_name.c_str()), /*out*/&version_code);
+ });
+ if (status.isOk()) {
+ return version_code;
+ } else {
+ LOG(WARNING) << "Failed to get version: "
+ << status.toString8().c_str()
+ << " for " << package_name
+ << ". Retry to connect package manager service.";
+ return std::nullopt;
+ }
+}
+
+std::optional<VersionMap> PackageManagerRemote::GetPackageVersionMap() {
+ VersionMap package_version_map;
+ std::optional<std::vector<std::string>> packages = GetAllPackages();
+ if (!packages) {
+ LOG(DEBUG) << "Failed to get all packages. The package manager may be down.";
+ return std::nullopt;
+ }
+ LOG(DEBUG) << "PackageManagerRemote::GetPackageVersionMap: "
+ << packages->size()
+ << " packages are found.";
+
+ for (const std::string& package : *packages) {
+ std::optional<int64_t> version = GetPackageVersion(package);
+ if (!version) {
+ LOG(DEBUG) << "Cannot get version for " << package
+ << "Package manager may be down";
+ return std::nullopt;
+ }
+ package_version_map[package] = *version;
+ }
+
+ return package_version_map;
+}
+
+std::optional<std::vector<std::string>> PackageManagerRemote::GetAllPackages() {
+ std::vector<std::string> packages;
+ android::binder::Status status = InvokeRemote(
+ [this, &packages]() {
+ return package_service_->getAllPackages(/*out*/&packages);
+ });
+
+ if (status.isOk()) {
+ return packages;
+ }
+
+ LOG(ERROR) << "Failed to get all packages: " << status.toString8().c_str();
+ return std::nullopt;
+
+}
+
+bool PackageManagerRemote::ReconnectWithTimeout(int64_t timeout_ms) {
+ int64_t count = 0;
+ package_service_ = nullptr;
+ std::chrono::duration interval = std::chrono::milliseconds(1000);
+ std::chrono::duration timeout = std::chrono::milliseconds(timeout_ms);
+
+ while (package_service_ == nullptr) {
+ LOG(WARNING) << "Reconnect to package manager service: " << ++count << " times";
+ package_service_ = GetPackageService();
+ std::this_thread::sleep_for(interval);
+ if (count * interval >= timeout) {
+ LOG(FATAL) << "Fail to create version map in "
+ << timeout.count()
+ << " milliseconds."
+ << " Reason: Failed to connect to package manager service."
+ << " Is system_server down?";
+ return false;
+ }
+ }
+
+ return true;
+}
+
+template <typename T>
+android::binder::Status PackageManagerRemote::InvokeRemote(T&& lambda) {
+ android::binder::Status status =
+ static_cast<android::binder::Status>(lambda());
+ if (status.isOk()) {
+ return status;
+ }
+
+ if (!ReconnectWithTimeout(kTimeoutMs)) {
+ return status;
+ }
+
+ return lambda();
+}
+
+void PackageManagerRemote::RegisterPackageChangeObserver(
+ android::sp<PackageChangeObserver> observer) {
+ LOG(DEBUG) << "Register package change observer.";
+ android::binder::Status status = InvokeRemote(
+ [this, &observer]() {
+ return package_service_->registerPackageChangeObserver(observer);
+ });
+
+ if (!status.isOk()) {
+ LOG(FATAL) << "Cannot register package change observer.";
+ }
+}
+
+void PackageManagerRemote::UnregisterPackageChangeObserver(
+ android::sp<PackageChangeObserver> observer) {
+ LOG(DEBUG) << "Unregister package change observer.";
+ android::binder::Status status = InvokeRemote(
+ [this, &observer]() {
+ return package_service_->unregisterPackageChangeObserver(observer);
+ });
+
+ if (!status.isOk()) {
+ LOG(WARNING) << "Cannot unregister package change observer.";
+ }
+}
+
+void PackageManagerRemote::RegisterPackageManagerDeathRecipient(
+ android::sp<PackageManagerDeathRecipient> death_recipient) {
+ LOG(DEBUG) << "Register package manager death recipient.";
+ android::status_t status =
+ android::IInterface::asBinder(package_service_.get())->linkToDeath(death_recipient);
+
+ if (status == android::OK) {
+ return;
+ }
+
+ if (!ReconnectWithTimeout(kTimeoutMs) ||
+ android::OK != android::IInterface::asBinder(
+ package_service_.get())->linkToDeath(death_recipient)) {
+ LOG(FATAL) << "Failed to register package manager death recipient.";
+ }
+}
+
+void PackageManagerDeathRecipient::binderDied(const android::wp<android::IBinder>& /* who */) {
+ LOG(DEBUG) << "PackageManagerDeathRecipient::binderDied try to re-register";
+ package_manager_->RegisterPackageChangeObserver(observer_);
+ package_manager_->
+ RegisterPackageManagerDeathRecipient(this);
+}
+} // namespace iorap::package_manager
diff --git a/src/binder/package_manager_remote.h b/src/binder/package_manager_remote.h
new file mode 100644
index 0000000..9b0dcd9
--- /dev/null
+++ b/src/binder/package_manager_remote.h
@@ -0,0 +1,83 @@
+// Copyright (C) 2020 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_
+#define IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_
+
+#include "binder/package_change_observer.h"
+
+#include <android/content/pm/IPackageManagerNative.h>
+#include <binder/IServiceManager.h>
+
+#include <optional>
+#include <unordered_map>
+
+namespace iorap::binder {
+
+using IPackageManager = android::content::pm::IPackageManagerNative;
+// A map between package name and its version.
+using VersionMap = std::unordered_map<std::string, int64_t>;
+
+class PackageManagerRemote;
+
+class PackageManagerDeathRecipient : public android::IBinder::DeathRecipient {
+public:
+ PackageManagerDeathRecipient(std::shared_ptr<PackageManagerRemote> package_manager,
+ android::sp<PackageChangeObserver> observer) :
+ package_manager_(package_manager), observer_(observer) {}
+ // android::IBinder::DeathRecipient override:
+ void binderDied(const android::wp<android::IBinder>& /* who */) override;
+
+private:
+ std::shared_ptr<PackageManagerRemote> package_manager_;
+
+ android::sp<PackageChangeObserver> observer_;
+};
+
+class PackageManagerRemote {
+ public:
+ static std::shared_ptr<PackageManagerRemote> Create();
+
+ // Gets the package version based on the package name.
+ std::optional<int64_t> GetPackageVersion(const std::string& package_name);
+
+ // Gets a map of package name and its version.
+ std::optional<VersionMap> GetPackageVersionMap();
+
+ void RegisterPackageChangeObserver(android::sp<PackageChangeObserver> observer);
+
+ void UnregisterPackageChangeObserver(android::sp<PackageChangeObserver> observer);
+
+ void RegisterPackageManagerDeathRecipient(
+ android::sp<PackageManagerDeathRecipient> death_recipient);
+
+ private:
+ template <typename T>
+ android::binder::Status InvokeRemote(T&& lambda);
+
+ // Reconnects to the package manager service.
+ // Retry until timeout.
+ bool ReconnectWithTimeout(int64_t timeout_ms);
+
+ // Gets the package manager service.
+ static android::sp<IPackageManager> GetPackageService();
+
+ // Gets all package names.
+ std::optional<std::vector<std::string>> GetAllPackages();
+
+ android::sp<IPackageManager> package_service_;
+};
+} // namespace iorap::package_manager
+
+#endif // IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_
diff --git a/src/binder/package_version_map.cc b/src/binder/package_version_map.cc
new file mode 100644
index 0000000..784bb1b
--- /dev/null
+++ b/src/binder/package_version_map.cc
@@ -0,0 +1,117 @@
+// Copyright (C) 2020 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
+//
+// http://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 "package_version_map.h"
+
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+
+namespace iorap::binder {
+
+std::shared_ptr<PackageVersionMap> PackageVersionMap::Create() {
+ std::shared_ptr<PackageManagerRemote> package_manager =
+ PackageManagerRemote::Create();
+ if (!package_manager) {
+ return std::make_shared<PackageVersionMap>();
+ }
+
+ std::optional<VersionMap> map = package_manager->GetPackageVersionMap();
+ return std::make_shared<PackageVersionMap>(package_manager, map);
+}
+
+void PackageVersionMap::UpdateAll() {std::lock_guard<std::mutex> lock(mutex_);
+ size_t old_size = version_map_->size();
+ std::optional<VersionMap> new_version_map =
+ package_manager_->GetPackageVersionMap();
+ if (!new_version_map) {
+ LOG(DEBUG) << "Failed to get the latest version map";
+ return;
+ }
+ version_map_ = std::move(new_version_map);
+ LOG(DEBUG) << "Update for version is done. The size is from " << old_size
+ << " to " << version_map_->size();
+}
+
+bool PackageVersionMap::Update(std::string package_name, int64_t version) {
+ std::lock_guard<std::mutex> lock(mutex_);
+ if (!version_map_) {
+ LOG(DEBUG) << "The version map doesn't exist. "
+ << "The package manager may be down.";
+ return false;
+ }
+
+ VersionMap::iterator it = version_map_->find(package_name);
+ if (it == version_map_->end()) {
+ LOG(DEBUG) << "New installed package "
+ << package_name
+ << " with version "
+ << version;
+ (*version_map_)[package_name] = version;
+ return true;
+ }
+
+ if (it->second != version) {
+ LOG(DEBUG) << "New version package "
+ << package_name
+ << " with version "
+ << version;
+ (*version_map_)[package_name] = version;
+ return true;
+ }
+
+ LOG(DEBUG) << "Same version package "
+ << package_name
+ << " with version "
+ << version;
+ return false;
+}
+
+size_t PackageVersionMap::Size() {
+ if (!version_map_) {
+ LOG(DEBUG) << "The version map doesn't exist. "
+ << "The package manager may be down.";
+ return -1;
+ }
+ return version_map_->size();
+}
+
+std::optional<int64_t> PackageVersionMap::GetOrQueryPackageVersion(
+ const std::string& package_name) {
+ std::lock_guard<std::mutex> lock(mutex_);
+ if (!version_map_) {
+ LOG(DEBUG) << "The version map doesn't exist. "
+ << "The package manager may be down.";
+ return std::nullopt;
+ }
+
+ VersionMap::iterator it = version_map_->find(package_name);
+ if (it == version_map_->end()) {
+ LOG(DEBUG) << "Cannot find version for: " << package_name
+ << " in the hash table";
+ std::optional<int64_t> version =
+ package_manager_->GetPackageVersion(package_name);
+ if (version) {
+ LOG(VERBOSE) << "Find version for: " << package_name << " on the fly.";
+ (*version_map_)[package_name] = *version;
+ return *version;
+ } else {
+ LOG(ERROR) << "Cannot find version for: " << package_name
+ << " on the fly.";
+ return -1;
+ }
+ }
+
+ return it->second;
+}
+} // namespace iorap::binder
diff --git a/src/binder/package_version_map.h b/src/binder/package_version_map.h
new file mode 100644
index 0000000..f2048fe
--- /dev/null
+++ b/src/binder/package_version_map.h
@@ -0,0 +1,83 @@
+// Copyright (C) 2020 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_PACKAGE_VERSION_MAP_H_
+#define IORAP_SRC_PACKAGE_VERSION_MAP_H_
+
+#include <android/content/pm/IPackageManagerNative.h>
+#include <binder/IServiceManager.h>
+
+#include <optional>
+#include <unordered_map>
+
+#include "package_manager_remote.h"
+
+namespace iorap::binder {
+
+class PackageVersionMap {
+ public:
+ static std::shared_ptr<PackageVersionMap> Create();
+
+ PackageVersionMap(std::shared_ptr<PackageManagerRemote> package_manager,
+ std::optional<VersionMap> version_map)
+ : package_manager_(package_manager),
+ version_map_(version_map) {}
+
+ PackageVersionMap()
+ : package_manager_(nullptr), version_map_(std::nullopt) {}
+
+ // Updates the version specified by 'package_name' to 'version'.
+ //
+ // Post-condition: Find(package_name) == version.
+ // * if the package is newly installed, insert and return true.
+ // * if the package version is changed, update the version to the
+ // given one and return true.
+ // * otherwise, return false.
+ bool Update(std::string package_name, int64_t version);
+
+ void UpdateAll();
+
+ // Finds the version of the package in the hash table.
+ // -1 means the app is installed by unversioned.
+ // Empty means the app is not inside the RAM version map, maybe due to
+ // the app is newly installed.
+ std::optional<int64_t> Find(const std::string& package_name) {
+ VersionMap::iterator it = version_map_->find(package_name);
+ if (it == version_map_->end()) {
+ return std::nullopt;
+ }
+ return it->second;
+ }
+
+ size_t Size();
+
+ // Gets or queries the version for the package.
+ //
+ // The method firstly access the hash map in the RAM, which is built when
+ // iorapd starts. If the version is not in the map, it tries the query
+ // the package manager via IPC, with a cost of ~0.6ms.
+ //
+ // If no version can be found for some reason, return -1,
+ // because when an app has no version the package manager returns -1.
+ std::optional<int64_t> GetOrQueryPackageVersion(
+ const std::string& package_name);
+
+ private:
+ std::shared_ptr<PackageManagerRemote> package_manager_;
+ std::optional<VersionMap> version_map_;
+ std::mutex mutex_;
+};
+} // namespace iorap::binder
+
+#endif // IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_
diff --git a/src/common/async_pool.h b/src/common/async_pool.h
new file mode 100644
index 0000000..51cd38c
--- /dev/null
+++ b/src/common/async_pool.h
@@ -0,0 +1,91 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_COMMON_ASYNC_POOL_H_
+#define IORAP_SRC_COMMON_ASYNC_POOL_H_
+
+#include <atomic>
+#include <vector>
+#include <deque>
+#include <future>
+
+#include <condition_variable>
+#include <future>
+
+namespace iorap::common {
+
+class AsyncPool {
+ std::atomic<bool> shutting_down_{false};
+ std::deque<std::future<void>> futures_;
+
+ std::mutex mutex_;
+ std::condition_variable cond_var_;
+
+ public:
+
+ // Any threads calling 'Join' should eventually unblock
+ // once all functors have run to completition.
+ void Shutdown() {
+ shutting_down_ = true;
+
+ cond_var_.notify_all();
+ }
+
+ // Block forever until Shutdown is called *and* all
+ // functors passed to 'LaunchAsync' have run to completition.
+ void Join() {
+ std::unique_lock<std::mutex> lock(mutex_);
+ while (true) {
+ // Pop all items eagerly
+ while (true) {
+ auto it = futures_.begin();
+ if (it == futures_.end()) {
+ break;
+ }
+
+ std::future<void> future = std::move(*it);
+ futures_.pop_front();
+
+ lock.unlock(); // do not stall callers of LaunchAsync
+ future.get();
+ lock.lock();
+ }
+
+ if (shutting_down_) {
+ break;
+ }
+
+ // Wait until we either get more items or ask to be shutdown.
+ cond_var_.wait(lock);
+ }
+ }
+
+ // Execute the functor 'u' in a new thread asynchronously.
+ // Using this spawns a new thread each time to immediately begin
+ // async execution.
+ template <typename T>
+ void LaunchAsync(T&& u) {
+ auto future = std::async(std::launch::async, std::forward<T>(u));
+
+ {
+ std::unique_lock<std::mutex> lock(mutex_);
+ futures_.push_back(std::move(future));
+ }
+ cond_var_.notify_one();
+ }
+};
+
+} // namespace iorap::common
+
+#endif // IORAP_SRC_COMMON_ASYNC_POOL_H_
diff --git a/src/common/cmd_utils.h b/src/common/cmd_utils.h
new file mode 100644
index 0000000..4494119
--- /dev/null
+++ b/src/common/cmd_utils.h
@@ -0,0 +1,170 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_COMMON_CMD_UTILS_H_
+#define IORAP_SRC_COMMON_CMD_UTILS_H_
+
+#include <android-base/parsebool.h>
+#include <android-base/properties.h>
+
+#include <iostream>
+#include <sstream>
+#include <optional>
+#include <vector>
+
+namespace iorap::common {
+// Create execve-compatible argv.
+// The lifetime is tied to that of vector.
+inline std::unique_ptr<const char*[]> VecToArgv(const char* program_name,
+ const std::vector<std::string>& vector) {
+ // include program name in argv[0]
+ // include a NULL sentinel in the end.
+ std::unique_ptr<const char*[]> ptr{new const char*[vector.size() + 2]};
+
+ // program name
+ ptr[0] = program_name;
+
+ // all the argv
+ for (size_t i = 0; i < vector.size(); ++i) {
+ ptr[i+1] = vector[i].c_str();
+ }
+
+ // null sentinel
+ ptr[vector.size() + 1] = nullptr;
+
+ return ptr;
+}
+
+// Appends an args to the argv.
+template <class T>
+void AppendArgs(std::vector<std::string>& argv,
+ const T& value) {
+ std::stringstream ss;
+ ss << value;
+ argv.push_back(ss.str());
+}
+
+// Appends an args to the argv.
+template <class T, class T2>
+void AppendArgs(std::vector<std::string>& argv,
+ const T& value,
+ const T2& value2) {
+ AppendArgs(argv, value);
+ AppendArgs(argv, value2);
+}
+
+// Appends a named argument to the argv.
+//
+// For example if <name> is "--property" and <value> is int(200):
+// the string "--property=200" is appended to the argv.
+template <class T, class T2>
+void AppendNamedArg(std::vector<std::string>& argv,
+ const T& name,
+ const T2& value) {
+ std::stringstream ss;
+ ss << name;
+ ss << "=";
+ ss << value;
+
+ argv.push_back(ss.str());
+}
+
+// Appends args from a vector to the argv repeatedly to argv.
+//
+// For example, if <args> is "--timestamp" and <values> is [100, 200].
+// The "--timestamp 100" and "--timestamp 200" are appended.
+template <class T>
+void AppendArgsRepeatedly(std::vector<std::string>& argv,
+ std::string args,
+ const std::vector<T>& values) {
+ for (const T& v : values) {
+ AppendArgs(argv, args, v);
+ }
+}
+
+// Appends args from a vector to the argv repeatedly to argv.
+//
+// For example, if values is [input1.pb, input2.pb],
+// then the "input1.pb" and "input2.pb" are appended.
+template <class T>
+void AppendArgsRepeatedly(std::vector<std::string>& argv,
+ const std::vector<T>& values) {
+ for (const T& v : values) {
+ AppendArgs(argv, v);
+ }
+}
+
+// Appends a named argument to the argv repeatedly with different values.
+//
+// For example if <name> is "--property" and <value> is [int(200), int(400)]:
+// the strings "--property=200" and "--property=400" are both appended to the argv.
+template <class T, class T2>
+void AppendNamedArgRepeatedly(std::vector<std::string>& argv,
+ const T& name,
+ const std::vector<T2>& values) {
+ for (const T2& v :values) {
+ AppendNamedArg(argv, name, v);
+ }
+}
+
+// Get the value of the property.
+// Firstly, try to find the environment variable. If it does not exist,
+// try to get the property. If neither, use the default value..
+//
+// For example, for prop foo.bar.baz, it will first check for
+// FOO_BAR_BAZ environment variable.
+inline std::string GetEnvOrProperty(const std::string& prop, const std::string& default_val) {
+ std::string env_str = prop;
+ // a.b.c -> a_b_c
+ std::replace(env_str.begin(), env_str.end(), '.', '_');
+ // a_b_c -> A_B_C
+ std::transform(env_str.begin(), env_str.end(), env_str.begin(), ::toupper);
+ char *env = getenv(env_str.c_str());
+ if (env) {
+ return std::string(env);
+ }
+ return ::android::base::GetProperty(prop, default_val);
+}
+
+// Get the boolean value of the property.
+// Firstly, try to find the environment variable. If it does not exist,
+// try to get the property. If neither, use the default value..
+//
+// For example, for prop foo.bar.baz, it will first check for
+// FOO_BAR_BAZ environment variable.
+inline bool GetBoolEnvOrProperty(const std::string& prop, bool default_val) {
+ std::string env_str = prop;
+ // a.b.c -> a_b_c
+ std::replace(env_str.begin(), env_str.end(), '.', '_');
+ // a_b_c -> A_B_C
+ std::transform(env_str.begin(), env_str.end(), env_str.begin(), ::toupper);
+ char *env = getenv(env_str.c_str());
+ if (env) {
+ using ::android::base::ParseBoolResult;
+
+ switch (::android::base::ParseBool(env)) {
+ case ParseBoolResult::kError:
+ break;
+ case ParseBoolResult::kFalse:
+ return false;
+ case ParseBoolResult::kTrue:
+ return true;
+ }
+ }
+ return ::android::base::GetBoolProperty(prop, default_val);
+}
+
+} // namespace iorap::common
+
+#endif // IORAP_SRC_COMMON_CMD_UTILS_H_
diff --git a/src/common/expected.h b/src/common/expected.h
index 3d8eef7..c58e63f 100644
--- a/src/common/expected.h
+++ b/src/common/expected.h
@@ -292,7 +292,13 @@ struct expected {
return data_.value();
}
- // TODO: arrow operator?
+ constexpr const T* _Nonnull operator->() const {
+ return &data_.value();
+ }
+
+ constexpr T* _Nonnull operator->() {
+ return &data_.value();
+ }
constexpr T& value() & {
CHECK(has_value());
diff --git a/src/common/loggers.h b/src/common/loggers.h
new file mode 100644
index 0000000..1dbb2dc
--- /dev/null
+++ b/src/common/loggers.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019 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
+ *
+ * http://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.
+ */
+
+#ifndef IORAP_SRC_COMMON_LOGGERS
+#define IORAP_SRC_COMMON_LOGGERS
+
+#include <android-base/logging.h>
+
+namespace iorap {
+namespace common {
+
+// Log to both Stderr and Logd for convenience when running this from the command line.
+class StderrAndLogdLogger {
+ public:
+ explicit StderrAndLogdLogger(android::base::LogId default_log_id = android::base::MAIN)
+#ifdef __ANDROID__
+ : logd_(default_log_id)
+#endif
+ {
+ }
+
+ void operator()(::android::base::LogId id,
+ ::android::base::LogSeverity sev,
+ const char* tag,
+ const char* file,
+ unsigned int line,
+ const char* message) {
+#ifdef __ANDROID__
+ logd_(id, sev, tag, file, line, message);
+#endif
+ StderrLogger(id, sev, tag, file, line, message);
+ }
+
+ private:
+#ifdef __ANDROID__
+ ::android::base::LogdLogger logd_;
+#endif
+};
+
+} // namespace iorap
+} // namespace common
+
+#endif
diff --git a/src/common/printer.h b/src/common/printer.h
new file mode 100644
index 0000000..272e459
--- /dev/null
+++ b/src/common/printer.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2020 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
+ *
+ * http://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.
+ */
+
+#ifndef IORAP_UTILS_PRINTER_H_
+#define IORAP_UTILS_PRINTER_H_
+
+#include <utils/Printer.h>
+
+#include <string.h>
+
+namespace iorap::common {
+
+class StderrLogPrinter : public ::android::Printer {
+public:
+ // Create a printer using the specified logcat and log priority
+ // - Unless ignoreBlankLines is false, print blank lines to logcat
+ // (Note that the default ALOG behavior is to ignore blank lines)
+ StderrLogPrinter(const char* logtag,
+ android_LogPriority priority = ANDROID_LOG_DEBUG,
+ const char* prefix = nullptr,
+ bool ignore_blank_lines = false)
+ : log_printer_{logtag, priority, prefix, ignore_blank_lines} {
+ logtag_ = logtag;
+ prefix_ = prefix;
+ ignore_blank_lines_ = ignore_blank_lines;
+ }
+
+ // Print the specified line to logcat. No \n at the end is necessary.
+ virtual void printLine(const char* string) override {
+ if (ignore_blank_lines_ && strlen(string) == 0) {
+ return;
+ }
+ std::cerr << logtag_ << ": ";
+ if (prefix_ != nullptr) {
+ std::cerr << prefix_;
+ }
+ std::cerr << string << std::endl;
+ log_printer_.printLine(string);
+ }
+ private:
+ ::android::LogPrinter log_printer_;
+ const char* logtag_;
+ const char* prefix_;
+ bool ignore_blank_lines_;
+};
+
+} // namespace iorap::common
+
+#endif // IORAP_UTILS_PRINTER_H_
diff --git a/src/common/rx_async.h b/src/common/rx_async.h
new file mode 100644
index 0000000..d16f5ae
--- /dev/null
+++ b/src/common/rx_async.h
@@ -0,0 +1,77 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_COMMON_RX_ASYNC_H_
+#define IORAP_SRC_COMMON_RX_ASYNC_H_
+
+#include "common/async_pool.h"
+
+#include <rxcpp/rx.hpp>
+
+namespace iorap::common {
+
+// Helper functions to operate with rx chains asynchronously.
+class RxAsync {
+ public:
+ // Subscribe to the observable on a new thread asynchronously.
+ // If no observe_on/subscribe_on is used, the chain will execute
+ // on that new thread.
+ //
+ // Returns the composite_subscription which can be used to
+ // unsubscribe from if we want to abort the chain early.
+ template <typename T, typename U>
+ static rxcpp::composite_subscription SubscribeAsync(
+ AsyncPool& async_pool,
+ T&& observable,
+ U&& subscriber) {
+ rxcpp::composite_subscription subscription;
+
+ async_pool.LaunchAsync([subscription, // safe copy: ref-counted
+ observable=std::forward<T>(observable),
+ subscriber=std::forward<U>(subscriber)]() mutable {
+ observable
+ .as_blocking()
+ .subscribe(subscription,
+ std::forward<decltype(subscriber)>(subscriber));
+ });
+
+ return subscription;
+ }
+
+ template <typename T, typename U, typename E>
+ static rxcpp::composite_subscription SubscribeAsync(
+ AsyncPool& async_pool,
+ T&& observable,
+ U&& on_next,
+ E&& on_error) {
+ rxcpp::composite_subscription subscription;
+
+ async_pool.LaunchAsync([subscription, // safe copy: ref-counted
+ observable=std::forward<T>(observable),
+ on_next=std::forward<U>(on_next),
+ on_error=std::forward<E>(on_error)]() mutable {
+ observable
+ .as_blocking()
+ .subscribe(subscription,
+ std::forward<decltype(on_next)>(on_next),
+ std::forward<decltype(on_error)>(on_error));
+ });
+
+ return subscription;
+ }
+};
+
+} // namespace iorap::common
+
+#endif // IORAP_SRC_COMMON_RX_ASYNC_H_
diff --git a/src/common/trace.h b/src/common/trace.h
new file mode 100644
index 0000000..a07d7bc
--- /dev/null
+++ b/src/common/trace.h
@@ -0,0 +1,48 @@
+// Copyright (C) 2020 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
+//
+// http://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.
+
+#ifndef IORAP_COMMON_TRACE_H_
+#define IORAP_COMMON_TRACE_H_
+
+#include <cutils/trace.h>
+
+#include <cstdio>
+#include <sstream>
+
+namespace iorap {
+
+// TODO: refactor into utils/Trace.h
+
+class ScopedFormatTrace {
+ public:
+ template <typename ... Args>
+ ScopedFormatTrace(uint64_t tag, const char* fmt, Args&&... args) : tag_{tag} {
+ char buffer[1024];
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-security"
+ snprintf(buffer, sizeof(buffer), fmt, args...);
+#pragma GCC diagnostic pop
+ atrace_begin(tag, buffer);
+ }
+
+ ~ScopedFormatTrace() {
+ atrace_end(tag_);
+ }
+ private:
+ uint64_t tag_;
+};
+
+} // namespace iorap
+
+#endif // IORAP_COMMON_TRACE_H_
diff --git a/src/compiler/compiler.cc b/src/compiler/compiler.cc
new file mode 100644
index 0000000..7d0e624
--- /dev/null
+++ b/src/compiler/compiler.cc
@@ -0,0 +1,949 @@
+// Copyright (C) 2019 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
+//
+// http://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 "compiler/compiler.h"
+
+#include "common/debug.h"
+#include "common/expected.h"
+
+#include "perfetto/rx_producer.h" // TODO: refactor BinaryWireProtobuf to separate header.
+#include "inode2filename/inode.h"
+#include "inode2filename/search_directories.h"
+#include "serialize/protobuf_io.h"
+
+#include <android-base/unique_fd.h>
+#include <android-base/parseint.h>
+#include <android-base/file.h>
+
+#include <perfetto/trace/trace.pb.h> // ::perfetto::protos::Trace
+#include <perfetto/trace/trace_packet.pb.h> // ::perfetto::protos::TracePacket
+
+#include "rxcpp/rx.hpp"
+#include <iostream>
+#include <fstream>
+#include <optional>
+#include <utility>
+#include <regex>
+
+#include <sched.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <syscall.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+namespace iorap::compiler {
+
+using Inode = iorap::inode2filename::Inode;
+using InodeResult = iorap::inode2filename::InodeResult;
+using SearchDirectories = iorap::inode2filename::SearchDirectories;
+
+template <typename T>
+using ProtobufPtr = iorap::perfetto::ProtobufPtr<T>;
+
+struct PerfettoTraceProtoInfo {
+ /* The perfetto trace proto. */
+ ::iorap::perfetto::PerfettoTraceProto proto;
+ /*
+ * The timestamp limit of the trace.
+ * It's used to truncate the trace file.
+ */
+ uint64_t timestamp_limit_ns;
+};
+
+struct PerfettoTracePtrInfo {
+ /* Deserialized protobuf data containing the perfetto trace. */
+ ProtobufPtr<::perfetto::protos::Trace> trace_ptr;
+ /*
+ * The timestamp limit of the trace.
+ * It's used to truncate the trace file.
+ */
+ uint64_t timestamp_limit_ns;
+};
+
+// Attempt to read protobufs from the filenames.
+// Emits one (or none) protobuf for each filename, in the same order as the filenames.
+// On any errors, the items are dropped (errors are written to the error LOG).
+//
+// All work is done on the same Coordinator as the Subscriber.
+template <typename ProtoT /*extends MessageLite*/>
+auto/*observable<PerfettoTracePtrInfo>*/ ReadProtosFromFileNames(
+ rxcpp::observable<CompilationInput> file_infos) {
+ using BinaryWireProtoT = ::iorap::perfetto::PerfettoTraceProto;
+
+ return file_infos
+ .map([](const CompilationInput& file_info) ->
+ std::optional<PerfettoTraceProtoInfo> {
+ LOG(VERBOSE) << "compiler::ReadProtosFromFileNames " << file_info.filename
+ << " TimeStampLimit "<< file_info.timestamp_limit_ns << " [begin]";
+ std::optional<BinaryWireProtoT> maybe_proto =
+ BinaryWireProtoT::ReadFullyFromFile(file_info.filename);
+ if (!maybe_proto) {
+ LOG(ERROR) << "Failed to read file: " << file_info.filename;
+ return std::nullopt;
+ }
+ return {{std::move(maybe_proto.value()), file_info.timestamp_limit_ns}};
+ })
+ .filter([](const std::optional<PerfettoTraceProtoInfo>& proto_info) {
+ return proto_info.has_value();
+ })
+ .map([](std::optional<PerfettoTraceProtoInfo>& proto_info) ->
+ PerfettoTraceProtoInfo {
+ return proto_info.value();
+ }) // TODO: refactor to something that flattens the optional, and logs in one operator.
+ .map([](PerfettoTraceProtoInfo& proto_info) ->
+ std::optional<PerfettoTracePtrInfo> {
+ std::optional<ProtobufPtr<ProtoT>> t = proto_info.proto.template MaybeUnserialize<ProtoT>();
+ if (!t) {
+ LOG(ERROR) << "Failed to parse protobuf: "; // TODO: filename.
+ return std::nullopt;
+ }
+ return {{std::move(t.value()), proto_info.timestamp_limit_ns}};
+ })
+ .filter([](const std::optional<PerfettoTracePtrInfo>& trace_info) {
+ return trace_info.has_value();
+ })
+ .map([](std::optional<PerfettoTracePtrInfo>& trace_info) ->
+ PerfettoTracePtrInfo {
+ LOG(VERBOSE) << "compiler::ReadProtosFromFileNames [success]";
+ return trace_info.value();
+ // TODO: protobufs have no move constructor. this might be inefficient?
+ });
+
+/*
+ return filenames
+ .map([](const std::string& filename) {
+ LOG(VERBOSE) << "compiler::ReadProtosFromFileNames " << filename << " [begin]";
+ std::optional<BinaryWireProtoT> maybe_proto =
+ BinaryWireProtoT::ReadFullyFromFile(filename);
+ if (!maybe_proto) {
+ LOG(ERROR) << "Failed to read file: " << filename;
+ }
+
+ std::unique_ptr<BinaryWireProtoT> ptr;
+ if (maybe_proto) {
+ ptr.reset(new BinaryWireProtoT{std::move(*maybe_proto)});
+ }
+ return ptr;
+ })
+ .filter([](const std::unique_ptr<BinaryWireProtoT>& proto) {
+ return proto != nullptr;
+ })
+ .map([](std::unique_ptr<BinaryWireProtoT>& proto) {
+ std::optional<ProtoT> t = proto->template MaybeUnserialize<ProtoT>();
+ if (!t) {
+ LOG(ERROR) << "Failed to parse protobuf: "; // TODO: filename.
+ }
+ return t;
+ })
+ .filter([](const std::optional<ProtoT>& proto) {
+ return proto.has_value();
+ })
+ .map([](std::optional<ProtoT> proto) -> ProtoT {
+ LOG(VERBOSE) << "compiler::ReadProtosFromFileNames [success]";
+ return std::move(proto.value());
+ // TODO: protobufs have no move constructor. this might be inefficient?
+ });
+ */
+}
+
+auto/*observable<PerfettoTracePtrInfo>*/ ReadPerfettoTraceProtos(
+ std::vector<CompilationInput> file_infos) {
+ auto filename_obs = rxcpp::observable<>::iterate(std::move(file_infos));
+ rxcpp::observable<PerfettoTracePtrInfo> obs =
+ ReadProtosFromFileNames<::perfetto::protos::Trace>(std::move(filename_obs));
+ return obs;
+}
+
+// A flattened data representation of an MmFileMap*FtraceEvent.
+// This representation is used for streaming processing.
+//
+// Note: Perfetto applies a 'union' over all possible fields on all possible devices
+// (and uses the max sizeof per-field).
+//
+// Since all protobuf fields are optional, fields not present on a particular device are always
+// null
+struct PageCacheFtraceEvent {
+ /*
+ * Ftrace buffer-specific
+ */
+ uint32_t cpu; // e.g. 0-7 for the cpu core number.
+
+ /*
+ * Ftrace-event general data
+ */
+
+ // Nanoseconds since an epoch.
+ // Epoch is configurable by writing into trace_clock.
+ // By default this timestamp is CPU local.
+ uint64_t timestamp;
+ // Kernel pid (do not confuse with userspace pid aka tgid)
+ uint32_t pid;
+
+ // Tagged by our code while parsing the ftraces:
+ uint64_t timestamp_relative; // timestamp relative to first ftrace within a Trace protobuf.
+ bool add_to_page_cache; // AddToPageCache=true, DeleteFromPageCache=false.
+
+ /*
+ * mm_filemap-specific data
+ *
+ * Fields are common:
+ * - MmFilemapAddToPageCacheFtraceEvent
+ * - MmFilemapDeleteFromPageCacheFtraceEvent
+ */
+ uint64_t pfn; // page frame number (physical) - null on some devices, e.g. marlin
+ uint64_t i_ino; // inode number (use in conjunction with s_dev)
+ uint64_t index; // offset into file: this is a multiple of the page size (usually 4096).
+ uint64_t s_dev; // (dev_t) device number
+ uint64_t page; // struct page*. - null on some devices, e.g. blueline.
+
+ Inode inode() const {
+ return Inode::FromDeviceAndInode(static_cast<dev_t>(s_dev),
+ static_cast<ino_t>(i_ino));
+ }
+};
+
+std::ostream& operator<<(std::ostream& os, const PageCacheFtraceEvent& e) {
+ os << "{";
+ os << "cpu:" << e.cpu << ",";
+ os << "timestamp:" << e.timestamp << ",";
+ os << "pid:" << e.pid << ",";
+ os << "timestamp_relative:" << e.timestamp_relative << ",";
+ os << "add_to_page_cache:" << e.add_to_page_cache << ",";
+ os << "pfn:" << e.pfn << ",";
+ os << "i_ino:" << e.i_ino << ",";
+ os << "index:" << e.index << ",";
+ os << "s_dev:" << e.s_dev << ",";
+ os << "page:" << e.page;
+ os << "}";
+
+ return os;
+}
+
+/*
+ * Gets the start timestamp.
+ *
+ * It is the minimium timestamp.
+ */
+std::optional<uint64_t> GetStartTimestamp(const ::perfetto::protos::Trace& trace) {
+ std::optional<uint64_t> timestamp_relative_start;
+ // Traverse each timestamp to get the minimium one.
+ for (const ::perfetto::protos::TracePacket& packet : trace.packet()) {
+ if (packet.has_timestamp()) {
+ timestamp_relative_start = timestamp_relative_start?
+ std::min(*timestamp_relative_start, packet.timestamp()) : packet.timestamp();
+ }
+ if (!packet.has_ftrace_events()) {
+ continue;
+ }
+ const ::perfetto::protos::FtraceEventBundle& ftrace_event_bundle =
+ packet.ftrace_events();
+ for (const ::perfetto::protos::FtraceEvent& event : ftrace_event_bundle.event()) {
+ if (event.has_timestamp()) {
+ timestamp_relative_start = timestamp_relative_start?
+ std::min(*timestamp_relative_start, event.timestamp()) : event.timestamp();
+ }
+ }
+ }
+ return timestamp_relative_start;
+}
+
+/*
+ * sample blueline output:
+ *
+ * $ adb shell cat /d/tracing/events/filemap/mm_filemap_add_to_page_cache/format
+ *
+ * name: mm_filemap_add_to_page_cache
+ * ID: 178
+ * format:
+ * field:unsigned short common_type; offset:0; size:2; signed:0;
+ * field:unsigned char common_flags; offset:2; size:1; signed:0;
+ * field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ * field:int common_pid; offset:4; size:4; signed:1;
+ *
+ * field:unsigned long pfn; offset:8; size:8; signed:0;
+ * field:unsigned long i_ino; offset:16; size:8; signed:0;
+ * field:unsigned long index; offset:24; size:8; signed:0;
+ * field:dev_t s_dev; offset:32; size:4; signed:0;
+ *
+ * print fmt: "dev %d:%d ino %lx page=%p pfn=%lu ofs=%lu", ((unsigned int) ((REC->s_dev) >> 20)),
+ * ((unsigned int) ((REC->s_dev) & ((1U << 20) - 1))), REC->i_ino,
+ * (((struct page *)(((0xffffffffffffffffUL) - ((1UL) << ((39) - 1)) + 1) -
+ * ((1UL) << ((39) - 12 - 1 + 6))) - (memstart_addr >> 12)) + (REC->pfn)),
+ * REC->pfn, REC->index << 12
+ */
+
+auto /*observable<PageCacheFtraceEvent>*/ SelectPageCacheFtraceEvents(
+ PerfettoTracePtrInfo trace_info) {
+ const ::perfetto::protos::Trace& trace = *(trace_info.trace_ptr);
+
+ constexpr bool kDebugFunction = true;
+
+ return rxcpp::observable<>::create<PageCacheFtraceEvent>(
+ [trace=std::move(trace), timestamp_limit_ns=trace_info.timestamp_limit_ns]
+ (rxcpp::subscriber<PageCacheFtraceEvent> sub) {
+ uint64_t timestamp = 0;
+ uint64_t timestamp_relative = 0;
+
+ std::optional<uint64_t> timestamp_relative_start = GetStartTimestamp(trace);
+ uint32_t cpu = 0;
+ uint32_t pid = 0;
+ bool add_to_page_cache = true;
+
+ auto on_next_page_cache_event = [&](const auto& mm_event) {
+ PageCacheFtraceEvent out;
+ out.timestamp = timestamp;
+ out.cpu = cpu;
+ out.pid = pid;
+
+ out.timestamp_relative = timestamp_relative;
+ out.add_to_page_cache = add_to_page_cache;
+
+ out.pfn = mm_event.pfn();
+ out.i_ino = mm_event.i_ino();
+ out.index = mm_event.index();
+ out.s_dev = mm_event.s_dev();
+ out.page = mm_event.page();
+
+ sub.on_next(std::move(out));
+ };
+
+ for (const ::perfetto::protos::TracePacket& packet : trace.packet()) {
+ // Break out of all loops if we are unsubscribed.
+ if (!sub.is_subscribed()) {
+ if (kDebugFunction) LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents unsubscribe";
+ return;
+ }
+
+ if (kDebugFunction) LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents TracePacket";
+
+ if (packet.has_timestamp()) {
+ timestamp_relative_start = timestamp_relative_start.value_or(packet.timestamp());
+ timestamp = packet.timestamp(); // XX: should we call 'has_timestamp()' ?
+ } else {
+ timestamp = 0;
+ }
+
+ if (packet.has_ftrace_events()) {
+ const ::perfetto::protos::FtraceEventBundle& ftrace_event_bundle =
+ packet.ftrace_events();
+
+ cpu = ftrace_event_bundle.cpu(); // XX: has_cpu ?
+
+ for (const ::perfetto::protos::FtraceEvent& event : ftrace_event_bundle.event()) {
+ // Break out of all loops if we are unsubscribed.
+ if (!sub.is_subscribed()) {
+ return;
+ }
+
+ if (event.has_timestamp()) {
+ timestamp = event.timestamp();
+ if(timestamp > timestamp_limit_ns) {
+ LOG(VERBOSE) << "The timestamp is " << timestamp <<
+ ", which exceeds the limit "<< timestamp_limit_ns;
+ continue;
+ }
+ } else {
+ DCHECK(packet.has_timestamp() == false)
+ << "Timestamp in outer packet but not inner packet";
+ // XX: use timestamp from the perfetto TracePacket ???
+ // REVIEWERS: not sure if this is ok, does it use the same clock source and
+ // is the packet data going to be the same clock sample as the Ftrace event?
+ }
+
+ if (timestamp_relative_start){
+ timestamp_relative = timestamp - *timestamp_relative_start;
+ } else {
+ timestamp_relative = 0;
+ }
+
+ pid = event.pid(); // XX: has_pid ?
+
+ if (event.has_mm_filemap_add_to_page_cache()) {
+ add_to_page_cache = true;
+
+ const ::perfetto::protos::MmFilemapAddToPageCacheFtraceEvent& mm_event =
+ event.mm_filemap_add_to_page_cache();
+
+ on_next_page_cache_event(mm_event);
+ } else if (event.has_mm_filemap_delete_from_page_cache()) {
+ add_to_page_cache = false;
+
+ const ::perfetto::protos::MmFilemapDeleteFromPageCacheFtraceEvent& mm_event =
+ event.mm_filemap_delete_from_page_cache();
+
+ on_next_page_cache_event(mm_event);
+ }
+ }
+ } else {
+ if (kDebugFunction) {
+ LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents no ftrace event bundle";
+ }
+ }
+ }
+
+ if (kDebugFunction) {
+ LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents#on_completed";
+ }
+
+ // Let subscriber know there are no more items.
+ sub.on_completed();
+ });
+}
+
+auto /*observable<Inode*/ SelectDistinctInodesFromTraces(
+ rxcpp::observable<PerfettoTracePtrInfo> traces) {
+ // Emit only unique (s_dev, i_ino) pairs from all Trace protos.
+ auto obs = traces
+ .flat_map([](PerfettoTracePtrInfo trace) {
+ rxcpp::observable<PageCacheFtraceEvent> obs = SelectPageCacheFtraceEvents(std::move(trace));
+ // FIXME: dont check this in
+ // return obs;
+ //return obs.take(100); // for faster development
+ return obs;
+ }) // TODO: Upstream bug? using []()::perfetto::protos::Trace&) causes a compilation error.
+ .map([](const PageCacheFtraceEvent& event) -> Inode {
+ return Inode::FromDeviceAndInode(static_cast<dev_t>(event.s_dev),
+ static_cast<ino_t>(event.i_ino));
+ })
+ .tap([](const Inode& inode) {
+ LOG(VERBOSE) << "SelectDistinctInodesFromTraces (pre-distinct): " << inode;
+ })
+ .distinct() // observable<Inode>*/
+ ;
+
+ return obs;
+}
+// TODO: static assert checks for convertible return values.
+
+auto/*observable<InodeResult>*/ ResolveInodesToFileNames(
+ rxcpp::observable<Inode> inodes,
+ inode2filename::InodeResolverDependencies dependencies) {
+ std::shared_ptr<inode2filename::InodeResolver> inode_resolver =
+ inode2filename::InodeResolver::Create(std::move(dependencies));
+ return inode_resolver->FindFilenamesFromInodes(std::move(inodes));
+}
+
+using InodeMap = std::unordered_map<Inode, std::string /*filename*/>;
+auto /*just observable<InodeMap>*/ ReduceResolvedInodesToMap(
+ rxcpp::observable<InodeResult> inode_results) {
+ return inode_results.reduce(
+ InodeMap{},
+ [](InodeMap m, InodeResult result) {
+ if (result) {
+ LOG(VERBOSE) << "compiler::ReduceResolvedInodesToMap insert " << result;
+ m.insert({std::move(result.inode), std::move(result.data.value())});
+ } else {
+ // TODO: side stats for how many of these are failed to resolve?
+ LOG(WARNING) << "compiler: Failed to resolve inode, " << result;
+ }
+ return m;
+ },
+ [](InodeMap m) {
+ return m; // TODO: use an identity function
+ }); // emits exactly 1 InodeMap value.
+}
+
+struct ResolvedPageCacheFtraceEvent {
+ std::string filename;
+ PageCacheFtraceEvent event;
+};
+
+std::ostream& operator<<(std::ostream& os, const ResolvedPageCacheFtraceEvent& e) {
+ os << "{";
+ os << "filename:\"" << e.filename << "\",";
+ os << e.event;
+ os << "}";
+
+ return os;
+}
+
+struct CombinedState {
+ CombinedState() = default;
+ explicit CombinedState(InodeMap inode_map) : inode_map{std::move(inode_map)} {}
+ explicit CombinedState(PageCacheFtraceEvent event) : ftrace_event{std::move(event)} {}
+
+ CombinedState(InodeMap inode_map, PageCacheFtraceEvent event)
+ : inode_map(std::move(inode_map)),
+ ftrace_event{std::move(event)} {}
+
+ std::optional<InodeMap> inode_map;
+ std::optional<PageCacheFtraceEvent> ftrace_event;
+
+ bool HasAll() const {
+ return inode_map.has_value() && ftrace_event.has_value();
+ }
+
+ const InodeMap& GetInodeMap() const {
+ DCHECK(HasAll());
+ return inode_map.value();
+ }
+
+ InodeMap& GetInodeMap() {
+ DCHECK(HasAll());
+ return inode_map.value();
+ }
+
+ const PageCacheFtraceEvent& GetEvent() const {
+ DCHECK(HasAll());
+ return ftrace_event.value();
+ }
+
+ PageCacheFtraceEvent& GetEvent() {
+ DCHECK(HasAll());
+ return ftrace_event.value();
+ }
+
+ void Merge(CombinedState&& other) {
+ if (other.inode_map) {
+ inode_map = std::move(other.inode_map);
+ }
+ if (other.ftrace_event) {
+ ftrace_event = std::move(other.ftrace_event);
+ }
+ }
+};
+
+std::ostream& operator<<(std::ostream& os, const CombinedState& s) {
+ os << "CombinedState{inode_map:";
+ if (s.inode_map) {
+ os << "|sz=" << (s.inode_map.value().size()) << "|";
+ } else {
+ os << "(null)";
+ }
+ os << ",event:";
+ if (s.ftrace_event) {
+ //os << s.ftrace_event.value().timestamp << "ns";
+ os << s.ftrace_event.value();
+ } else {
+ os << "(null)";
+ }
+ os << "}";
+ return os;
+}
+
+auto/*observable<ResolvedPageCacheFtraceEvent>*/ ResolvePageCacheEntriesFromProtos(
+ rxcpp::observable<PerfettoTracePtrInfo> traces,
+ inode2filename::InodeResolverDependencies dependencies) {
+
+ // 1st chain = emits exactly 1 InodeMap.
+
+ // [proto, proto, proto...] -> [inode, inode, inode, ...]
+ auto/*observable<Inode>*/ distinct_inodes = SelectDistinctInodesFromTraces(traces);
+ rxcpp::observable<Inode> distinct_inodes_obs = distinct_inodes.as_dynamic();
+ // [inode, inode, inode, ...] -> [(inode, {filename|error}), ...]
+ auto/*observable<InodeResult>*/ inode_names = ResolveInodesToFileNames(distinct_inodes_obs,
+ std::move(dependencies));
+ // rxcpp has no 'join' operators, so do a manual join with concat.
+ auto/*observable<InodeMap>*/ inode_name_map = ReduceResolvedInodesToMap(inode_names);
+
+ // 2nd chain = emits all PageCacheFtraceEvent
+ auto/*observable<PageCacheFtraceEvent>*/ page_cache_ftrace_events = traces
+ .flat_map([](PerfettoTracePtrInfo trace) {
+ rxcpp::observable<PageCacheFtraceEvent> obs = SelectPageCacheFtraceEvents(std::move(trace));
+ return obs;
+ });
+
+ auto inode_name_map_precombine = inode_name_map
+ .map([](InodeMap inode_map) {
+ LOG(VERBOSE) << "compiler::ResolvePageCacheEntriesFromProtos#inode_name_map_precombine ";
+ return CombinedState{std::move(inode_map)};
+ });
+
+ auto page_cache_ftrace_events_precombine = page_cache_ftrace_events
+ .map([](PageCacheFtraceEvent event) {
+ LOG(VERBOSE)
+ << "compiler::ResolvePageCacheEntriesFromProtos#page_cache_ftrace_events_precombine "
+ << event;
+ return CombinedState{std::move(event)};
+ });
+
+ // Combine 1st+2nd chain.
+ //
+ // concat subscribes to each observable, waiting until its completed, before subscribing
+ // to the next observable and waiting again.
+ //
+ // During all this, every #on_next is immediately forwarded to the downstream observables.
+ // In our case, we want to block until InodeNameMap is ready, and re-iterate all ftrace events.
+ auto/*observable<ResolvedPageCacheFtraceEvent>*/ resolved_events = inode_name_map_precombine
+ .concat(page_cache_ftrace_events_precombine)
+ .scan(CombinedState{},
+ [](CombinedState current_state, CombinedState delta_state) {
+ LOG(VERBOSE) << "compiler::ResolvePageCacheEntriesFromProtos#scan "
+ << "current=" << current_state << ","
+ << "delta=" << delta_state;
+ // IT0 = (,) + (InodeMap,)
+ // IT1 = (InodeMap,) + (,Event)
+ // IT2..N = (InodeMap,Event1) + (,Event2)
+ current_state.Merge(std::move(delta_state));
+ return current_state;
+ })
+ .filter([](const CombinedState& state) {
+ return state.HasAll();
+ })
+ .map([](CombinedState& state) -> std::optional<ResolvedPageCacheFtraceEvent> {
+ PageCacheFtraceEvent& event = state.GetEvent();
+ const InodeMap& inode_map = state.GetInodeMap();
+
+ auto it = inode_map.find(event.inode());
+ if (it != inode_map.end()) {
+ std::string filename = it->second;
+ LOG(VERBOSE) << "compiler::ResolvePageCacheEntriesFromProtos combine_latest " << event;
+ return ResolvedPageCacheFtraceEvent{std::move(filename), std::move(event)};
+ } else {
+ LOG(ERROR) << "compiler: FtraceEvent's inode did not have resolved filename: " << event;
+ return std::nullopt;
+ }
+ })
+ .filter(
+ [](std::optional<ResolvedPageCacheFtraceEvent> maybe_event) {
+ return maybe_event.has_value();
+ })
+ .map([](std::optional<ResolvedPageCacheFtraceEvent> maybe_event) {
+ return std::move(maybe_event.value());
+ });
+ // -> observable<ResolvedPageCacheFtraceEvent>
+
+ return resolved_events;
+}
+
+namespace detail {
+bool multiless_one(const std::string& a, const std::string& b) {
+ return std::lexicographical_compare(a.begin(), a.end(),
+ b.begin(), b.end());
+}
+
+template <typename T>
+constexpr bool multiless_one(T&& a, T&& b) { // a < b
+ using std::less; // ADL
+ return less<std::decay_t<T>>{}(std::forward<T>(a), std::forward<T>(b));
+}
+
+constexpr bool multiless() {
+ return false; // [] < [] is always false.
+}
+
+template <typename T, typename ... Args>
+constexpr bool multiless(T&& a, T&& b, Args&&... args) {
+ if (a != b) {
+ return multiless_one(std::forward<T>(a), std::forward<T>(b));
+ } else {
+ return multiless(std::forward<Args>(args)...);
+ }
+}
+
+} // namespace detail
+
+// Return [A0...An] < [B0...Bn] ; vector-like scalar comparison of each field.
+// Arguments are passed in the order A0,B0,A1,B1,...,An,Bn.
+template <typename ... Args>
+constexpr bool multiless(Args&&... args) {
+ return detail::multiless(std::forward<Args>(args)...);
+}
+
+struct CompilerPageCacheEvent {
+ std::string filename;
+ uint64_t timestamp_relative; // use relative timestamp because absolute values aren't comparable
+ // across different trace protos.
+ // relative timestamps can be said to be 'approximately' comparable.
+ // assuming we compare the same application startup's trace times.
+ bool add_to_page_cache; // AddToPageCache=true, DeleteFromPageCache=false.
+ uint64_t index; // offset into file: this is a multiple of the page size (usually 4096).
+
+ // All other data from the ftrace is dropped because we don't currently use it in the
+ // compiler algorithms.
+
+ CompilerPageCacheEvent() = default;
+ CompilerPageCacheEvent(const ResolvedPageCacheFtraceEvent& resolved)
+ : CompilerPageCacheEvent(resolved.filename, resolved.event) {
+ }
+
+ CompilerPageCacheEvent(ResolvedPageCacheFtraceEvent&& resolved)
+ : CompilerPageCacheEvent(std::move(resolved.filename), std::move(resolved.event)) {
+ }
+
+ // Compare all fields (except the timestamp field).
+ static bool LessIgnoringTimestamp(const CompilerPageCacheEvent& a,
+ const CompilerPageCacheEvent& b) {
+ return multiless(a.filename, b.filename,
+ a.add_to_page_cache, b.add_to_page_cache,
+ a.index, b.index);
+ }
+
+ // Compare all fields. Timestamps get highest precedence.
+ bool operator<(const CompilerPageCacheEvent& rhs) const {
+ return multiless(timestamp_relative, rhs.timestamp_relative,
+ filename, rhs.filename,
+ add_to_page_cache, rhs.add_to_page_cache,
+ index, rhs.index);
+ }
+
+ private:
+ CompilerPageCacheEvent(std::string filename, const PageCacheFtraceEvent& event)
+ : filename(std::move(filename)),
+ timestamp_relative(event.timestamp_relative),
+ add_to_page_cache(event.add_to_page_cache),
+ index(event.index) {
+ }
+};
+
+std::ostream& operator<<(std::ostream& os, const CompilerPageCacheEvent& e) {
+ os << "{";
+ os << "filename:\"" << e.filename << "\",";
+ os << "timestamp:" << e.timestamp_relative << ",";
+ os << "add_to_page_cache:" << e.add_to_page_cache << ",";
+ os << "index:" << e.index;
+ os << "}";
+ return os;
+}
+
+// Filter an observable chain of 'ResolvedPageCacheFtraceEvent'
+// into an observable chain of 'ResolvedPageCacheFtraceEvent'.
+//
+// Any items emitted by the input chain that match the regular expression
+// specified by blacklist_filter are not emitted into the output chain.
+auto/*observable<ResolvedPageCacheFtraceEvent>*/ ApplyBlacklistToPageCacheEvents(
+ rxcpp::observable<ResolvedPageCacheFtraceEvent> resolved_events,
+ std::optional<std::string> blacklist_filter) {
+ bool has_re = blacklist_filter.has_value();
+ // default regex engine is ecmascript.
+ std::regex reg_exp{blacklist_filter ? *blacklist_filter : std::string("")};
+
+ return resolved_events.filter(
+ [reg_exp, has_re](const ResolvedPageCacheFtraceEvent& event) {
+ if (!has_re) {
+ return true;
+ }
+ // Remove any entries that match the regex in --blacklist-filter/-bf.
+ bool res = std::regex_search(event.filename, reg_exp);
+ if (res) {
+ LOG(VERBOSE) << "Blacklist filter removed '" << event.filename << "' from chain.";
+ }
+ return !res;
+ });
+}
+
+// Compile an observable chain of 'ResolvedPageCacheFtraceEvent' into
+// an observable chain of distinct, timestamp-ordered, CompilerPageCacheEvent.
+//
+// This is a reducing operation: No items are emitted until resolved_events is completed.
+auto/*observable<CompilerPageCacheEvent>*/ CompilePageCacheEvents(
+ rxcpp::observable<ResolvedPageCacheFtraceEvent> resolved_events) {
+
+ struct CompilerPageCacheEventIgnoringTimestampLess {
+ bool operator()(const CompilerPageCacheEvent& lhs,
+ const CompilerPageCacheEvent& rhs) const {
+ return CompilerPageCacheEvent::LessIgnoringTimestamp(lhs, rhs);
+ }
+ };
+
+ // Greedy O(N) compilation algorithm.
+ //
+ // This produces an inoptimal result (e.g. a small timestamp
+ // that might occur only 1% of the time nevertheless wins out), but the
+ // algorithm itself is quite simple, and doesn't require any heuristic tuning.
+
+ // First pass: *Merge* into set that ignores the timestamp value for order, but retains
+ // the smallest timestamp value if the same key is re-inserted.
+ using IgnoreTimestampForOrderingSet =
+ std::set<CompilerPageCacheEvent, CompilerPageCacheEventIgnoringTimestampLess>;
+ // Second pass: *Sort* data by smallest timestamp first.
+ using CompilerPageCacheEventSet =
+ std::set<CompilerPageCacheEvent>;
+
+ return resolved_events
+ .map(
+ [](ResolvedPageCacheFtraceEvent event) {
+ // Drop all the extra metadata like pid, cpu, etc.
+ // When we merge we could keep a list of the original data, but there is no advantage
+ // to doing so.
+ return CompilerPageCacheEvent{std::move(event)};
+ }
+ )
+ .reduce(
+ IgnoreTimestampForOrderingSet{},
+ [](IgnoreTimestampForOrderingSet set, CompilerPageCacheEvent event) {
+ // Add each event to the set, keying by everything but the timestamp.
+ // If the key is already inserted, re-insert with the smaller timestamp value.
+ auto it = set.find(event);
+
+ if (it == set.end()) {
+ // Need to insert new element.
+ set.insert(std::move(event));
+ } else if (it->timestamp_relative > event.timestamp_relative) {
+ // Replace existing element: the new element has a smaller timestamp.
+ it = set.erase(it);
+ // Amortized O(1) time if insertion happens in the position before the hint.
+ set.insert(it, std::move(event));
+ } // else: Skip insertion. Element already present with the minimum timestamp.
+
+ return set;
+ },
+ [](IgnoreTimestampForOrderingSet set) {
+ // Extract all elements from 'set', re-insert into 'ts_set'.
+ // The values are now ordered by timestamp (and then the rest of the fields).
+ CompilerPageCacheEventSet ts_set;
+ ts_set.merge(std::move(set));
+
+
+ std::shared_ptr<CompilerPageCacheEventSet> final_set{
+ new CompilerPageCacheEventSet{std::move(ts_set)}};
+ return final_set;
+ // return ts_set;
+ }) // observable<CompilerPageCacheEventSet> (just)
+ .flat_map(
+ [](std::shared_ptr<CompilerPageCacheEventSet> final_set) {
+ // TODO: flat_map seems to make a copy of the parameter _every single iteration_
+ // without the shared_ptr it would just make a copy of the set every time it went
+ // through the iterate function.
+ // Causing absurdly slow compile times x1000 slower than we wanted.
+ // TODO: file a bug upstream and/or fix upstream.
+ CompilerPageCacheEventSet& ts_set = *final_set;
+ // [](CompilerPageCacheEventSet& ts_set) {
+ LOG(DEBUG) << "compiler: Merge-pass completed (" << ts_set.size() << " entries).";
+ //return rxcpp::sources::iterate(std::move(ts_set));
+ return rxcpp::sources::iterate(ts_set).map([](CompilerPageCacheEvent e) { return e; });
+ }
+ ); // observable<CompilerPageCacheEvent>
+}
+
+/** Makes a vector of info that includes filename and timestamp limit. */
+std::vector<CompilationInput> MakeCompilationInputs(
+ std::vector<std::string> input_file_names,
+ std::vector<uint64_t> timestamp_limit_ns){
+ // If the timestamp limit is empty, set the limit to max value
+ // for each trace file.
+ if (timestamp_limit_ns.empty()) {
+ for (size_t i = 0; i < input_file_names.size(); i++) {
+ timestamp_limit_ns.push_back(std::numeric_limits<uint64_t>::max());
+ }
+ }
+ DCHECK_EQ(input_file_names.size(), timestamp_limit_ns.size());
+ std::vector<CompilationInput> file_infos;
+ for (size_t i = 0; i < input_file_names.size(); i++) {
+ file_infos.push_back({input_file_names[i], timestamp_limit_ns[i]});
+ }
+ return file_infos;
+}
+
+bool PerformCompilation(std::vector<CompilationInput> perfetto_traces,
+ std::string output_file_name,
+ bool output_proto,
+ std::optional<std::string> blacklist_filter,
+ inode2filename::InodeResolverDependencies dependencies) {
+ auto trace_protos = ReadPerfettoTraceProtos(std::move(perfetto_traces));
+ auto resolved_events = ResolvePageCacheEntriesFromProtos(std::move(trace_protos),
+ std::move(dependencies));
+ auto filtered_events =
+ ApplyBlacklistToPageCacheEvents(std::move(resolved_events), blacklist_filter);
+ auto compiled_events = CompilePageCacheEvents(std::move(filtered_events));
+
+ std::ofstream ofs;
+ if (!output_file_name.empty()) {
+
+ if (!output_proto) {
+ ofs.open(output_file_name);
+
+ if (!ofs) {
+ LOG(ERROR) << "compiler: Failed to open output file for writing: " << output_file_name;
+ return false;
+ }
+ }
+ }
+
+ auto trace_file_proto = serialize::ArenaPtr<serialize::proto::TraceFile>::Make();
+
+ // Fast lookup of filename -> FileIndex id.
+ std::unordered_map<std::string, int64_t /*file handle id*/> file_path_map;
+ int64_t file_handle_id = 0;
+
+ int counter = 0;
+ compiled_events
+ // .as_blocking()
+ .tap([&](CompilerPageCacheEvent& event) {
+ if (!output_proto) {
+ return;
+ }
+
+ if (!event.add_to_page_cache) {
+ // Skip DeleteFromPageCache events, they are only used for intermediate.
+ return;
+ }
+
+ DCHECK(trace_file_proto->mutable_index() != nullptr);
+ serialize::proto::TraceFileIndex& index = *trace_file_proto->mutable_index();
+ int64_t file_handle;
+
+ // Add TraceFileIndexEntry if it doesn't exist.
+
+ auto it = file_path_map.find(event.filename);
+ if (it == file_path_map.end()) {
+ file_handle = file_handle_id++;
+ file_path_map[event.filename] = file_handle;
+
+ serialize::proto::TraceFileIndexEntry* entry = index.add_entries();
+ DCHECK(entry != nullptr);
+ entry->set_id(file_handle);
+ entry->set_file_name(event.filename);
+
+ if (kIsDebugBuild) {
+ int i = static_cast<int>(file_handle);
+ const serialize::proto::TraceFileIndexEntry& entry_ex = index.entries(i);
+ DCHECK_EQ(entry->id(), entry_ex.id());
+ DCHECK_EQ(entry->file_name(), entry_ex.file_name());
+ }
+ } else {
+ file_handle = it->second;
+ }
+ int kPageSize = 4096; // TODO: don't hardcode the page size.
+
+ // Add TraceFileEntry.
+ DCHECK(trace_file_proto->mutable_list() != nullptr);
+ serialize::proto::TraceFileEntry* entry = trace_file_proto->mutable_list()->add_entries();
+ DCHECK(entry != nullptr);
+
+ entry->set_index_id(file_handle);
+ // Page index -> file offset in bytes.
+ entry->set_file_offset(static_cast<int64_t>(event.index) * kPageSize);
+ entry->set_file_length(kPageSize);
+ })
+ .subscribe([&](CompilerPageCacheEvent event) {
+ if (!output_proto) {
+ if (output_file_name.empty()) {
+ LOG(INFO) << "CompilerPageCacheEvent" << event << std::endl;
+ } else {
+ ofs << event << "\n"; // TODO: write in proto format instead.
+ }
+ }
+ ++counter;
+ });
+
+ if (output_proto) {
+ LOG(DEBUG) << "compiler: WriteFully to begin into " << output_file_name;
+ ::google::protobuf::MessageLite& message = *trace_file_proto.get();
+ if (auto res = serialize::ProtobufIO::WriteFully(message, output_file_name); !res) {
+ errno = res.error();
+ PLOG(ERROR) << "compiler: Failed to write protobuf to file: " << output_file_name;
+ return false;
+ } else {
+ LOG(INFO) << "compiler: Wrote protobuf " << output_file_name;
+ }
+ }
+
+ LOG(DEBUG) << "compiler: Compilation completed (" << counter << " events).";
+
+ return true;
+}
+
+} // namespace iorap::compiler
diff --git a/src/compiler/compiler.h b/src/compiler/compiler.h
new file mode 100644
index 0000000..1fa9ff1
--- /dev/null
+++ b/src/compiler/compiler.h
@@ -0,0 +1,65 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_COMPILER_COMPILER_H_
+#define IORAP_SRC_COMPILER_COMPILER_H_
+
+#include "inode2filename/inode_resolver.h"
+
+#include <optional>
+#include <string>
+#include <vector>
+
+namespace iorap::compiler {
+struct CompilationInput {
+ /* The name of the perfetto trace. */
+ std::string filename;
+ /*
+ * The timestamp limit of the trace.
+ * It's used to truncate the trace file.
+ */
+ uint64_t timestamp_limit_ns;
+};
+
+// Compile one or more perfetto TracePacket protobufs that are stored on the filesystem
+// by the filenames given with `input_file_names` and timestamp limit given with
+// timestamp_limit_ns.
+//
+// For each input file name and timestamp limit, ignore any events from the input that
+// exceed the associated timestamp limit.
+//
+// If blacklist_filter is non-null, ignore any file entries whose file path matches the
+// regular expression in blacklist_filter.
+//
+// The result is stored into the file path specified by `output_file_name`.
+//
+// This is a blocking function which returns only when compilation finishes. The return value
+// determines success/failure.
+//
+// Operation is transactional -- that is if there is a failure, `output_file_name` is untouched.
+bool PerformCompilation(std::vector<iorap::compiler::CompilationInput> perfetto_traces,
+ std::string output_file_name,
+ bool output_proto,
+ std::optional<std::string> blacklist_filter,
+ inode2filename::InodeResolverDependencies dependencies);
+
+// The size and order of timestamp_limit_ns should match that of
+// input_file_names, if not empty.
+// If timestamp_limit_ns is empty, will use the max uint64_t.
+std::vector<CompilationInput> MakeCompilationInputs(
+ std::vector<std::string> input_file_names,
+ std::vector<uint64_t> timestamp_limit_ns);
+}
+
+#endif // IORAP_SRC_COMPILER_COMPILER_H_
diff --git a/src/compiler/main.cc b/src/compiler/main.cc
new file mode 100644
index 0000000..1ecfaed
--- /dev/null
+++ b/src/compiler/main.cc
@@ -0,0 +1,207 @@
+// Copyright (C) 2019 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
+//
+// http://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 "common/cmd_utils.h"
+#include "common/debug.h"
+#include "compiler/compiler.h"
+#include "inode2filename/inode_resolver.h"
+
+#include <android-base/parseint.h>
+#include <android-base/logging.h>
+
+#include <iostream>
+#include <limits>
+#include <optional>
+#include <string>
+
+#if defined(IORAP_COMPILER_MAIN)
+
+namespace iorap::compiler {
+
+void Usage(char** argv) {
+ std::cerr << "Usage: " << argv[0] << " [--output-proto=output.pb] input1.pb [input2.pb ...]" << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Request a compilation of multiple inputs (format: PerfettoTraceProto)." << std::endl;
+ std::cerr << " The result is a TraceFile, representing a merged compiled trace with inodes resolved." << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Optional flags:" << std::endl;
+ std::cerr << " --help,-h Print this Usage." << std::endl;
+ std::cerr << " --blacklist-filter,-bf Specify regex acting as a blacklist filter." << std::endl;
+ std::cerr << " Filepaths matching this regex are removed from the output file." << std::endl;
+ std::cerr << " --output-text,-ot Output ascii text instead of protobuf (default off)." << std::endl;
+ std::cerr << " --output-proto $,-op $ TraceFile tracebuffer output file (default stdout)." << std::endl;
+ std::cerr << " --inode-textcache $,-it $ Resolve inode->filename from textcache (disables diskscan)." << std::endl;
+ std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl;
+ std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl;
+ std::cerr << " --timestamp_limit_ns,-tl Set the limit timestamp in nanoseconds for the compiled trace. "
+ "The order and size of the timestamp should match that of "
+ "the input trace files. If not specified at all, All of"
+ "the timestamps are set to max."<< std::endl;
+ exit(1);
+}
+
+int Main(int argc, char** argv) {
+ android::base::InitLogging(argv);
+ android::base::SetLogger(android::base::StderrLogger);
+
+ bool wait_for_keystroke = false;
+ bool enable_verbose = false;
+
+ std::optional<std::string> arg_blacklist_filter;
+ std::string arg_output_proto;
+ bool arg_output_text = false;
+ std::optional<std::string> arg_inode_textcache;
+
+ std::vector<uint64_t> timestamp_limit_ns;
+
+ if (argc == 1) {
+ // Need at least 1 input file to do anything.
+ Usage(argv);
+ }
+
+ std::vector<std::string> arg_input_filenames;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+ bool has_arg_next = (arg+1)<argc;
+ std::string arg_next = has_arg_next ? argv[arg+1] : "";
+
+ if (argstr == "--help" || argstr == "-h") {
+ Usage(argv);
+ } else if (argstr == "--output-proto" || argstr == "-op") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --output-proto <value>" << std::endl;
+ return 1;
+ }
+ arg_output_proto = arg_next;
+ ++arg;
+ } else if (argstr == "--output-text" || argstr == "-ot") {
+ arg_output_text = true;
+ } else if (argstr == "--inode-textcache" || argstr == "-it") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --inode-textcache <value>" << std::endl;
+ return 1;
+ }
+ arg_inode_textcache = arg_next;
+ ++arg;
+ } else if (argstr == "--blacklist-filter" || argstr == "-bf") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --blacklist-filter <value>" << std::endl;
+ return 1;
+ }
+ arg_blacklist_filter = arg_next;
+ ++arg;
+ }
+ else if (argstr == "--verbose" || argstr == "-v") {
+ enable_verbose = true;
+ } else if (argstr == "--wait" || argstr == "-w") {
+ wait_for_keystroke = true;
+ } else if (argstr == "--timestamp_limit_ns" || argstr == "-tl") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --timestamp_limit_ns <value>" << std::endl;
+ return 1;
+ }
+ uint64_t timestamp;
+ if (!::android::base::ParseUint<uint64_t>(arg_next, &timestamp)) {
+ std::cerr << "Invalid --timestamp-limit-ns "<< arg_next << std::endl;
+ return 1;
+ }
+ timestamp_limit_ns.push_back(timestamp);
+ ++arg;
+ } else {
+ arg_input_filenames.push_back(argstr);
+ }
+ }
+
+ if (!timestamp_limit_ns.empty() &&
+ timestamp_limit_ns.size() != arg_input_filenames.size()) {
+ std::cerr << "The size of timestamp limits doesn't match the size of input files."
+ << std::endl;
+ return 1;
+ }
+
+ if (enable_verbose) {
+ android::base::SetMinimumLogSeverity(android::base::VERBOSE);
+
+ LOG(VERBOSE) << "Verbose check";
+ LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild;
+ } else {
+ android::base::SetMinimumLogSeverity(android::base::DEBUG);
+ }
+
+ // Useful to attach a debugger...
+ // 1) $> iorap.cmd.compiler -w <args>
+ // 2) $> gdbclient <pid>
+ if (wait_for_keystroke) {
+ LOG(INFO) << "Self pid: " << getpid();
+ LOG(INFO) << "Press any key to continue...";
+ std::cin >> wait_for_keystroke;
+ }
+
+ auto system_call = std::make_unique<SystemCallImpl>();
+
+ using namespace inode2filename;
+
+ InodeResolverDependencies ir_dependencies;
+ // Passed from command-line.
+ if (arg_inode_textcache) {
+ ir_dependencies.data_source = DataSourceKind::kTextCache;
+ ir_dependencies.text_cache_filename = arg_inode_textcache;
+ ir_dependencies.verify = VerifyKind::kNone; // required for determinism.
+ } else {
+ ir_dependencies.data_source = DataSourceKind::kDiskScan;
+ LOG(WARNING) << "--inode-textcache unspecified. "
+ << "Inodes will be resolved by scanning the disk, which makes compilation "
+ << "non-deterministic.";
+ }
+ // TODO: add command line.
+ ir_dependencies.root_directories.push_back("/system");
+ ir_dependencies.root_directories.push_back("/apex");
+ ir_dependencies.root_directories.push_back("/data");
+ ir_dependencies.root_directories.push_back("/vendor");
+ ir_dependencies.root_directories.push_back("/product");
+ ir_dependencies.root_directories.push_back("/metadata");
+ // Hardcoded.
+ if (iorap::common::GetBoolEnvOrProperty("iorap.inode2filename.out_of_process", true)) {
+ ir_dependencies.process_mode = ProcessMode::kOutOfProcessIpc;
+ } else {
+ ir_dependencies.process_mode = ProcessMode::kInProcessDirect;
+ }
+ ir_dependencies.system_call = /*borrowed*/system_call.get();
+
+ int return_code = 0;
+ std::vector<CompilationInput> perfetto_traces =
+ MakeCompilationInputs(arg_input_filenames, timestamp_limit_ns);
+ return_code =
+ !PerformCompilation(std::move(perfetto_traces),
+ std::move(arg_output_proto),
+ !arg_output_text,
+ arg_blacklist_filter,
+ std::move(ir_dependencies));
+
+ // Uncomment this if we want to leave the process around to inspect it from adb shell.
+ // sleep(100000);
+
+ // 0 -> successfully wrote the proto out to file.
+ // 1 -> failed along the way (#on_error and also see the error logs).
+ return return_code;
+}
+
+} // namespace iorap::compiler
+
+int main(int argc, char** argv) {
+ return ::iorap::compiler::Main(argc, argv);
+}
+
+#endif // IORAP_COMPILER_MAIN
diff --git a/src/db/app_component_name.h b/src/db/app_component_name.h
new file mode 100644
index 0000000..e364163
--- /dev/null
+++ b/src/db/app_component_name.h
@@ -0,0 +1,130 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_DB_APP_COMPONENT_NAME_H_
+#define IORAP_SRC_DB_APP_COMPONENT_NAME_H_
+
+namespace iorap::db {
+
+struct AppComponentName {
+ std::string package;
+ std::string activity_name;
+
+ // Turns the activity name to the fully qualified name.
+ // For example, if the activity name is ".MainActivity" and the package is
+ // foo.bar. Then the fully qualified name is foo.bar.MainActivity.
+ AppComponentName Canonicalize() const {
+ if (!activity_name.empty() && activity_name[0] == '.') {
+ return {package, package + activity_name};
+ }
+ return {package, activity_name};
+ }
+
+ static bool HasAppComponentName(const std::string& s) {
+ return s.find('/') != std::string::npos;
+ }
+
+ // "com.foo.bar/.A" -> {"com.foo.bar", ".A"}
+ static AppComponentName FromString(const std::string& s) {
+ constexpr const char delimiter = '/';
+
+ if (!HasAppComponentName(s)) {
+ return {std::move(s), ""};
+ }
+
+ std::string package = s.substr(0, s.find(delimiter));
+
+ std::string activity_name = s;
+ activity_name.erase(0, s.find(delimiter) + sizeof(delimiter));
+
+ return {std::move(package), std::move(activity_name)};
+ }
+
+ // {"com.foo.bar", ".A"} -> "com.foo.bar/.A"
+ std::string ToString() const {
+ return package + "/" + activity_name;
+ }
+
+ /*
+ * '/' is encoded into %2F
+ * '%' is encoded into %25
+ *
+ * This allows the component name to be be used as a file name
+ * ('/' is illegal due to being a path separator) with minimal
+ * munging.
+ */
+
+ // "com.foo.bar%2F.A%25" -> {"com.foo.bar", ".A%"}
+ static AppComponentName FromUrlEncodedString(const std::string& s) {
+ std::string cpy = s;
+ Replace(cpy, "%2F", "/");
+ Replace(cpy, "%25", "%");
+
+ return FromString(cpy);
+ }
+
+ // {"com.foo.bar", ".A%"} -> "com.foo.bar%2F.A%25"
+ std::string ToUrlEncodedString() const {
+ std::string s = ToString();
+ Replace(s, "%", "%25");
+ Replace(s, "/", "%2F");
+ return s;
+ }
+
+ /*
+ * '/' is encoded into @@
+ * '%' is encoded into ^^
+ *
+ * Two purpose:
+ * 1. This allows the package name to be used as a file name
+ * ('/' is illegal due to being a path separator) with minimal
+ * munging.
+ * 2. This allows the package name to be used in .mk file because
+ * '%' is a special char and cannot be easily escaped in Makefile.
+ *
+ * This is a workround for test purpose.
+ * Only package name is used because activity name varies on
+ * different testing framework.
+ * Hopefully, the double "@@" and "^^" are not used in other cases.
+ */
+ // {"com.foo.bar", ".A%"} -> "com.foo.bar"
+ std::string ToMakeFileSafeEncodedPkgString() const {
+ std::string s = package;
+ Replace(s, "/", "@@");
+ Replace(s, "%", "^^");
+ return s;
+ }
+
+ private:
+ static bool Replace(std::string& str, const std::string& from, const std::string& to) {
+ // TODO: call in a loop to replace all occurrences, not just the first one.
+ const size_t start_pos = str.find(from);
+ if (start_pos == std::string::npos) {
+ return false;
+ }
+
+ str.replace(start_pos, from.length(), to);
+
+ return true;
+}
+};
+
+inline std::ostream& operator<<(std::ostream& os, const AppComponentName& name) {
+ os << name.ToString();
+ return os;
+}
+
+} // namespace iorap::db
+
+#endif // IORAP_SRC_DB_APP_COMPONENT_NAME_H_
diff --git a/src/db/clean_up.cc b/src/db/clean_up.cc
new file mode 100644
index 0000000..de1412d
--- /dev/null
+++ b/src/db/clean_up.cc
@@ -0,0 +1,115 @@
+// Copyright (C) 2020 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
+//
+// http://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 "db/clean_up.h"
+
+#include <android-base/file.h>
+
+#include <cstdio>
+#include <filesystem>
+#include <fstream>
+#include <iostream>
+#include <limits>
+#include <optional>
+#include <string>
+#include <vector>
+
+#include "db/file_models.h"
+#include "db/models.h"
+
+namespace iorap::db {
+
+void CleanUpFilesForActivity(const db::DbHandle& db,
+ const db::VersionedComponentName& vcn) {
+ LOG(DEBUG) << "Clean up files for activity " << vcn.GetActivity();
+ // Remove perfetto traces.
+ std::vector<db::RawTraceModel> raw_traces =
+ db::RawTraceModel::SelectByVersionedComponentName(db, vcn);
+ for (db::RawTraceModel raw_trace : raw_traces) {
+ std::string file_path = raw_trace.file_path;
+ LOG(DEBUG) << "Remove file: " << file_path;
+ std::filesystem::remove(file_path.c_str());
+ raw_trace.Delete();
+ }
+
+ // Remove compiled traces.
+ std::optional<db::PrefetchFileModel> prefetch_file =
+ db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn);
+
+ if (prefetch_file) {
+ std::string file_path = prefetch_file->file_path;
+ LOG(DEBUG) << "Remove file: " << file_path;
+ std::filesystem::remove(file_path.c_str());
+ prefetch_file->Delete();
+ }
+}
+
+void CleanUpFilesForPackage(const db::DbHandle& db,
+ int package_id,
+ const std::string& package_name,
+ int64_t version) {
+ LOG(DEBUG) << "Clean up files for package " << package_name << " with version "
+ << version;
+ std::vector<db::ActivityModel> activities =
+ db::ActivityModel::SelectByPackageId(db, package_id);
+
+ for (db::ActivityModel activity : activities) {
+ db::VersionedComponentName vcn{package_name, activity.name, version};
+ CleanUpFilesForActivity(db, vcn);
+ }
+}
+
+void CleanUpFilesForPackage(const db::DbHandle& db,
+ const std::string& package_name,
+ int64_t version) {
+ std::optional<PackageModel> package =
+ PackageModel::SelectByNameAndVersion(db, package_name.c_str(), version);
+
+ if (!package) {
+ LOG(DEBUG) << "No package to clean up " << package_name << " with version " << version;
+ return;
+ }
+
+ CleanUpFilesForPackage(db, package->id, package_name, version);
+}
+
+void CleanUpFilesForDb(const db::DbHandle& db) {
+ std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db);
+ for (db::PackageModel package : packages) {
+ CleanUpFilesForPackage(db, package.id, package.name, package.version);
+ }
+}
+
+void CleanUpFilesForPackage(const std::string& db_path,
+ const std::string& package_name) {
+ iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path);
+ db::DbHandle db{db_schema.db()};
+ CleanUpFilesForPackage(db, package_name);
+}
+
+
+void CleanUpFilesForPackage(const db::DbHandle& db,
+ const std::string& package_name) {
+ std::vector<PackageModel> packages = PackageModel::SelectByName(db, package_name.c_str());;
+
+ for (PackageModel& package : packages) {
+ CleanUpFilesForPackage(db, package.id, package.name, package.version);
+ }
+
+ if (packages.empty()) {
+ LOG(DEBUG) << "No package rows to clean up " << package_name;
+ }
+}
+
+} // namespace iorap::db
diff --git a/src/db/clean_up.h b/src/db/clean_up.h
new file mode 100644
index 0000000..08b7bde
--- /dev/null
+++ b/src/db/clean_up.h
@@ -0,0 +1,54 @@
+// Copyright (C) 2020 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_DB_CLEANER_H_
+#define IORAP_SRC_DB_CLEANER_H_
+
+#include <android/content/pm/IPackageManagerNative.h>
+
+#include <string>
+#include <vector>
+
+#include "binder/package_version_map.h"
+#include "db/file_models.h"
+
+namespace iorap::db {
+
+// Clean up perfetto traces and compiled traces in disk and rows
+// in raw_traces and prefetch_files in the db.
+void CleanUpFilesForDb(const db::DbHandle& db);
+
+// Clean up perfetto traces and compiled traces in disk and rows
+// in raw_traces and prefetch_files in the db for a package id.
+void CleanUpFilesForPackage(const db::DbHandle& db,
+ int package_id,
+ const std::string& package_name,
+ int64_t version);
+
+// Clean up all package rows (and files) associated with a package by name.
+void CleanUpFilesForPackage(const std::string& db_path,
+ const std::string& package_name);
+
+// Clean up all package rows (and files) associated with a package by name.
+void CleanUpFilesForPackage(const db::DbHandle& db,
+ const std::string& package_name);
+// Clean up perfetto traces and compiled traces in disk and rows
+// in raw_traces and prefetch_files in the db for a package name
+// and version.
+void CleanUpFilesForPackage(const db::DbHandle& db,
+ const std::string& package_name,
+ int64_t version);
+} // namespace iorap::db
+
+#endif // IORAP_SRC_DB_CLEANER_H_
diff --git a/src/db/file_models.cc b/src/db/file_models.cc
new file mode 100644
index 0000000..0fe6d8f
--- /dev/null
+++ b/src/db/file_models.cc
@@ -0,0 +1,181 @@
+// Copyright (C) 2019 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
+//
+// http://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 "common/cmd_utils.h"
+#include "db/file_models.h"
+#include "db/models.h"
+
+#include <android-base/file.h>
+#include <android-base/properties.h>
+
+#include <algorithm>
+#include <sstream>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+namespace iorap::db {
+
+static constexpr const char* kRootPathProp = "iorapd.root.dir";
+static const unsigned int kPerfettoMaxTraces =
+ ::android::base::GetUintProperty("iorapd.perfetto.max_traces", /*default*/10u);
+
+static uint64_t GetTimeNanoseconds() {
+ struct timespec now;
+ clock_gettime(CLOCK_REALTIME, &now);
+
+ uint64_t now_ns = (now.tv_sec * 1000000000LL + now.tv_nsec);
+ return now_ns;
+}
+
+static bool IsDir(const std::string& dirpath) {
+ struct stat st;
+ if (stat(dirpath.c_str(), &st) == 0) {
+ if (S_ISDIR(st.st_mode)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+// Given some path /a/b/c create all of /a, /a/b, /a/b/c/ recursively.
+static bool MkdirWithParents(const std::string& path) {
+ size_t prev_end = 0;
+ while (prev_end < path.size()) {
+ size_t next_end = path.find('/', prev_end + 1);
+
+ std::string dir_path = path.substr(0, next_end);
+ if (!IsDir(dir_path)) {
+#if defined(_WIN32)
+ int ret = mkdir(dir_path.c_str());
+#else
+ mode_t old_mask = umask(0);
+ // The user permission is 5 to allow system server to
+ // read the files. No other users could do that because
+ // the upper directory only allows system server and iorapd
+ // to access. Also selinux rules prevent other users to
+ // read files here.
+ int ret = mkdir(dir_path.c_str(), 0755);
+ umask(old_mask);
+#endif
+ if (ret != 0) {
+ PLOG(ERROR) << "failed to create dir " << dir_path;
+ return false;
+ }
+ }
+ prev_end = next_end;
+
+ if (next_end == std::string::npos) {
+ break;
+ }
+ }
+ return true;
+}
+
+FileModelBase::FileModelBase(VersionedComponentName vcn)
+ : vcn_{std::move(vcn)} {
+ root_path_ = common::GetEnvOrProperty(kRootPathProp,
+ /*default*/"/data/misc/iorapd");
+}
+
+std::string FileModelBase::BaseDir() const {
+ std::stringstream ss;
+
+ ss << root_path_ << "/" << vcn_.GetPackage() << "/";
+ ss << vcn_.GetVersion();
+ ss << "/";
+ ss << vcn_.GetActivity() << "/";
+ ss << SubDir();
+
+ return ss.str();
+}
+
+std::string FileModelBase::FilePath() const {
+ std::stringstream ss;
+ ss << BaseDir();
+ ss << "/";
+ ss << BaseFile();
+
+ return ss.str();
+}
+
+bool FileModelBase::MkdirWithParents() {
+ LOG(VERBOSE) << "MkdirWithParents: " << BaseDir();
+ return ::iorap::db::MkdirWithParents(BaseDir());
+}
+
+PerfettoTraceFileModel::PerfettoTraceFileModel(VersionedComponentName vcn,
+ uint64_t timestamp)
+ : FileModelBase{std::move(vcn)}, timestamp_{timestamp} {
+}
+
+PerfettoTraceFileModel PerfettoTraceFileModel::CalculateNewestFilePath(VersionedComponentName vcn) {
+ uint64_t timestamp = GetTimeNanoseconds();
+ return PerfettoTraceFileModel{vcn, timestamp};
+}
+
+std::string PerfettoTraceFileModel::BaseFile() const {
+ std::stringstream ss;
+ ss << timestamp_ << ".perfetto_trace.pb";
+ return ss.str();
+}
+
+void PerfettoTraceFileModel::DeleteOlderFiles(DbHandle& db, VersionedComponentName vcn) {
+ std::vector<RawTraceModel> raw_traces =
+ RawTraceModel::SelectByVersionedComponentName(db, vcn);
+
+ if (WOULD_LOG(VERBOSE)) {
+ size_t raw_traces_size = raw_traces.size();
+ for (size_t i = 0; i < raw_traces_size; ++i) {
+ LOG(VERBOSE) << "DeleteOlderFiles - selected " << raw_traces[i];
+ }
+ LOG(VERBOSE) << "DeleteOlderFiles - queried total " << raw_traces_size << " records";
+ }
+
+ size_t items_to_delete = 0;
+ if (raw_traces.size() > kPerfettoMaxTraces) {
+ items_to_delete = raw_traces.size() - kPerfettoMaxTraces;
+ } else {
+ LOG(VERBOSE) << "DeleteOlderFiles - don't delete older raw traces, too few files: "
+ << " wanted at least " << kPerfettoMaxTraces << ", but got " << raw_traces.size();
+ }
+
+ for (size_t i = 0; i < items_to_delete; ++i) {
+ RawTraceModel& raw_trace = raw_traces[i]; // sorted ascending -> items to delete are first.
+ std::string err_msg;
+
+ if (!::android::base::RemoveFileIfExists(raw_trace.file_path, /*out*/&err_msg)) {
+ LOG(ERROR) << "Failed to remove raw trace file: " << raw_trace.file_path
+ << ", reason: " << err_msg;
+ } else {
+ raw_trace.Delete();
+ LOG(DEBUG) << "Deleted raw trace for " << vcn << " at " << raw_trace.file_path;
+ }
+ }
+}
+
+CompiledTraceFileModel::CompiledTraceFileModel(VersionedComponentName vcn)
+ : FileModelBase{std::move(vcn)} {
+}
+
+CompiledTraceFileModel CompiledTraceFileModel::CalculateNewestFilePath(VersionedComponentName vcn) {
+ return CompiledTraceFileModel{vcn};
+}
+
+std::string CompiledTraceFileModel::BaseFile() const {
+ return "compiled_trace.pb";
+}
+
+} // namespace iorap::db
diff --git a/src/db/file_models.h b/src/db/file_models.h
new file mode 100644
index 0000000..135c98a
--- /dev/null
+++ b/src/db/file_models.h
@@ -0,0 +1,124 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_DB_FILE_MODELS_H_
+#define IORAP_SRC_DB_FILE_MODELS_H_
+
+#include <optional>
+#include <ostream>
+#include <string>
+
+namespace iorap::db {
+
+struct VersionedComponentName {
+ VersionedComponentName(std::string package,
+ std::string activity,
+ int64_t version)
+ : package_{std::move(package)},
+ activity_{std::move(activity)},
+ version_{version} {
+ }
+
+ const std::string& GetPackage() const {
+ return package_;
+ }
+
+ const std::string& GetActivity() const {
+ return activity_;
+ }
+
+ int GetVersion() const {
+ return version_;
+ }
+
+ private:
+ std::string package_;
+ std::string activity_;
+ int64_t version_;
+};
+
+inline std::ostream& operator<<(std::ostream& os, const VersionedComponentName& vcn) {
+ os << vcn.GetPackage() << "/" << vcn.GetActivity() << "@" << vcn.GetVersion();
+ return os;
+}
+
+class FileModelBase {
+ protected:
+ FileModelBase(VersionedComponentName vcn);
+
+ virtual std::string SubDir() const = 0;
+ // Include the last file component only (/a/b/c.txt -> c.txt)
+ virtual std::string BaseFile() const = 0;
+
+ virtual ~FileModelBase() {}
+
+ public:
+ virtual std::string ModelName() const = 0;
+ // Return the absolute file path to this FileModel.
+ std::string FilePath() const;
+
+ // Include the full path minus the basefile (/a/b/c.txt -> /a/b)
+ std::string BaseDir() const;
+
+ // Create the base dir recursively (e.g. mkdir -p $basedir).
+ bool MkdirWithParents();
+ private:
+ VersionedComponentName vcn_;
+ std::string subdir_;
+ std::string filename_;
+ std::string root_path_;
+};
+
+inline std::ostream& operator<<(std::ostream& os, const FileModelBase& fmb) {
+ os << fmb.ModelName() << "{'" << fmb.FilePath() << "'}";
+ return os;
+}
+
+class DbHandle;
+
+class PerfettoTraceFileModel : public FileModelBase {
+ protected:
+ virtual std::string ModelName() const override { return "PerfettoTrace"; }
+ virtual std::string SubDir() const override { return "raw_traces"; }
+ virtual std::string BaseFile() const override;
+
+ PerfettoTraceFileModel(VersionedComponentName vcn,
+ uint64_t timestamp);
+
+ public:
+ static PerfettoTraceFileModel CalculateNewestFilePath(VersionedComponentName vcn);
+ static void DeleteOlderFiles(DbHandle& db, VersionedComponentName vcn);
+
+ virtual ~PerfettoTraceFileModel() {}
+ private:
+ uint64_t timestamp_;
+};
+
+class CompiledTraceFileModel : public FileModelBase {
+ protected:
+ virtual std::string ModelName() const override { return "CompiledTrace"; }
+ virtual std::string SubDir() const override { return "compiled_traces"; }
+ virtual std::string BaseFile() const override;
+
+ CompiledTraceFileModel(VersionedComponentName vcn);
+
+ public:
+ static CompiledTraceFileModel CalculateNewestFilePath(VersionedComponentName vcn);
+
+ virtual ~CompiledTraceFileModel() {}
+};
+
+} // namespace iorap::db
+
+#endif // IORAP_SRC_DB_FILE_MODELS_H_
diff --git a/src/db/main.cc b/src/db/main.cc
new file mode 100644
index 0000000..2edd961
--- /dev/null
+++ b/src/db/main.cc
@@ -0,0 +1,230 @@
+// Copyright (C) 2019 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
+//
+// http://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 "common/debug.h"
+#include "common/loggers.h"
+#include "db/app_component_name.h"
+#include "db/models.h"
+
+#include <android-base/parseint.h>
+#include <android-base/logging.h>
+
+#include <iostream>
+#include <optional>
+#include <string_view>
+#include <string>
+#include <vector>
+
+#include <sqlite3.h>
+
+#include <signal.h>
+
+namespace iorap::db {
+
+void Usage(char** argv) {
+ std::cerr << "Usage: " << argv[0] << " <path-to-sqlite.db>" << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Interface with the iorap sqlite database and issue commands." << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Optional flags:" << std::endl;
+ std::cerr << " --help,-h Print this Usage." << std::endl;
+ std::cerr << " --register-raw-trace,-rrt Register raw trace file path." << std::endl;
+ std::cerr << " --register-compiled-trace,-rct Register compiled trace file path." << std::endl;
+ std::cerr << " --insert-component,-ic Add component if it doesn't exist." << std::endl;
+ std::cerr << " --initialize,-i Initialize new database." << std::endl;
+ std::cerr << " --rescan,-rs Update all from canonical directories." << std::endl;
+ std::cerr << " --prune,-pr Remove any stale file paths." << std::endl;
+ std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl;
+ std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl;
+ exit(1);
+}
+
+void error_log_sqlite_callback(void *pArg, int iErrCode, const char *zMsg) {
+ LOG(ERROR) << "SQLite error (" << iErrCode << "): " << zMsg;
+}
+
+const constexpr int64_t kNoVersion = -1;
+
+int Main(int argc, char** argv) {
+ // Go to system logcat + stderr when running from command line.
+ android::base::InitLogging(argv, iorap::common::StderrAndLogdLogger{android::base::SYSTEM});
+
+ bool wait_for_keystroke = false;
+ bool enable_verbose = false;
+
+ bool command_format_text = false; // false = binary.
+
+ int arg_input_fd = -1;
+ int arg_output_fd = -1;
+
+ std::vector<std::string> arg_input_filenames;
+ bool arg_use_sockets = false;
+
+ std::vector<std::pair<std::string,std::string>> arg_register_raw_trace;
+ std::vector<std::pair<std::string,std::string>> arg_register_compiled_trace;
+
+ std::vector<std::string> arg_insert_component;
+
+ bool arg_initialize = false;
+ bool arg_rescan = false;
+ bool arg_prune = false;
+
+ LOG(VERBOSE) << "argparse: argc=" << argc;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+ bool has_arg_next = (arg+1)<argc;
+ std::string arg_next = has_arg_next ? argv[arg+1] : "";
+
+ bool has_arg_next_next = (arg+2)<argc;
+ std::string arg_next_next = has_arg_next_next ? argv[arg+2] : "";
+
+ LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr;
+
+ if (argstr == "--help" || argstr == "-h") {
+ Usage(argv);
+ } else if (argstr == "--register-raw-trace" || argstr == "-rrt") {
+ if (!has_arg_next_next) {
+ LOG(ERROR) << "--register-raw-trace <component/name> <filepath>";
+ Usage(argv);
+ }
+ arg_register_raw_trace.push_back({arg_next, arg_next_next});
+ } else if (argstr == "--register-compiled-trace" || argstr == "-rct") {
+ if (!has_arg_next_next) {
+ LOG(ERROR) << "--register-compiled-trace <component/name> <filepath>";
+ Usage(argv);
+ }
+ arg_register_compiled_trace.push_back({arg_next, arg_next_next});
+ } else if (argstr == "--insert-component" || argstr == "-ic") {
+ if (!has_arg_next) {
+ LOG(ERROR) << "--insert-component <component/name>";
+ Usage(argv);
+ }
+ arg_insert_component.push_back(arg_next);
+ } else if (argstr == "--initialize" || argstr == "-i") {
+ arg_initialize = true;
+ } else if (argstr == "--rescan" || argstr == "-rs") {
+ arg_rescan = true;
+ } else if (argstr == "--prune" || argstr == "-pr") {
+ arg_prune = true;
+ } else if (argstr == "--verbose" || argstr == "-v") {
+ enable_verbose = true;
+ } else if (argstr == "--wait" || argstr == "-w") {
+ wait_for_keystroke = true;
+ } else {
+ arg_input_filenames.push_back(argstr);
+ }
+ }
+
+ if (arg_input_filenames.empty()) {
+ LOG(ERROR) << "Missing positional filename to a sqlite database.";
+ Usage(argv);
+ }
+
+ if (enable_verbose) {
+ android::base::SetMinimumLogSeverity(android::base::VERBOSE);
+
+ LOG(VERBOSE) << "Verbose check";
+ LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild;
+ } else {
+ android::base::SetMinimumLogSeverity(android::base::DEBUG);
+ }
+
+ LOG(VERBOSE) << "argparse: argc=" << argc;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+
+ LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr;
+ }
+
+ // Useful to attach a debugger...
+ // 1) $> iorap.cmd.readahead -w <args>
+ // 2) $> gdbclient <pid>
+ if (wait_for_keystroke) {
+ LOG(INFO) << "Self pid: " << getpid();
+
+ raise(SIGSTOP);
+ // LOG(INFO) << "Press any key to continue...";
+ // std::cin >> wait_for_keystroke;
+ }
+
+ // auto system_call = std::make_unique<SystemCallImpl>();
+ // TODO: mock readahead calls?
+ //
+ // Uncomment this if we want to leave the process around to inspect it from adb shell.
+ // sleep(100000);
+
+ int return_code = 0;
+
+ LOG(VERBOSE) << "Hello world";
+
+
+ do {
+ SchemaModel schema_model = SchemaModel::GetOrCreate(arg_input_filenames[0]);
+ DbHandle db = schema_model.db();
+ if (arg_initialize) {
+ // Drop tables and restart from scratch. All rows are effectively dropped.
+ schema_model.Reinitialize();
+ }
+
+ for (const auto& component_and_file_name : arg_register_raw_trace) {
+ AppComponentName component_name = AppComponentName::FromString(component_and_file_name.first);
+ const std::string& file_path = component_and_file_name.second;
+
+ LOG(VERBOSE) << "--register-raw-trace " << component_name << ", file_path: " << file_path;
+
+ std::optional<ActivityModel> activity =
+ ActivityModel::SelectOrInsert(db,
+ component_name.package,
+ kNoVersion,
+ component_name.activity_name);
+ DCHECK(activity.has_value());
+ LOG(DEBUG) << "Component selected/inserted: " << *activity;
+ }
+
+ for (const std::string& component : arg_insert_component) {
+ AppComponentName component_name = AppComponentName::FromString(component);
+
+ LOG(VERBOSE) << "raw component: " << component;
+ LOG(VERBOSE) << "package: " << component_name.package;
+ LOG(VERBOSE) << "activity name: " << component_name.activity_name;
+
+ LOG(VERBOSE) << "--insert-component " << component_name;
+
+ std::optional<ActivityModel> activity =
+ ActivityModel::SelectOrInsert(db,
+ component_name.package,
+ kNoVersion,
+ component_name.activity_name);
+
+ DCHECK(activity.has_value());
+ LOG(DEBUG) << "Component selected/inserted: " << *activity;
+ }
+ } while (false);
+
+ LOG(VERBOSE) << "main: Terminating";
+
+ // 0 -> successfully executed all commands.
+ // 1 -> failed along the way (#on_error and also see the error logs).
+ return return_code;
+}
+
+} // namespace iorap::db
+
+#if defined(IORAP_DB_MAIN)
+int main(int argc, char** argv) {
+ return ::iorap::db::Main(argc, argv);
+}
+#endif // IORAP_DB_MAIN
diff --git a/src/db/models.cc b/src/db/models.cc
new file mode 100644
index 0000000..851a061
--- /dev/null
+++ b/src/db/models.cc
@@ -0,0 +1,21 @@
+// Copyright (C) 2019 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
+//
+// http://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 "db/models.h"
+
+namespace iorap::db {
+
+std::optional<DbHandle> SchemaModel::s_singleton_;
+
+} // namespace iorap::db
diff --git a/src/db/models.h b/src/db/models.h
new file mode 100644
index 0000000..df6beb6
--- /dev/null
+++ b/src/db/models.h
@@ -0,0 +1,1130 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_DB_MODELS_H_
+#define IORAP_SRC_DB_MODELS_H_
+
+#include "clean_up.h"
+#include "file_models.h"
+
+#include <android-base/logging.h>
+#include <utils/String8.h>
+
+#include <filesystem>
+#include <iostream>
+#include <optional>
+#include <ostream>
+#include <string>
+#include <sstream>
+#include <type_traits>
+#include <vector>
+
+#include <sqlite3.h>
+
+namespace iorap::db {
+
+const constexpr int kDbVersion = 2;
+
+struct SqliteDbDeleter {
+ void operator()(sqlite3* db) {
+ if (db != nullptr) {
+ LOG(VERBOSE) << "sqlite3_close for: " << db;
+ sqlite3_close(db);
+ }
+ }
+};
+
+class DbHandle {
+ public:
+ // Take over ownership of sqlite3 db.
+ explicit DbHandle(sqlite3* db)
+ : db_{std::shared_ptr<sqlite3>{db, SqliteDbDeleter{}}},
+ mutex_{std::make_shared<std::mutex>()} {
+ }
+
+ sqlite3* get() {
+ return db_.get();
+ }
+
+ operator sqlite3*() {
+ return db_.get();
+ }
+
+ std::mutex& mutex() {
+ return *mutex_.get();
+ }
+
+ private:
+ std::shared_ptr<sqlite3> db_;
+ std::shared_ptr<std::mutex> mutex_;
+};
+
+class ScopedLockDb {
+ public:
+ ScopedLockDb(std::mutex& mutex) : mutex(mutex) {
+ mutex.lock();
+ }
+
+ ScopedLockDb(DbHandle& handle) : ScopedLockDb(handle.mutex()) {
+ }
+
+ ~ScopedLockDb() {
+ mutex.unlock();
+ }
+ private:
+ std::mutex& mutex;
+};
+
+class DbStatement {
+ public:
+ template <typename ... Args>
+ static DbStatement Prepare(DbHandle db, const std::string& sql, Args&&... args) {
+ return Prepare(db, sql.c_str(), std::forward<Args>(args)...);
+ }
+
+ template <typename ... Args>
+ static DbStatement Prepare(DbHandle db, const char* sql, Args&&... args) {
+ DCHECK(db.get() != nullptr);
+ DCHECK(sql != nullptr);
+
+ // LOG(VERBOSE) << "Prepare DB=" << db.get();
+
+ sqlite3_stmt* stmt = nullptr;
+ int rc = sqlite3_prepare_v2(db.get(), sql, -1, /*out*/&stmt, nullptr);
+
+ DbStatement db_stmt{db, stmt};
+ DCHECK(db_stmt.CheckOk(rc)) << sql;
+ db_stmt.BindAll(std::forward<Args>(args)...);
+
+ return db_stmt;
+ }
+
+ DbStatement(DbHandle db, sqlite3_stmt* stmt) : db_(db), stmt_(stmt) {
+ }
+
+ sqlite3_stmt* get() {
+ return stmt_;
+ }
+
+ DbHandle db() {
+ return db_;
+ }
+
+ // Successive BindAll calls *do not* start back at the 0th bind position.
+ template <typename T, typename ... Args>
+ void BindAll(T&& arg, Args&&... args) {
+ Bind(std::forward<T>(arg));
+ BindAll(std::forward<Args>(args)...);
+ }
+
+ void BindAll() {}
+
+ template <typename T>
+ void Bind(const std::optional<T>& value) {
+ if (value) {
+ Bind(*value);
+ } else {
+ BindNull();
+ }
+ }
+
+ void Bind(bool value) {
+ CheckOk(sqlite3_bind_int(stmt_, bind_counter_++, value));
+ }
+
+ void Bind(int value) {
+ CheckOk(sqlite3_bind_int(stmt_, bind_counter_++, value));
+ }
+
+ void Bind(uint64_t value) {
+ CheckOk(sqlite3_bind_int64(stmt_, bind_counter_++, static_cast<int64_t>(value)));
+ }
+
+ void Bind(const char* value) {
+ if (value != nullptr) {
+ //sqlite3_bind_text(stmt_, /*index*/bind_counter_++, value, -1, SQLITE_STATIC);
+ CheckOk(sqlite3_bind_text(stmt_, /*index*/bind_counter_++, value, -1, SQLITE_TRANSIENT));
+ } else {
+ BindNull();
+ }
+ }
+
+ void Bind(const std::string& value) {
+ Bind(value.c_str());
+ }
+
+ template <typename E, typename = std::enable_if_t<std::is_enum_v<E>>>
+ void Bind(E value) {
+ Bind(static_cast<std::underlying_type_t<E>>(value));
+ }
+
+ void BindNull() {
+ CheckOk(sqlite3_bind_null(stmt_, bind_counter_++));
+ }
+
+ int Step() {
+ ++step_counter_;
+ return sqlite3_step(stmt_);
+ }
+
+ bool Step(int expected) {
+ int rc = Step();
+ if (rc != expected) {
+ LOG(ERROR) << "SQLite error: " << sqlite3_errmsg(db_.get());
+ return false;
+ }
+ return true;
+ }
+
+ // Successive ColumnAll calls start at the 0th column again.
+ template <typename T, typename ... Args>
+ void ColumnAll(T& first, Args&... rest) {
+ Column(first);
+ ColumnAll(rest...);
+ // Reset column counter back to 0
+ column_counter_ = 0;
+ }
+
+ void ColumnAll() {}
+
+ template <typename T>
+ void Column(std::optional<T>& value) {
+ T tmp;
+ Column(/*out*/tmp);
+
+ if (!tmp) { // disambiguate 0 and NULL
+ const unsigned char* text = sqlite3_column_text(stmt_, column_counter_ - 1);
+ if (text == nullptr) {
+ value = std::nullopt;
+ return;
+ }
+ }
+ value = std::move(tmp);
+ }
+
+ template <typename E, typename = std::enable_if_t<std::is_enum_v<E>>>
+ void Column(E& value) {
+ std::underlying_type_t<E> tmp;
+ Column(/*out*/tmp);
+ value = static_cast<E>(tmp);
+ }
+
+ void Column(bool& value) {
+ value = sqlite3_column_int(stmt_, column_counter_++);
+ }
+
+ void Column(int& value) {
+ value = sqlite3_column_int(stmt_, column_counter_++);
+ }
+
+ void Column(uint64_t& value) {
+ value = static_cast<uint64_t>(sqlite3_column_int64(stmt_, column_counter_++));
+ }
+
+ void Column(std::string& value) {
+ const unsigned char* text = sqlite3_column_text(stmt_, column_counter_++);
+
+ DCHECK(text != nullptr) << "Column should be marked NOT NULL, otherwise use optional<string>";
+ if (text == nullptr) {
+ LOG(ERROR) << "Got NULL back for column " << column_counter_-1
+ << "; is this column marked NOT NULL?";
+ value = "(((null)))"; // Don't segfault, keep going.
+ return;
+ }
+
+ value = std::string{reinterpret_cast<const char*>(text)};
+ }
+
+ const char* ExpandedSql() {
+ char* p = sqlite3_expanded_sql(stmt_);
+ if (p == nullptr) {
+ return "(nullptr)";
+ }
+ return p;
+ }
+
+ const char* Sql() {
+ const char* p = sqlite3_sql(stmt_);
+ if (p == nullptr) {
+ return "(nullptr)";
+ }
+ return p;
+ }
+
+
+ DbStatement(DbStatement&& other)
+ : db_{other.db_}, stmt_{other.stmt_}, bind_counter_{other.bind_counter_},
+ step_counter_{other.step_counter_} {
+ other.db_ = DbHandle{nullptr};
+ other.stmt_ = nullptr;
+ }
+
+ ~DbStatement() {
+ if (stmt_ != nullptr) {
+ DCHECK_GT(step_counter_, 0) << " forgot to call Step()?";
+ sqlite3_finalize(stmt_);
+ }
+ }
+
+ private:
+ bool CheckOk(int rc, int expected = SQLITE_OK) {
+ if (rc != expected) {
+ LOG(ERROR) << "Got error for SQL query: '" << Sql() << "'"
+ << ", expanded: '" << ExpandedSql() << "'";
+ LOG(ERROR) << "Failed SQLite api call (" << rc << "): " << sqlite3_errstr(rc);
+ }
+ return rc == expected;
+ }
+
+ DbHandle db_;
+ sqlite3_stmt* stmt_;
+ int bind_counter_ = 1;
+ int step_counter_ = 0;
+ int column_counter_ = 0;
+};
+
+class DbQueryBuilder {
+ public:
+ // Returns the row ID that was inserted last.
+ template <typename... Args>
+ static std::optional<int> Insert(DbHandle db, const std::string& sql, Args&&... args) {
+ ScopedLockDb lock{db};
+
+ sqlite3_int64 last_rowid = sqlite3_last_insert_rowid(db.get());
+ DbStatement stmt = DbStatement::Prepare(db, sql, std::forward<Args>(args)...);
+
+ if (!stmt.Step(SQLITE_DONE)) {
+ return std::nullopt;
+ }
+
+ last_rowid = sqlite3_last_insert_rowid(db.get());
+ DCHECK_GT(last_rowid, 0);
+
+ return static_cast<int>(last_rowid);
+ }
+
+ template <typename... Args>
+ static bool Delete(DbHandle db, const std::string& sql, Args&&... args) {
+ return ExecuteOnce(db, sql, std::forward<Args>(args)...);
+ }
+
+ template <typename... Args>
+ static bool Update(DbHandle db, const std::string& sql, Args&&... args) {
+ return ExecuteOnce(db, sql, std::forward<Args>(args)...);
+ }
+
+ template <typename... Args>
+ static bool ExecuteOnce(DbHandle db, const std::string& sql, Args&&... args) {
+ ScopedLockDb lock{db};
+
+ DbStatement stmt = DbStatement::Prepare(db, sql, std::forward<Args>(args)...);
+
+ if (!stmt.Step(SQLITE_DONE)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ template <typename... Args>
+ static bool SelectOnce(DbStatement& stmt, Args&... args) {
+ int rc = stmt.Step();
+ switch (rc) {
+ case SQLITE_ROW:
+ stmt.ColumnAll(/*out*/args...);
+ return true;
+ case SQLITE_DONE:
+ return false;
+ default:
+ LOG(ERROR) << "Failed to step (" << rc << "): " << sqlite3_errmsg(stmt.db());
+ return false;
+ }
+ }
+};
+
+class Model {
+ public:
+ DbHandle db() const {
+ return db_;
+ }
+
+ Model(DbHandle db) : db_{db} {
+ }
+
+ private:
+ DbHandle db_;
+};
+
+class SchemaModel : public Model {
+ public:
+ static SchemaModel GetOrCreate(std::string location) {
+ int rc = sqlite3_config(SQLITE_CONFIG_LOG, ErrorLogCallback, /*data*/nullptr);
+
+ if (rc != SQLITE_OK) {
+ LOG(FATAL) << "Failed to configure logging";
+ }
+
+ sqlite3* db = nullptr;
+ bool is_deprecated = false;
+ if (location != ":memory:") {
+ // Try to open DB if it already exists.
+ rc = sqlite3_open_v2(location.c_str(), /*out*/&db, SQLITE_OPEN_READWRITE, /*vfs*/nullptr);
+
+ if (rc == SQLITE_OK) {
+ LOG(INFO) << "Opened existing database at '" << location << "'";
+ SchemaModel schema{DbHandle{db}, location};
+ if (schema.Version() == kDbVersion) {
+ return schema;
+ } else {
+ LOG(DEBUG) << "The version is old, reinit the db."
+ << " old version is "
+ << schema.Version()
+ << " and new version is "
+ << kDbVersion;
+ CleanUpFilesForDb(schema.db());
+ is_deprecated = true;
+ }
+ }
+ }
+
+ if (is_deprecated) {
+ // Remove the db and recreate it.
+ // TODO: migrate to a newer version without deleting the old one.
+ std::filesystem::remove(location.c_str());
+ }
+
+ // Create a new DB if one didn't exist already.
+ rc = sqlite3_open(location.c_str(), /*out*/&db);
+
+ if (rc != SQLITE_OK) {
+ LOG(FATAL) << "Failed to open DB: " << sqlite3_errmsg(db);
+ }
+
+ SchemaModel schema{DbHandle{db}, location};
+ schema.Reinitialize();
+ // TODO: migrate versions upwards when we rev the schema version
+
+ int old_version = schema.Version();
+ LOG(VERBOSE) << "Loaded schema version: " << old_version;
+
+ return schema;
+ }
+
+ void MarkSingleton() {
+ s_singleton_ = db();
+ }
+
+ static DbHandle GetSingleton() {
+ DCHECK(s_singleton_.has_value());
+ return *s_singleton_;
+ }
+
+ void Reinitialize() {
+ const char* sql_to_initialize = R"SQLC0D3(
+ DROP TABLE IF EXISTS schema_versions;
+ DROP TABLE IF EXISTS packages;
+ DROP TABLE IF EXISTS activities;
+ DROP TABLE IF EXISTS app_launch_histories;
+ DROP TABLE IF EXISTS raw_traces;
+ DROP TABLE IF EXISTS prefetch_files;
+)SQLC0D3";
+ char* err_msg = nullptr;
+ int rc = sqlite3_exec(db().get(),
+ sql_to_initialize,
+ /*callback*/nullptr,
+ /*arg*/0,
+ /*out*/&err_msg);
+ if (rc != SQLITE_OK) {
+ LOG(FATAL) << "Failed to drop tables: " << err_msg ? err_msg : "nullptr";
+ }
+
+ CreateSchema();
+ LOG(INFO) << "Reinitialized database at '" << location_ << "'";
+ }
+
+ int Version() {
+ std::string query = "SELECT MAX(version) FROM schema_versions;";
+ DbStatement stmt = DbStatement::Prepare(db(), query);
+
+ int return_value = 0;
+ if (!DbQueryBuilder::SelectOnce(stmt, /*out*/return_value)) {
+ LOG(ERROR) << "Failed to query schema version";
+ return -1;
+ }
+
+ return return_value;
+ }
+
+ protected:
+ SchemaModel(DbHandle db, std::string location) : Model{db}, location_(location) {
+ }
+
+ private:
+ static std::optional<DbHandle> s_singleton_;
+
+ void CreateSchema() {
+ const char* sql_to_initialize = R"SQLC0D3(
+ CREATE TABLE schema_versions(
+ version INTEGER NOT NULL
+ );
+
+ CREATE TABLE packages(
+ id INTEGER NOT NULL,
+ name TEXT NOT NULL,
+ version INTEGER NOT NULL,
+
+ PRIMARY KEY(id)
+ );
+
+ CREATE TABLE activities(
+ id INTEGER NOT NULL,
+ name TEXT NOT NULL,
+ package_id INTEGER NOT NULL,
+
+ PRIMARY KEY(id),
+ FOREIGN KEY (package_id) REFERENCES packages (id) ON DELETE CASCADE
+ );
+
+ CREATE TABLE app_launch_histories(
+ id INTEGER NOT NULL PRIMARY KEY,
+ activity_id INTEGER NOT NULL,
+ -- 1:Cold, 2:Warm, 3:Hot
+ temperature INTEGER CHECK (temperature IN (1, 2, 3)) NOT NULL,
+ trace_enabled INTEGER CHECK(trace_enabled in (TRUE, FALSE)) NOT NULL,
+ readahead_enabled INTEGER CHECK(trace_enabled in (TRUE, FALSE)) NOT NULL,
+ -- absolute timestamp since epoch
+ intent_started_ns INTEGER CHECK(intent_started_ns IS NULL or intent_started_ns >= 0),
+ -- absolute timestamp since epoch
+ total_time_ns INTEGER CHECK(total_time_ns IS NULL or total_time_ns >= 0),
+ -- absolute timestamp since epoch
+ report_fully_drawn_ns INTEGER CHECK(report_fully_drawn_ns IS NULL or report_fully_drawn_ns >= 0),
+
+ FOREIGN KEY (activity_id) REFERENCES activities (id) ON DELETE CASCADE
+ );
+
+ CREATE TABLE raw_traces(
+ id INTEGER NOT NULL PRIMARY KEY,
+ history_id INTEGER NOT NULL,
+ file_path TEXT NOT NULL,
+
+ FOREIGN KEY (history_id) REFERENCES app_launch_histories (id) ON DELETE CASCADE
+ );
+
+ CREATE TABLE prefetch_files(
+ id INTEGER NOT NULL PRIMARY KEY,
+ activity_id INTEGER NOT NULL,
+ file_path TEXT NOT NULL,
+
+ FOREIGN KEY (activity_id) REFERENCES activities (id) ON DELETE CASCADE
+ );
+)SQLC0D3";
+
+ char* err_msg = nullptr;
+ int rc = sqlite3_exec(db().get(),
+ sql_to_initialize,
+ /*callback*/nullptr,
+ /*arg*/0,
+ /*out*/&err_msg);
+
+ if (rc != SQLITE_OK) {
+ LOG(FATAL) << "Failed to create tables: " << err_msg ? err_msg : "nullptr";
+ }
+
+ const char* sql_to_insert_schema_version = R"SQLC0D3(
+ INSERT INTO schema_versions VALUES(%d)
+ )SQLC0D3";
+ rc = sqlite3_exec(db().get(),
+ android::String8::format(sql_to_insert_schema_version,
+ kDbVersion),
+ /*callback*/nullptr,
+ /*arg*/0,
+ /*out*/&err_msg);
+
+ if (rc != SQLITE_OK) {
+ LOG(FATAL) << "Failed to insert the schema version: "
+ << err_msg ? err_msg : "nullptr";
+ }
+ }
+
+ static void ErrorLogCallback(void *pArg, int iErrCode, const char *zMsg) {
+ LOG(ERROR) << "SQLite error (" << iErrCode << "): " << zMsg;
+ }
+
+ std::string location_;
+};
+
+class PackageModel : public Model {
+ protected:
+ PackageModel(DbHandle db) : Model{db} {
+ }
+
+ public:
+ static std::optional<PackageModel> SelectById(DbHandle db, int id) {
+ ScopedLockDb lock{db};
+ int original_id = id;
+
+ std::string query = "SELECT * FROM packages WHERE id = ?1 LIMIT 1;";
+ DbStatement stmt = DbStatement::Prepare(db, query, id);
+
+ PackageModel p{db};
+ if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) {
+ return std::nullopt;
+ }
+
+ return p;
+ }
+
+ static std::vector<PackageModel> SelectByName(DbHandle db, const char* name) {
+ ScopedLockDb lock{db};
+
+ std::string query = "SELECT * FROM packages WHERE name = ?1;";
+ DbStatement stmt = DbStatement::Prepare(db, query, name);
+
+ std::vector<PackageModel> packages;
+
+ PackageModel p{db};
+ while (DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) {
+ packages.push_back(p);
+ }
+
+ return packages;
+ }
+
+ static std::optional<PackageModel> SelectByNameAndVersion(DbHandle db,
+ const char* name,
+ int version) {
+ ScopedLockDb lock{db};
+
+ std::string query =
+ "SELECT * FROM packages WHERE name = ?1 AND version = ?2 LIMIT 1;";
+ DbStatement stmt = DbStatement::Prepare(db, query, name, version);
+
+ PackageModel p{db};
+ if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) {
+ return std::nullopt;
+ }
+
+ return p;
+ }
+
+ static std::vector<PackageModel> SelectAll(DbHandle db) {
+ ScopedLockDb lock{db};
+
+ std::string query = "SELECT * FROM packages;";
+ DbStatement stmt = DbStatement::Prepare(db, query);
+
+ std::vector<PackageModel> packages;
+ PackageModel p{db};
+ while (DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) {
+ packages.push_back(p);
+ }
+
+ return packages;
+ }
+
+ static std::optional<PackageModel> Insert(DbHandle db,
+ std::string name,
+ int version) {
+ const char* sql = "INSERT INTO packages (name, version) VALUES (?1, ?2);";
+
+ std::optional<int> inserted_row_id =
+ DbQueryBuilder::Insert(db, sql, name, version);
+ if (!inserted_row_id) {
+ return std::nullopt;
+ }
+
+ PackageModel p{db};
+ p.name = name;
+ p.version = version;
+ p.id = *inserted_row_id;
+
+ return p;
+ }
+
+ bool Delete() {
+ const char* sql = "DELETE FROM packages WHERE id = ?";
+
+ return DbQueryBuilder::Delete(db(), sql, id);
+ }
+
+ int id;
+ std::string name;
+ int version;
+};
+
+inline std::ostream& operator<<(std::ostream& os, const PackageModel& p) {
+ os << "PackageModel{id=" << p.id << ",name=" << p.name << ",";
+ os << "version=";
+ os << p.version;
+ os << "}";
+ return os;
+}
+
+class ActivityModel : public Model {
+ protected:
+ ActivityModel(DbHandle db) : Model{db} {
+ }
+
+ public:
+ static std::optional<ActivityModel> SelectById(DbHandle db, int id) {
+ ScopedLockDb lock{db};
+ int original_id = id;
+
+ std::string query = "SELECT * FROM activities WHERE id = ? LIMIT 1;";
+ DbStatement stmt = DbStatement::Prepare(db, query, id);
+
+ ActivityModel p{db};
+ if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.package_id)) {
+ return std::nullopt;
+ }
+
+ return p;
+ }
+
+ static std::optional<ActivityModel> SelectByNameAndPackageId(DbHandle db,
+ const char* name,
+ int package_id) {
+ ScopedLockDb lock{db};
+
+ std::string query = "SELECT * FROM activities WHERE name = ? AND package_id = ? LIMIT 1;";
+ DbStatement stmt = DbStatement::Prepare(db, query, name, package_id);
+
+ ActivityModel p{db};
+ if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.package_id)) {
+ return std::nullopt;
+ }
+
+ return p;
+ }
+
+ static std::vector<ActivityModel> SelectByPackageId(DbHandle db,
+ int package_id) {
+ ScopedLockDb lock{db};
+
+ std::string query = "SELECT * FROM activities WHERE package_id = ?;";
+ DbStatement stmt = DbStatement::Prepare(db, query, package_id);
+
+ std::vector<ActivityModel> activities;
+ ActivityModel p{db};
+ while (DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.package_id)) {
+ activities.push_back(p);
+ }
+
+ return activities;
+ }
+
+ static std::optional<ActivityModel> Insert(DbHandle db,
+ std::string name,
+ int package_id) {
+ const char* sql = "INSERT INTO activities (name, package_id) VALUES (?1, ?2);";
+
+ std::optional<int> inserted_row_id =
+ DbQueryBuilder::Insert(db, sql, name, package_id);
+ if (!inserted_row_id) {
+ return std::nullopt;
+ }
+
+ ActivityModel p{db};
+ p.id = *inserted_row_id;
+ p.name = name;
+ p.package_id = package_id;
+
+ return p;
+ }
+
+ // Try to select by package_name+activity_name, otherwise insert into both tables.
+ // Package version is ignored for selects.
+ static std::optional<ActivityModel> SelectOrInsert(
+ DbHandle db,
+ std::string package_name,
+ int package_version,
+ std::string activity_name) {
+ std::optional<PackageModel> package = PackageModel::SelectByNameAndVersion(db,
+ package_name.c_str(),
+ package_version);
+ if (!package) {
+ package = PackageModel::Insert(db, package_name, package_version);
+ DCHECK(package.has_value());
+ }
+
+ std::optional<ActivityModel> activity =
+ ActivityModel::SelectByNameAndPackageId(db,
+ activity_name.c_str(),
+ package->id);
+ if (!activity) {
+ activity = Insert(db, activity_name, package->id);
+ // XX: should we really return an optional here? This feels like it should never fail.
+ }
+
+ return activity;
+ }
+
+ int id;
+ std::string name;
+ int package_id; // PackageModel::id
+};
+
+inline std::ostream& operator<<(std::ostream& os, const ActivityModel& p) {
+ os << "ActivityModel{id=" << p.id << ",name=" << p.name << ",";
+ os << "package_id=" << p.package_id << "}";
+ return os;
+}
+
+class AppLaunchHistoryModel : public Model {
+ protected:
+ AppLaunchHistoryModel(DbHandle db) : Model{db} {
+ }
+
+ public:
+ enum class Temperature : int32_t {
+ kUninitialized = -1, // Note: Not a valid SQL value.
+ kCold = 1,
+ kWarm = 2,
+ kHot = 3,
+ };
+
+ static std::optional<AppLaunchHistoryModel> SelectById(DbHandle db, int id) {
+ ScopedLockDb lock{db};
+ int original_id = id;
+
+ std::string query = "SELECT * FROM app_launch_histories WHERE id = ? LIMIT 1;";
+ DbStatement stmt = DbStatement::Prepare(db, query, id);
+
+ AppLaunchHistoryModel p{db};
+ if (!DbQueryBuilder::SelectOnce(stmt,
+ p.id,
+ p.activity_id,
+ p.temperature,
+ p.trace_enabled,
+ p.readahead_enabled,
+ p.intent_started_ns,
+ p.total_time_ns,
+ p.report_fully_drawn_ns)) {
+ return std::nullopt;
+ }
+
+ return p;
+ }
+
+ // Selects the activity history for an activity id.
+ // The requirements are:
+ // * Should be cold run.
+ // * Pefetto trace is enabled.
+ // * intent_start_ns is *NOT* null.
+ static std::vector<AppLaunchHistoryModel> SelectActivityHistoryForCompile(
+ DbHandle db,
+ int activity_id) {
+ ScopedLockDb lock{db};
+ std::string query = "SELECT * FROM app_launch_histories "
+ "WHERE activity_id = ?1 AND"
+ " temperature = 1 AND"
+ " trace_enabled = TRUE AND"
+ " intent_started_ns IS NOT NULL;";
+ DbStatement stmt = DbStatement::Prepare(db, query, activity_id);
+ std::vector<AppLaunchHistoryModel> result;
+
+ AppLaunchHistoryModel p{db};
+ while (DbQueryBuilder::SelectOnce(stmt,
+ p.id,
+ p.activity_id,
+ p.temperature,
+ p.trace_enabled,
+ p.readahead_enabled,
+ p.intent_started_ns,
+ p.total_time_ns,
+ p.report_fully_drawn_ns)) {
+ result.push_back(p);
+ }
+ return result;
+ }
+
+ static std::optional<AppLaunchHistoryModel> Insert(DbHandle db,
+ int activity_id,
+ AppLaunchHistoryModel::Temperature temperature,
+ bool trace_enabled,
+ bool readahead_enabled,
+ std::optional<uint64_t> intent_started_ns,
+ std::optional<uint64_t> total_time_ns,
+ std::optional<uint64_t> report_fully_drawn_ns)
+ {
+ const char* sql = "INSERT INTO app_launch_histories (activity_id, temperature, trace_enabled, "
+ "readahead_enabled, intent_started_ns, "
+ "total_time_ns, report_fully_drawn_ns) "
+ "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7);";
+
+ std::optional<int> inserted_row_id =
+ DbQueryBuilder::Insert(db,
+ sql,
+ activity_id,
+ temperature,
+ trace_enabled,
+ readahead_enabled,
+ intent_started_ns,
+ total_time_ns,
+ report_fully_drawn_ns);
+ if (!inserted_row_id) {
+ return std::nullopt;
+ }
+
+ AppLaunchHistoryModel p{db};
+ p.id = *inserted_row_id;
+ p.activity_id = activity_id;
+ p.temperature = temperature;
+ p.trace_enabled = trace_enabled;
+ p.readahead_enabled = readahead_enabled;
+ p.intent_started_ns = intent_started_ns;
+ p.total_time_ns = total_time_ns;
+ p.report_fully_drawn_ns = report_fully_drawn_ns;
+
+ return p;
+ }
+
+ static bool UpdateReportFullyDrawn(DbHandle db,
+ int history_id,
+ uint64_t report_fully_drawn_ns)
+ {
+ const char* sql = "UPDATE app_launch_histories "
+ "SET report_fully_drawn_ns = ?1 "
+ "WHERE id = ?2;";
+
+ bool result = DbQueryBuilder::Update(db, sql, report_fully_drawn_ns, history_id);
+
+ if (!result) {
+ LOG(ERROR)<< "Failed to update history_id:"<< history_id
+ << ", report_fully_drawn_ns: " << report_fully_drawn_ns;
+ }
+ return result;
+ }
+
+ int id;
+ int activity_id; // ActivityModel::id
+ Temperature temperature = Temperature::kUninitialized;
+ bool trace_enabled;
+ bool readahead_enabled;
+ std::optional<uint64_t> intent_started_ns;
+ std::optional<uint64_t> total_time_ns;
+ std::optional<uint64_t> report_fully_drawn_ns;
+};
+
+inline std::ostream& operator<<(std::ostream& os, const AppLaunchHistoryModel& p) {
+ os << "AppLaunchHistoryModel{id=" << p.id << ","
+ << "activity_id=" << p.activity_id << ","
+ << "temperature=" << static_cast<int>(p.temperature) << ","
+ << "trace_enabled=" << p.trace_enabled << ","
+ << "readahead_enabled=" << p.readahead_enabled << ","
+ << "intent_started_ns=";
+ if (p.intent_started_ns) {
+ os << *p.intent_started_ns;
+ } else {
+ os << "(nullopt)";
+ }
+ os << ",";
+ os << "total_time_ns=";
+ if (p.total_time_ns) {
+ os << *p.total_time_ns;
+ } else {
+ os << "(nullopt)";
+ }
+ os << ",";
+ os << "report_fully_drawn_ns=";
+ if (p.report_fully_drawn_ns) {
+ os << *p.report_fully_drawn_ns;
+ } else {
+ os << "(nullopt)";
+ }
+ os << "}";
+ return os;
+}
+
+class RawTraceModel : public Model {
+ protected:
+ RawTraceModel(DbHandle db) : Model{db} {
+ }
+
+ public:
+
+ // Return raw_traces, sorted ascending by the id.
+ static std::vector<RawTraceModel> SelectByVersionedComponentName(DbHandle db,
+ VersionedComponentName vcn) {
+ ScopedLockDb lock{db};
+
+ const char* sql =
+ "SELECT raw_traces.id, raw_traces.history_id, raw_traces.file_path "
+ "FROM raw_traces "
+ "INNER JOIN app_launch_histories ON raw_traces.history_id = app_launch_histories.id "
+ "INNER JOIN activities ON activities.id = app_launch_histories.activity_id "
+ "INNER JOIN packages ON packages.id = activities.package_id "
+ "WHERE packages.name = ? AND activities.name = ? AND packages.version = ?"
+ "ORDER BY raw_traces.id ASC";
+
+ DbStatement stmt = DbStatement::Prepare(db,
+ sql,
+ vcn.GetPackage(),
+ vcn.GetActivity(),
+ vcn.GetVersion());
+
+ std::vector<RawTraceModel> results;
+
+ RawTraceModel p{db};
+ while (DbQueryBuilder::SelectOnce(stmt, p.id, p.history_id, p.file_path)) {
+ results.push_back(p);
+ }
+
+ return results;
+ }
+
+ static std::optional<RawTraceModel> SelectByHistoryId(DbHandle db, int history_id) {
+ ScopedLockDb lock{db};
+
+ const char* sql =
+ "SELECT id, history_id, file_path "
+ "FROM raw_traces "
+ "WHERE history_id = ?1 "
+ "LIMIT 1;";
+
+ DbStatement stmt = DbStatement::Prepare(db, sql, history_id);
+
+ RawTraceModel p{db};
+ if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.history_id, p.file_path)) {
+ return std::nullopt;
+ }
+
+ return p;
+ }
+
+ static std::optional<RawTraceModel> Insert(DbHandle db,
+ int history_id,
+ std::string file_path) {
+ const char* sql = "INSERT INTO raw_traces (history_id, file_path) VALUES (?1, ?2);";
+
+ std::optional<int> inserted_row_id =
+ DbQueryBuilder::Insert(db, sql, history_id, file_path);
+ if (!inserted_row_id) {
+ return std::nullopt;
+ }
+
+ RawTraceModel p{db};
+ p.id = *inserted_row_id;
+ p.history_id = history_id;
+ p.file_path = file_path;
+
+ return p;
+ }
+
+ bool Delete() {
+ const char* sql = "DELETE FROM raw_traces WHERE id = ?";
+
+ return DbQueryBuilder::Delete(db(), sql, id);
+ }
+
+ int id;
+ int history_id;
+ std::string file_path;
+};
+
+inline std::ostream& operator<<(std::ostream& os, const RawTraceModel& p) {
+ os << "RawTraceModel{id=" << p.id << ",history_id=" << p.history_id << ",";
+ os << "file_path=" << p.file_path << "}";
+ return os;
+}
+
+class PrefetchFileModel : public Model {
+ protected:
+ PrefetchFileModel(DbHandle db) : Model{db} {
+ }
+
+ public:
+ static std::optional<PrefetchFileModel> SelectByVersionedComponentName(
+ DbHandle db,
+ VersionedComponentName vcn) {
+ ScopedLockDb lock{db};
+
+ const char* sql =
+ "SELECT prefetch_files.id, prefetch_files.activity_id, prefetch_files.file_path "
+ "FROM prefetch_files "
+ "INNER JOIN activities ON activities.id = prefetch_files.activity_id "
+ "INNER JOIN packages ON packages.id = activities.package_id "
+ "WHERE packages.name = ? AND activities.name = ? AND packages.version = ?";
+
+ DbStatement stmt = DbStatement::Prepare(db,
+ sql,
+ vcn.GetPackage(),
+ vcn.GetActivity(),
+ vcn.GetVersion());
+
+ PrefetchFileModel p{db};
+
+ if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.activity_id, p.file_path)) {
+ return std::nullopt;
+ }
+
+ return p;
+ }
+
+ static std::vector<PrefetchFileModel> SelectAll(DbHandle db) {
+ ScopedLockDb lock{db};
+
+ std::string query =
+ "SELECT prefetch_files.id, prefetch_files.activity_id, prefetch_files.file_path "
+ "FROM prefetch_files";
+ DbStatement stmt = DbStatement::Prepare(db, query);
+
+ std::vector<PrefetchFileModel> prefetch_files;
+ PrefetchFileModel p{db};
+ while (DbQueryBuilder::SelectOnce(stmt, p.id, p.activity_id, p.file_path)) {
+ prefetch_files.push_back(p);
+ }
+
+ return prefetch_files;
+ }
+
+ static std::optional<PrefetchFileModel> Insert(DbHandle db,
+ int activity_id,
+ std::string file_path) {
+ const char* sql = "INSERT INTO prefetch_files (activity_id, file_path) VALUES (?1, ?2);";
+
+ std::optional<int> inserted_row_id =
+ DbQueryBuilder::Insert(db, sql, activity_id, file_path);
+ if (!inserted_row_id) {
+ return std::nullopt;
+ }
+
+ PrefetchFileModel p{db};
+ p.id = *inserted_row_id;
+ p.activity_id = activity_id;
+ p.file_path = file_path;
+
+ return p;
+ }
+
+ bool Delete() {
+ const char* sql = "DELETE FROM prefetch_files WHERE id = ?";
+
+ return DbQueryBuilder::Delete(db(), sql, id);
+ }
+
+ int id;
+ int activity_id;
+ std::string file_path;
+};
+
+inline std::ostream& operator<<(std::ostream& os, const PrefetchFileModel& p) {
+ os << "PrefetchFileModel{id=" << p.id << ",activity_id=" << p.activity_id << ",";
+ os << "file_path=" << p.file_path << "}";
+ return os;
+}
+
+} // namespace iorap::db
+
+#endif // IORAP_SRC_DB_MODELS_H_
diff --git a/src/inode2filename/data_source.cc b/src/inode2filename/data_source.cc
new file mode 100644
index 0000000..5fcce73
--- /dev/null
+++ b/src/inode2filename/data_source.cc
@@ -0,0 +1,187 @@
+// Copyright (C) 2019 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
+//
+// http://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 "inode2filename/data_source.h"
+
+#include "common/cmd_utils.h"
+#include "inode2filename/inode_resolver.h"
+#include "inode2filename/search_directories.h"
+
+#include <android-base/logging.h>
+
+#include <fstream>
+#include <stdio.h>
+
+namespace rx = rxcpp;
+
+namespace iorap::inode2filename {
+
+std::vector<std::string> ToArgs(DataSourceKind data_source_kind) {
+ const char* value = nullptr;
+
+ switch (data_source_kind) {
+ case DataSourceKind::kDiskScan:
+ value = "diskscan";
+ break;
+ case DataSourceKind::kTextCache:
+ value = "textcache";
+ break;
+ case DataSourceKind::kBpf:
+ value = "bpf";
+ break;
+ }
+
+ std::vector<std::string> args;
+ iorap::common::AppendNamedArg(args, "--data-source", value);
+ return args;
+}
+
+std::vector<std::string> ToArgs(const DataSourceDependencies& deps) {
+ std::vector<std::string> args;
+
+ iorap::common::AppendArgsRepeatedly(args, ToArgs(deps.data_source));
+ // intentionally skip system_call; it does not have a command line equivalent
+ iorap::common::AppendNamedArgRepeatedly(args, "--root", deps.root_directories);
+
+ if (deps.text_cache_filename) {
+ iorap::common::AppendNamedArg(args, "--textcache", *(deps.text_cache_filename));
+ }
+
+ return args;
+}
+
+class DiskScanDataSource : public DataSource {
+ public:
+ DiskScanDataSource(DataSourceDependencies dependencies)
+ : DataSource(std::move(dependencies)) {
+ DCHECK_NE(dependencies_.root_directories.size(), 0u) << "Root directories can't be empty";
+ }
+
+ virtual rxcpp::observable<InodeResult> EmitInodes() const override {
+ SearchDirectories searcher{/*borrow*/dependencies_.system_call};
+ return searcher.ListAllFilenames(dependencies_.root_directories);
+ }
+
+ // Since not all Inodes emitted are the ones searched for, doing additional stat(2) calls here
+ // would be redundant.
+ //
+ // We set the device number to a dummy value here (-1) so that InodeResolver
+ // can fill it in later with stat(2). This is effectively the same thing as always doing
+ // verification.
+ virtual bool ResultIncludesDeviceNumber() const { return false; };
+
+ virtual ~DiskScanDataSource() {}
+};
+
+static inline void LeftTrim(/*inout*/std::string& s) {
+ s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) {
+ return !std::isspace(ch);
+ }));
+}
+
+class TextCacheDataSource : public DataSource {
+ public:
+ TextCacheDataSource(DataSourceDependencies dependencies)
+ : DataSource(std::move(dependencies)) {
+ DCHECK(dependencies_.text_cache_filename.has_value()) << "Must have text cache filename";
+ }
+
+ virtual rxcpp::observable<InodeResult> EmitInodes() const override {
+ const std::string& file_name = *dependencies_.text_cache_filename;
+
+ return rx::observable<>::create<InodeResult>(
+ [file_name](rx::subscriber<InodeResult> dest) {
+ LOG(VERBOSE) << "TextCacheDataSource (lambda)";
+
+ std::ifstream ifs{file_name};
+
+ if (!ifs.is_open()) {
+ dest.on_error(rxcpp::util::make_error_ptr(
+ std::ios_base::failure("Could not open specified text cache filename")));
+ return;
+ }
+
+ while (dest.is_subscribed() && ifs) {
+ LOG(VERBOSE) << "TextCacheDataSource (read line)";
+ // TODO.
+
+ uint64_t device_number = 0;
+ uint64_t inode_number = 0;
+ uint64_t file_size = 0;
+
+ // Parse lines of form:
+ // "$device_number $inode $filesize $filename..."
+ // This format conforms to system/extras/pagecache/pagecache.py
+
+ ifs >> device_number;
+ ifs >> inode_number;
+ ifs >> file_size;
+ (void)file_size; // Not used in iorapd.
+
+ std::string value_filename;
+ std::getline(/*inout*/ifs, /*out*/value_filename);
+
+ if (value_filename.empty()) {
+ // Ignore empty lines.
+ continue;
+ }
+
+ // getline, unlike ifstream, does not ignore spaces.
+ // There's always at least 1 space in a textcache output file.
+ // However, drop *all* spaces on the left since filenames starting with a space are
+ // ambiguous to us.
+ LeftTrim(/*inout*/value_filename);
+
+ Inode inode = Inode::FromDeviceAndInode(static_cast<dev_t>(device_number),
+ static_cast<ino_t>(inode_number));
+
+ LOG(VERBOSE) << "TextCacheDataSource (on_next) " << inode << "->" << value_filename;
+ dest.on_next(InodeResult::makeSuccess(inode, value_filename));
+ }
+
+ dest.on_completed();
+ }
+ );
+
+ // TODO: plug into the filtering and verification graph.
+ }
+
+ virtual ~TextCacheDataSource() {}
+};
+
+DataSource::DataSource(DataSourceDependencies dependencies)
+ : dependencies_{std::move(dependencies)} {
+ DCHECK(dependencies_.system_call != nullptr);
+}
+
+std::shared_ptr<DataSource> DataSource::Create(DataSourceDependencies dependencies) {
+ switch (dependencies.data_source) {
+ case DataSourceKind::kDiskScan:
+ return std::shared_ptr<DataSource>{new DiskScanDataSource{std::move(dependencies)}};
+ case DataSourceKind::kTextCache:
+ return std::shared_ptr<DataSource>{new TextCacheDataSource{std::move(dependencies)}};
+ case DataSourceKind::kBpf:
+ // TODO: BPF-based data source.
+ LOG(FATAL) << "Not implemented yet";
+ return nullptr;
+ default:
+ LOG(FATAL) << "Invalid data source value";
+ return nullptr;
+ }
+}
+
+void DataSource::StartRecording() {}
+void DataSource::StopRecording() {}
+
+} // namespace iorap::inode2filename
diff --git a/src/inode2filename/data_source.h b/src/inode2filename/data_source.h
new file mode 100644
index 0000000..36c8383
--- /dev/null
+++ b/src/inode2filename/data_source.h
@@ -0,0 +1,74 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_INODE2FILENAME_DATA_SOURCE_H_
+#define IORAP_SRC_INODE2FILENAME_DATA_SOURCE_H_
+
+#include "inode2filename/inode_result.h"
+#include "inode2filename/system_call.h"
+
+#include <rxcpp/rx.hpp>
+
+#include <memory>
+#include <optional>
+#include <string>
+#include <vector>
+namespace iorap::inode2filename {
+
+enum class DataSourceKind {
+ kDiskScan,
+ kTextCache,
+ kBpf,
+};
+
+std::vector<std::string> ToArgs(DataSourceKind data_source_kind);
+
+struct DataSourceDependencies {
+ DataSourceKind data_source = DataSourceKind::kDiskScan;
+ borrowed<SystemCall*> system_call = nullptr;
+
+ // kDiskScan-specific options. Other data sources ignore these fields.
+ std::vector<std::string> root_directories;
+ // kTextCache-specific options. Other data sources ignore these fields.
+ std::optional<std::string> text_cache_filename;
+};
+
+std::vector<std::string> ToArgs(const DataSourceDependencies& deps);
+
+class DataSource : std::enable_shared_from_this<DataSource> {
+ public:
+ static std::shared_ptr<DataSource> Create(DataSourceDependencies dependencies);
+
+ virtual void StartRecording(); // XX: feels like this should be BPF-specific.
+ virtual void StopRecording();
+
+ // Emit all inode->filename mappings (i.e. an infinite lazy list).
+ // The specific order is determined by the extra dependency options.
+ //
+ // The work must terminate if all subscriptions are removed.
+ virtual rxcpp::observable<InodeResult> EmitInodes() const = 0;
+
+ // Does the InodeResult include a valid device number?
+ // If returning false, the InodeResolver fills in the missing device number with stat(2).
+ virtual bool ResultIncludesDeviceNumber() const { return true; };
+
+ protected:
+ virtual ~DataSource() {}
+ DataSource(DataSourceDependencies dependencies);
+ DataSourceDependencies dependencies_;
+};
+
+} // namespace iorap::inode2filename
+
+#endif // IORAP_SRC_INODE2FILENAME_DATA_SOURCE_H_
diff --git a/src/inode2filename/inode.cc b/src/inode2filename/inode.cc
index cdb2325..cc665ea 100644
--- a/src/inode2filename/inode.cc
+++ b/src/inode2filename/inode.cc
@@ -79,3 +79,9 @@ bool Inode::Parse(const std::string& str, Inode* out, std::string* error_msg) {
}
} // namespace iorap::inode2filename
+
+// Ensure our pollution-free aliases match the typedefs in the system headers.
+static_assert(std::is_same_v<iorap::inode2filename::dev_t, dev_t>);
+static_assert(std::is_same_v<iorap::inode2filename::ino_t, ino_t>);
+
+// TODO: consider some tests for major, minor, etc. \ No newline at end of file
diff --git a/src/inode2filename/inode.h b/src/inode2filename/inode.h
index 2dd5611..f336a14 100644
--- a/src/inode2filename/inode.h
+++ b/src/inode2filename/inode.h
@@ -23,22 +23,97 @@
namespace iorap::inode2filename {
+// Avoid polluting headers.
+#if defined(__ANDROID__)
+# if !defined(__LP64__)
+/* This historical accident means that we had a 32-bit dev_t on 32-bit architectures. */
+using dev_t = uint32_t;
+# else
+using dev_t = uint64_t;
+# endif
+using ino_t = unsigned long;
+#else
+# if !defined(__x86_64__)
+using dev_t = unsigned long long;
+using ino_t = unsigned long long;
+# else
+using dev_t = unsigned long;
+using ino_t = unsigned long;
+# endif
+#endif
+
+#ifdef makedev
+#undef makedev
+#endif
+
+/** Combines `major` and `minor` into a device number. */
+constexpr inline dev_t makedev(unsigned int major, unsigned int minor) {
+ return
+ (((major) & 0xfffff000ULL) << 32) | (((major) & 0xfffULL) << 8) |
+ (((minor) & 0xffffff00ULL) << 12) | (((minor) & 0xffULL));
+}
+
+#ifdef major
+#undef major
+#endif
+
+/** Extracts the major part of a device number. */
+constexpr inline unsigned int major(dev_t dev) {
+ return
+ ((unsigned) ((((unsigned long long) (dev) >> 32) & 0xfffff000) | (((dev) >> 8) & 0xfff)));
+}
+
+#ifdef minor
+#undef minor
+#endif
+
+/** Extracts the minor part of a device number. */
+constexpr inline unsigned int minor(dev_t dev) {
+ return
+ ((unsigned) ((((dev) >> 12) & 0xffffff00) | ((dev) & 0xff)));
+};
+// Note: above definitions copied from sysmacros.h, to avoid polluting global namespace in a header.
+
+/*
+ * A convenient datum representing a (dev_t, ino_t) tuple.
+ *
+ * ino_t values may be reused across different devices (e.g. different partitions),
+ * so we need the full tuple to uniquely identify an inode on a system.
+ */
struct Inode {
size_t device_major; // dev_t = makedev(major, minor)
size_t device_minor;
size_t inode; // ino_t = inode
+ // "Major:minor:inode" OR "dev_t@inode"
static bool Parse(const std::string& str, /*out*/Inode* out, /*out*/std::string* error_msg);
- bool operator==(const Inode& rhs) const {
+ constexpr bool operator==(const Inode& rhs) const {
return device_major == rhs.device_major &&
device_minor == rhs.device_minor &&
inode == rhs.inode;
}
- bool operator!=(const Inode& rhs) const {
+ constexpr bool operator!=(const Inode& rhs) const {
return !(*this == rhs);
}
+
+ Inode() = default;
+ constexpr Inode(size_t device_major, size_t device_minor, size_t inode)
+ : device_major{device_major}, device_minor{device_minor}, inode{inode} {
+ }
+
+ static constexpr Inode FromDeviceAndInode(dev_t dev, ino_t inode) {
+ return Inode{major(dev), minor(dev), static_cast<size_t>(inode)};
+ }
+
+ constexpr dev_t GetDevice() const {
+ return makedev(device_major, device_minor);
+ }
+
+ constexpr ino_t GetInode() const {
+ return static_cast<ino_t>(inode);
+ }
};
inline std::ostream& operator<<(std::ostream& os, const Inode& inode) {
@@ -62,4 +137,14 @@ namespace std {
};
} // namespace std
+namespace rxcpp {
+template <class T, typename>
+struct filtered_hash;
+
+// support for the 'distinct' rx operator.
+template <>
+struct filtered_hash<iorap::inode2filename::Inode, void> : std::hash<iorap::inode2filename::Inode> {
+};
+} // namespace rxcpp
+
#endif // IORAP_SRC_INODE2FILENAME_INODE_H_
diff --git a/src/inode2filename/inode_resolver.cc b/src/inode2filename/inode_resolver.cc
new file mode 100644
index 0000000..5e2945d
--- /dev/null
+++ b/src/inode2filename/inode_resolver.cc
@@ -0,0 +1,207 @@
+// Copyright (C) 2019 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
+//
+// http://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 "inode2filename/inode_resolver.h"
+
+#include "common/cmd_utils.h"
+#include "inode2filename/out_of_process_inode_resolver.h"
+#include "inode2filename/search_directories.h"
+
+#include <android-base/logging.h>
+
+#include <fstream>
+#include <stdio.h>
+
+namespace rx = rxcpp;
+
+namespace iorap::inode2filename {
+
+std::vector<std::string> ToArgs(ProcessMode process_mode) {
+ const char* value = nullptr;
+
+ switch (process_mode) {
+ case ProcessMode::kInProcessDirect:
+ value = "in";
+ break;
+ case ProcessMode::kInProcessIpc:
+ value = "in-ipc";
+ break;
+ case ProcessMode::kOutOfProcessIpc:
+ value = "out";
+ break;
+ }
+
+ std::vector<std::string> args;
+ iorap::common::AppendNamedArg(args, "--process-mode", value);
+ return args;
+}
+
+std::vector<std::string> ToArgs(VerifyKind verify_kind) {
+ const char* value = nullptr;
+
+ switch (verify_kind) {
+ case VerifyKind::kNone:
+ value = "none";
+ break;
+ case VerifyKind::kStat:
+ value = "stat";
+ break;
+ }
+
+ std::vector<std::string> args;
+ iorap::common::AppendNamedArg(args, "--verify", value);
+ return args;
+}
+
+std::vector<std::string> ToArgs(const InodeResolverDependencies& deps) {
+ std::vector<std::string> args = ToArgs(*static_cast<const DataSourceDependencies*>(&deps));
+ iorap::common::AppendArgsRepeatedly(args, ToArgs(deps.process_mode));
+ iorap::common::AppendArgsRepeatedly(args, ToArgs(deps.verify));
+
+ return args;
+}
+
+struct InodeResolver::Impl {
+ Impl(InodeResolverDependencies dependencies)
+ : dependencies_{std::move(dependencies)} {
+ DCHECK(dependencies_.system_call != nullptr);
+ data_source_ = DataSource::Create(/*downcast*/dependencies_);
+ }
+ Impl(InodeResolverDependencies dependencies, std::shared_ptr<DataSource> data_source)
+ : dependencies_{std::move(dependencies)} {
+ DCHECK(dependencies_.system_call != nullptr);
+ data_source_ = std::move(data_source);
+ DCHECK(data_source_ != nullptr);
+ }
+ InodeResolverDependencies dependencies_;
+ std::shared_ptr<DataSource> data_source_;
+};
+
+InodeResolver::InodeResolver(InodeResolverDependencies dependencies)
+ : impl_(new InodeResolver::Impl{std::move(dependencies)}) {
+}
+
+InodeResolver::InodeResolver(InodeResolverDependencies dependencies,
+ std::shared_ptr<DataSource> data_source)
+ : impl_(new InodeResolver::Impl{std::move(dependencies), std::move(data_source)}) {
+}
+
+std::shared_ptr<InodeResolver> InodeResolver::Create(InodeResolverDependencies dependencies) {
+ if (dependencies.process_mode == ProcessMode::kInProcessDirect) {
+ return std::shared_ptr<InodeResolver>{
+ new InodeResolver{std::move(dependencies)}};
+ } else if (dependencies.process_mode == ProcessMode::kOutOfProcessIpc) {
+ return std::shared_ptr<InodeResolver>{
+ new OutOfProcessInodeResolver{std::move(dependencies)}};
+ } else {
+ CHECK(false);
+ }
+ return nullptr;
+}
+
+std::shared_ptr<InodeResolver> InodeResolver::Create(InodeResolverDependencies dependencies,
+ std::shared_ptr<DataSource> data_source) {
+ if (dependencies.process_mode == ProcessMode::kInProcessDirect) {
+ return std::shared_ptr<InodeResolver>{
+ new InodeResolver{std::move(dependencies), std::move(data_source)}};
+ } else if (dependencies.process_mode == ProcessMode::kOutOfProcessIpc) {
+ CHECK(false); // directly providing a DataSource only makes sense in-process
+ } else {
+ CHECK(false);
+ }
+ return nullptr;
+}
+
+rxcpp::observable<InodeResult>
+ InodeResolver::FindFilenamesFromInodes(rxcpp::observable<Inode> inodes) const {
+
+ // It's inefficient to search for inodes until the full search list is available,
+ // so first reduce to a vector so we can access all the inodes simultaneously.
+ return inodes.reduce(std::vector<Inode>{},
+ [](std::vector<Inode> vec, Inode inode) {
+ vec.push_back(inode);
+ return vec;
+ },
+ [](std::vector<Inode> v) {
+ return v; // TODO: use an identity function
+ })
+ .flat_map([self=shared_from_this()](std::vector<Inode> vec) {
+ // All borrowed values (e.g. SystemCall) must outlive the observable.
+ return self->FindFilenamesFromInodes(vec);
+ }
+ );
+}
+
+rxcpp::observable<InodeResult>
+InodeResolver::FindFilenamesFromInodes(std::vector<Inode> inodes) const {
+ const DataSource& data_source = *impl_->data_source_;
+ const InodeResolverDependencies& dependencies = impl_->dependencies_;
+
+ // Get lazy list of inodes from the data source.
+ rxcpp::observable<InodeResult> all_inodes = impl_->data_source_->EmitInodes();
+
+ // Filter it according to the source+dependency requirements.
+ // Unsubscribe from 'all_inodes' early if all inodes are matched early.
+ const bool needs_device_number = !data_source.ResultIncludesDeviceNumber();
+ const bool needs_verification = dependencies.verify == VerifyKind::kStat;
+ SearchDirectories search{impl_->dependencies_.system_call};
+ return search.FilterFilenamesForSpecificInodes(all_inodes,
+ inodes,
+ needs_device_number,
+ needs_verification);
+}
+
+rxcpp::observable<InodeResult>
+InodeResolver::EmitAll() const {
+ const DataSource& data_source = *impl_->data_source_;
+ const InodeResolverDependencies& dependencies = impl_->dependencies_;
+
+ // Get lazy list of inodes from the data source.
+ rxcpp::observable<InodeResult> all_inodes = impl_->data_source_->EmitInodes();
+
+ // Apply verification and fill-in missing device numbers.
+ const bool needs_device_number = !data_source.ResultIncludesDeviceNumber();
+ const bool needs_verification = dependencies.verify == VerifyKind::kStat;
+ SearchDirectories search{impl_->dependencies_.system_call};
+ return search.EmitAllFilenames(all_inodes,
+ needs_device_number,
+ needs_verification);
+}
+
+InodeResolver::~InodeResolver() {
+ // std::unique_ptr requires complete types, but we hide the definition in the header.
+ delete impl_;
+ // XX: Does this work if we just force the dtor definition into the .cc file with a unique_ptr?
+}
+
+InodeResolverDependencies& InodeResolver::GetDependencies() {
+ return impl_->dependencies_;
+}
+
+const InodeResolverDependencies& InodeResolver::GetDependencies() const {
+ return impl_->dependencies_;
+}
+
+void InodeResolver::StartRecording() {
+ impl_->data_source_->StartRecording();
+}
+
+void InodeResolver::StopRecording() {
+ impl_->data_source_->StopRecording();
+}
+
+// TODO: refactor more code from search_directories into this file.
+// XX: do we also need a DataSink class? lets see if recording gets more complicated.
+
+} // namespace iorap::inode2filename
diff --git a/src/inode2filename/inode_resolver.h b/src/inode2filename/inode_resolver.h
new file mode 100644
index 0000000..218640f
--- /dev/null
+++ b/src/inode2filename/inode_resolver.h
@@ -0,0 +1,121 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_INODE2FILENAME_INODE_RESOLVER_H_
+#define IORAP_SRC_INODE2FILENAME_INODE_RESOLVER_H_
+
+#include "common/expected.h"
+#include "inode2filename/data_source.h"
+#include "inode2filename/inode.h"
+#include "inode2filename/system_call.h"
+
+#include <rxcpp/rx.hpp>
+
+#include <memory>
+#include <optional>
+#include <string>
+#include <vector>
+namespace iorap::inode2filename {
+
+enum class ProcessMode {
+ // Test modes:
+ kInProcessDirect, // Execute the code directly.
+ kInProcessIpc, // Execute code via IPC layer using multiple threads.
+ // Shipping mode:
+ kOutOfProcessIpc, // Execute code via fork+exec with IPC.
+
+ // Note: in-process system-wide stat(2)/readdir/etc is blocked by selinux.
+ // Attempting to call the test modes will fail with -EPERM.
+ //
+ // Use fork+exec mode in shipping configurations, which spawns inode2filename
+ // as a separate command.
+};
+
+enum class VerifyKind {
+ kNone,
+ kStat,
+};
+
+std::vector<std::string> ToArgs(VerifyKind verify_kind);
+
+struct InodeResolverDependencies : public DataSourceDependencies {
+ ProcessMode process_mode = ProcessMode::kInProcessDirect;
+ VerifyKind verify{VerifyKind::kStat}; // Filter out results that aren't up-to-date with stat(2) ?
+};
+
+std::vector<std::string> ToArgs(const InodeResolverDependencies& deps);
+
+// Create an rx-observable chain that allows searching for inode->filename mappings given
+// a set of inode keys.
+class InodeResolver : public std::enable_shared_from_this<InodeResolver> {
+ public:
+ static std::shared_ptr<InodeResolver> Create(InodeResolverDependencies dependencies,
+ std::shared_ptr<DataSource> data_source); // nonnull
+
+ // Convenience function for above: Uses DataSource::Create for the data-source.
+ static std::shared_ptr<InodeResolver> Create(InodeResolverDependencies dependencies);
+
+ // Search the associated data source to map each inode in 'inodes' to a file path.
+ //
+ // Observes DataSource::EmitInodes(), which is unsubscribed from early once all inodes are found.
+ //
+ // Notes:
+ // * Searching does not begin until all 'inodes' are observed to avoid rescanning.
+ // * If the observable is unsubscribed to prior to completion, searching will halt.
+ //
+ // Post-condition: All emitted results are in inodes, and all inodes are in emitted results.
+ rxcpp::observable<InodeResult>
+ FindFilenamesFromInodes(rxcpp::observable<Inode> inodes) const;
+ // TODO: feels like we could turn this into a general helper?
+ // Convenience function for above.
+ virtual rxcpp::observable<InodeResult>
+ FindFilenamesFromInodes(std::vector<Inode> inodes) const;
+
+ // Enumerate *all* inodes available from the data source, associating it with a filepath.
+ //
+ // Depending on the data source (e.g. diskscan), it can take a very long time for this observable
+ // to complete. The intended use-case is for development/debugging, not for production.
+ //
+ // Observes DataSource::EmitInodes() until it reaches #on_completed.
+ //
+ // Notes:
+ // * If the observable is unsubscribed to prior to completion, searching will halt.
+ virtual rxcpp::observable<InodeResult>
+ EmitAll() const;
+
+ // Notifies the DataSource to begin recording.
+ // Some DataSources may be continuously refreshing, but only if recording is enabled.
+ // To get the most up-to-date data, toggle recording before reading the inodes out.
+ void StartRecording(); // XX: feels like this should be BPF-specific.
+
+ // Notifies the DataSource to stop recording.
+ // Some DataSources may be continuously refreshing, but only if recording is enabled.
+ // The snapshot of data returned by e.g. #EmitAll would then not change outside of recording.
+ void StopRecording();
+
+ virtual ~InodeResolver();
+ private:
+ struct Impl;
+ Impl* impl_;
+
+ protected:
+ InodeResolver(InodeResolverDependencies dependencies);
+ InodeResolver(InodeResolverDependencies dependencies, std::shared_ptr<DataSource> data_source);
+ InodeResolverDependencies& GetDependencies();
+ const InodeResolverDependencies& GetDependencies() const;
+};
+
+}
+
+#endif // IORAP_SRC_INODE2FILENAME_INODE_RESOLVER_H_
diff --git a/src/inode2filename/inode_result.cc b/src/inode2filename/inode_result.cc
new file mode 100644
index 0000000..139b038
--- /dev/null
+++ b/src/inode2filename/inode_result.cc
@@ -0,0 +1,62 @@
+// Copyright (C) 2019 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
+//
+// http://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 "inode2filename/inode_result.h"
+
+#include <string.h>
+
+namespace iorap::inode2filename {
+
+std::optional<std::string_view> InodeResult::ErrorMessage() const {
+ if (data) {
+ return std::nullopt;
+ }
+
+ const int err_no = data.error();
+ return std::string_view{
+ [=]() -> const char * {
+ switch (err_no) {
+ case InodeResult::kCouldNotFindFilename:
+ return "Could not find filename";
+ case InodeResult::kVerificationFailed:
+ return "Verification failed";
+ default:
+ return strerror(err_no);
+ }
+ }()
+ };
+}
+
+std::ostream& operator<<(std::ostream& os, const InodeResult& result) {
+ os << "InodeResult{";
+ if (result) {
+ os << "OK,";
+ } else {
+ os << "ERR,";
+ }
+
+ os << result.inode << ",";
+
+ if (result) {
+ os << "\"" << result.data.value() << "\"";
+ } else {
+ os << result.data.error();
+ os << " (" << *result.ErrorMessage() << ")";
+ }
+
+ os << "}";
+ return os;
+}
+
+} // namespace iorap::inode2filename \ No newline at end of file
diff --git a/src/inode2filename/inode_result.h b/src/inode2filename/inode_result.h
new file mode 100644
index 0000000..df352fb
--- /dev/null
+++ b/src/inode2filename/inode_result.h
@@ -0,0 +1,82 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_INODE2FILENAME_INODE_RESULT_H_
+#define IORAP_SRC_INODE2FILENAME_INODE_RESULT_H_
+
+#include "common/expected.h"
+#include "inode2filename/inode.h"
+#include "inode2filename/inode_result.h"
+#include "inode2filename/system_call.h"
+
+#include <rxcpp/rx.hpp>
+
+#include <memory>
+#include <optional>
+#include <string>
+#include <vector>
+namespace iorap::inode2filename {
+
+// Tuple of (Inode -> (Filename|Errno))
+struct InodeResult {
+ // We set this error when all root directories have been searched and
+ // yet we still could not find a corresponding filename for the inode under search.
+ static constexpr int kCouldNotFindFilename = ENOKEY;
+
+ // An initial inode->filename mapping was found, but subsequent verification for it failed.
+ static constexpr int kVerificationFailed = EKEYEXPIRED;
+
+ // There is always an inode, but sometimes we may fail to resolve the filename.
+ Inode inode;
+ // Value: Contains the filename (with a root directory as a prefix).
+ // Error: Contains the errno, usually one of the above, otherwise some system error.
+ iorap::expected<std::string /*filename*/, int /*errno*/> data;
+
+ static InodeResult makeSuccess(Inode inode, std::string filename) {
+ return InodeResult{inode, std::move(filename)};
+ }
+
+ static InodeResult makeFailure(Inode inode, int err_no) {
+ return InodeResult{inode, iorap::unexpected{err_no}};
+ }
+
+ constexpr explicit operator bool() const {
+ return data.has_value();
+ }
+
+ constexpr bool operator==(const InodeResult& other) const {
+ if (inode == other.inode) {
+ if (data && other.data) {
+ return *data == *other.data;
+ } else if (!data && !other.data) {
+ return data.error() == other.data.error();
+ }
+ // TODO: operator== for expected
+ }
+ return false;
+ }
+
+ constexpr bool operator!=(const InodeResult& other) const {
+ return !(*this == other);
+ }
+
+ // Returns a human-readable error message, or 'nullopt' if there was no error.
+ std::optional<std::string_view> ErrorMessage() const;
+};
+
+std::ostream& operator<<(std::ostream& os, const InodeResult& result);
+
+} // namespace iorap::inode2filename
+
+#endif // IORAP_SRC_INODE2FILENAME_INODE_RESULT_H_ \ No newline at end of file
diff --git a/src/inode2filename/main.cc b/src/inode2filename/main.cc
index 2da364c..38d6eab 100644
--- a/src/inode2filename/main.cc
+++ b/src/inode2filename/main.cc
@@ -14,12 +14,18 @@
#include "common/debug.h"
#include "common/expected.h"
-#include "inode2filename/search_directories.h"
+#include "inode2filename/inode_resolver.h"
-using namespace iorap::inode2filename; // NOLINT
+#include <android-base/strings.h>
+
+#include <iostream>
+#include <fstream>
+#include <string_view>
#if defined(IORAP_INODE2FILENAME_MAIN)
+namespace iorap::inode2filename {
+
void Usage(char** argv) {
std::cerr << "Usage: " << argv[0] << " <options> <<inode_syntax>> [inode_syntax1 inode_syntax2 ...]" << std::endl;
std::cerr << "" << std::endl;
@@ -28,25 +34,174 @@ void Usage(char** argv) {
std::cerr << " the program will terminate." << std::endl;
std::cerr << "" << std::endl;
std::cerr << " Inode syntax: ('dev_t@inode' | 'major:minor:inode')" << std::endl;
+ std::cerr << "" << std::endl; // CLI-only flags.
std::cerr << " --help,-h Print this Usage." << std::endl;
- std::cerr << " --root,-r Add root directory (default '.'). Repeatable." << std::endl;
std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl;
std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl;
+ std::cerr << "" << std::endl; // General flags.
+ std::cerr << " --all,-a Enumerate all inode->filename mappings in the dataset (default off)." << std::endl;
+ std::cerr << " All <<inode_syntaxN>> arguments are ignored." << std::endl;
+ std::cerr << " --data-source=, Choose a data source (default 'diskscan')." << std::endl;
+ std::cerr << " -ds " << std::endl;
+ std::cerr << " diskscan Scan disk recursively using readdir." << std::endl;
+ std::cerr << " textcache Use the file from the '--output-format=text'." << std::endl;
+ std::cerr << " bpf Query kernel BPF maps (experimental)." << std::endl;
+ std::cerr << " --output=,-o Choose an output file (default 'stdout')." << std::endl;
+ std::cerr << " --output-format=, Choose an output format (default 'log')." << std::endl;
+ std::cerr << " -of " << std::endl;
+ std::cerr << " log Log human-readable, non-parsable format to stdout+logcat." << std::endl;
+ std::cerr << " textcache Results are in the same format as system/extras/pagecache." << std::endl;
+ std::cerr << " ipc Results are in a binary inter-process communications format" << std::endl;
+ std::cerr << " --process-mode=, Choose a process mode (default 'in'). Test-oriented." << std::endl;
+ std::cerr << " -pm " << std::endl;
+ std::cerr << " in Use a single process to do the work in." << std::endl;
+ std::cerr << " out Out-of-process work (forks into a -pm=in)." << std::endl;
+ std::cerr << " --verify=,-vy Verification modes for the data source (default 'stat')." << std::endl;
+ std::cerr << " stat Use stat(2) call to validate data inodes are up-to-date. " << std::endl;
+ std::cerr << " none Trust that the data-source is up-to-date without checking." << std::endl;
+ std::cerr << "" << std::endl; // --data-source=<?> specific flags.
+ std::cerr << " Data-source-specific commands:" << std::endl;
+ std::cerr << " --data-source=diskscan" << std::endl;
+ std::cerr << " --root=,-r Add root directory (default '.'). Repeatable." << std::endl;
+ std::cerr << " --data-source=textcache" << std::endl;
+ std::cerr << " --textcache=,-tc Name of file that contains the textcache." << std::endl;
+ std::cerr << "" << std::endl; // Programmatic flags.
+ std::cerr << " --in-fd=# Input file descriptor. Default input is from argv." << std::endl;
+ std::cerr << " --out-fd=# Output file descriptor. Default stdout." << std::endl;
exit(1);
}
-static fruit::Component<SearchDirectories> GetSearchDirectoriesComponent() {
+static fruit::Component<SystemCall> GetSystemCallComponent() {
return fruit::createComponent().bind<SystemCall, SystemCallImpl>();
}
+std::optional<DataSourceKind> ParseDataSourceKind(std::string_view str) {
+ if (str == "diskscan") {
+ return DataSourceKind::kDiskScan;
+ } else if (str == "textcache") {
+ return DataSourceKind::kTextCache;
+ } else if (str == "bpf") {
+ return DataSourceKind::kBpf;
+ }
+ return std::nullopt;
+}
+
+enum class OutputFormatKind {
+ kLog,
+ kTextCache,
+ kIpc,
+};
+
+std::optional<OutputFormatKind> ParseOutputFormatKind(std::string_view str) {
+ if (str == "log") {
+ return OutputFormatKind::kLog;
+ } else if (str == "textcache") {
+ return OutputFormatKind::kTextCache;
+ } else if (str == "ipc") {
+ return OutputFormatKind::kIpc;
+ }
+ return std::nullopt;
+}
+
+std::optional<VerifyKind> ParseVerifyKind(std::string_view str) {
+ if (str == "none") {
+ return VerifyKind::kNone;
+ } else if (str == "stat") {
+ return VerifyKind::kStat;
+ }
+ return std::nullopt;
+}
+
+std::optional<ProcessMode> ParseProcessMode(std::string_view str) {
+ if (str == "in") {
+ return ProcessMode::kInProcessDirect;
+ } else if (str == "out") {
+ return ProcessMode::kOutOfProcessIpc;
+ }
+ return std::nullopt;
+}
+
+bool StartsWith(std::string_view haystack, std::string_view needle) {
+ return haystack.size() >= needle.size()
+ && haystack.compare(0, needle.size(), needle) == 0;
+}
+
+bool EndsWith(std::string_view haystack, std::string_view needle) {
+ return haystack.size() >= needle.size()
+ && haystack.compare(haystack.size() - needle.size(), haystack.npos, needle) == 0;
+}
+
+bool StartsWithOneOf(std::string_view haystack,
+ std::string_view needle,
+ std::string_view needle2) {
+ return StartsWith(haystack, needle) || StartsWith(haystack, needle2);
+}
+
+enum ParseError {
+ kParseSkip,
+ kParseFailed,
+};
+
+std::optional<std::string> ParseNamedArgument(std::initializer_list<std::string> names,
+ std::string argstr,
+ std::optional<std::string> arg_next,
+ /*inout*/
+ int* arg_pos) {
+ for (const std::string& name : names) {
+ {
+ // Try parsing only 'argstr' for '--foo=bar' type parameters.
+ std::vector<std::string> split_str = ::android::base::Split(argstr, "=");
+ if (split_str.size() >= 2) {
+ /*
+ std::cerr << "ParseNamedArgument(name=" << name << ", argstr='"
+ << argstr << "')" << std::endl;
+ */
+
+ if (split_str[0] + "=" == name) {
+ return split_str[1];
+ }
+ }
+ }
+ //if (EndsWith(name, "=")) {
+ // continue;
+ /*} else */ {
+ // Try parsing 'argstr arg_next' for '-foo bar' type parameters.
+ if (argstr == name) {
+ ++(*arg_pos);
+
+ if (arg_next) {
+ return arg_next;
+ } else {
+ // Missing argument, e.g. '-foo' was the last token in the argv.
+ std::cerr << "Missing " << name << " flag value." << std::endl;
+ exit(1);
+ }
+ }
+ }
+ }
+
+ return std::nullopt;
+}
+
int main(int argc, char** argv) {
android::base::InitLogging(argv);
android::base::SetLogger(android::base::StderrLogger);
+ bool all = false;
bool wait_for_keystroke = false;
bool enable_verbose = false;
std::vector<std::string> root_directories;
std::vector<Inode> inode_list;
+ int recording_time_sec = 0;
+
+ DataSourceKind data_source = DataSourceKind::kDiskScan;
+ OutputFormatKind output_format = OutputFormatKind::kLog;
+ VerifyKind verify = VerifyKind::kStat;
+ ProcessMode process_mode = ProcessMode::kInProcessDirect;
+
+ std::optional<std::string> output_filename;
+ std::optional<int /*fd*/> in_fd, out_fd; // input-output file descriptors [for fork+exec].
+ std::optional<std::string> text_cache_filename;
if (argc == 1) {
Usage(argv);
@@ -54,22 +209,80 @@ int main(int argc, char** argv) {
for (int arg = 1; arg < argc; ++arg) {
std::string argstr = argv[arg];
- bool has_arg_next = (arg+1)<argc;
- std::string arg_next = has_arg_next ? argv[arg+1] : "";
+ std::optional<std::string> arg_next;
+ if ((arg + 1) < argc) {
+ arg_next = argv[arg+1];
+ }
if (argstr == "--help" || argstr == "-h") {
Usage(argv);
- } else if (argstr == "--root" || argstr == "-r") {
- if (!has_arg_next) {
- std::cerr << "Missing --root <value>" << std::endl;
- return 1;
- }
- root_directories.push_back(arg_next);
- ++arg;
+ } else if (auto val = ParseNamedArgument({"--root=", "-r"}, argstr, arg_next, /*inout*/&arg);
+ val) {
+ root_directories.push_back(*val);
} else if (argstr == "--verbose" || argstr == "-v") {
enable_verbose = true;
} else if (argstr == "--wait" || argstr == "-w") {
wait_for_keystroke = true;
+ }
+ else if (argstr == "--all" || argstr == "-a") {
+ all = true;
+ } else if (auto val = ParseNamedArgument({"--data-source=", "-ds"},
+ argstr,
+ arg_next,
+ /*inout*/&arg);
+ val) {
+ auto ds = ParseDataSourceKind(*val);
+ if (!ds) {
+ std::cerr << "Invalid --data-source=<value>" << std::endl;
+ return 1;
+ }
+ data_source = *ds;
+ } else if (auto val = ParseNamedArgument({"--output=", "-o"},
+ argstr,
+ arg_next,
+ /*inout*/&arg);
+ val) {
+ output_filename = *val;
+ } else if (auto val = ParseNamedArgument({"--process-mode=", "-pm"},
+ argstr,
+ arg_next,
+ /*inout*/&arg);
+ val) {
+ auto pm = ParseProcessMode(*val);
+ if (!pm) {
+ std::cerr << "Invalid --process-mode=<value>" << std::endl;
+ return 1;
+ }
+ process_mode = *pm;
+ }
+ else if (auto val = ParseNamedArgument({"--output-format=", "-of"},
+ argstr,
+ arg_next,
+ /*inout*/&arg);
+ val) {
+ auto of = ParseOutputFormatKind(*val);
+ if (!of) {
+ std::cerr << "Missing --output-format=<value>" << std::endl;
+ return 1;
+ }
+ output_format = *of;
+ } else if (auto val = ParseNamedArgument({"--verify=", "-vy="},
+ argstr,
+ arg_next,
+ /*inout*/&arg);
+ val) {
+ auto vy = ParseVerifyKind(*val);
+ if (!vy) {
+ std::cerr << "Invalid --verify=<value>" << std::endl;
+ return 1;
+ }
+ verify = *vy;
+ } else if (auto val = ParseNamedArgument({"--textcache=", "-tc"},
+ argstr,
+ arg_next,
+ /*inout*/&arg);
+ val) {
+ text_cache_filename = *val;
} else {
Inode maybe_inode{};
@@ -94,10 +307,23 @@ int main(int argc, char** argv) {
root_directories.push_back(".");
}
- if (inode_list.size() == 0) {
- DCHECK_EQ(true, false);
- std::cerr << "Provide at least one inode." << std::endl;
+ if (inode_list.size() == 0 && !all) {
+ std::cerr << "Provide at least one inode. Or use --all to dump everything." << std::endl;
return 1;
+ } else if (all && inode_list.size() > 0) {
+ std::cerr << "[WARNING]: --all flag ignores all inodes passed on command line." << std::endl;
+ }
+
+ std::ofstream fout;
+ if (output_filename) {
+ fout.open(*output_filename);
+ if (!fout) {
+ std::cerr << "Failed to open output file for writing: \"" << *output_filename << "\"";
+ return 1;
+ }
+ } else {
+ fout.open("/dev/null"); // have to open *something* otherwise rdbuf fails.
+ fout.basic_ios<char>::rdbuf(std::cout.rdbuf());
}
if (enable_verbose) {
@@ -109,7 +335,12 @@ int main(int argc, char** argv) {
for (auto& inode_num : inode_list) {
LOG(VERBOSE) << "Searching for inode " << inode_num;
}
+
+ LOG(VERBOSE) << "Dumping all inodes? " << all;
}
+ // else use
+ // $> ANDROID_LOG_TAGS='*:d' iorap.inode2filename <args>
+ // which will enable arbitrary log levels.
// Useful to attach a debugger...
// 1) $> inode2filename -w <args>
@@ -120,33 +351,90 @@ int main(int argc, char** argv) {
std::cin >> wait_for_keystroke;
}
- fruit::Injector<SearchDirectories> injector(GetSearchDirectoriesComponent);
- SearchDirectories* search_directories = injector.get<SearchDirectories*>();
+ fruit::Injector<SystemCall> injector(GetSystemCallComponent);
+
+ InodeResolverDependencies ir_dependencies;
+ // Passed from command-line.
+ ir_dependencies.data_source = data_source;
+ ir_dependencies.process_mode = process_mode;
+ ir_dependencies.root_directories = root_directories;
+ ir_dependencies.text_cache_filename = text_cache_filename;
+ ir_dependencies.verify = verify;
+ // Hardcoded.
+ ir_dependencies.system_call = injector.get<SystemCall*>();
+
+ std::shared_ptr<InodeResolver> inode_resolver =
+ InodeResolver::Create(ir_dependencies);
- auto/*observable[2]*/ [inode_results, connectable] =
- search_directories->FindFilenamesFromInodesPair(
- std::move(root_directories),
- std::move(inode_list),
- SearchMode::kInProcessDirect);
+ inode_resolver->StartRecording();
+ sleep(recording_time_sec); // TODO: add cli flag for this when we add something that needs it.
+ inode_resolver->StopRecording();
- int return_code = 1;
- inode_results.subscribe([&return_code](const InodeResult& result) {
+ auto/*observable<InodeResult>*/ inode_results = all
+ ? inode_resolver->EmitAll()
+ : inode_resolver->FindFilenamesFromInodes(std::move(inode_list));
+
+ int return_code = 2;
+ inode_results.subscribe(
+ /*on_next*/[&return_code, output_format, &fout](const InodeResult& result) {
if (result) {
- LOG(DEBUG) << "Inode match: " << result.inode << ", " << result.data.value();
- std::cout << "Inode match: " << result.inode << ", " << result.data.value() << std::endl;
+ LOG(DEBUG) << "Inode match: " << result;
+ if (output_format == OutputFormatKind::kLog) {
+ fout << "\033[1;32m[OK]\033[0m "
+ << result.inode
+ << " \"" << result.data.value() << "\"" << std::endl;
+ } else if (output_format == OutputFormatKind::kIpc) {
+ fout << "K "
+ << result.inode
+ << " " << result.data.value() << std::endl;
+ } else if (output_format == OutputFormatKind::kTextCache) {
+ // Same format as TextCacheDataSource (system/extras/pagecache/pagecache.py -d)
+ // "$device_number $inode $filesize $filename..."
+ const Inode& inode = result.inode;
+ fout << inode.GetDevice() << " "
+ << inode.GetInode()
+ << " -1 " // always -1 for filesize, since we don't track what it is.
+ << result.data.value() << "\n"; // don't use endl which flushes, for faster writes.
+ } else {
+ LOG(FATAL) << "Not implemented this kind of --output-format";
+ }
+
return_code = 0;
} else {
- LOG(WARNING) << "Failed to match inode: " << result.inode;
+ LOG(DEBUG) << "Failed to match inode: " << result;
+ if (output_format == OutputFormatKind::kLog) {
+ fout << "\033[1;31m[ERR]\033[0m "
+ << result.inode
+ << " '" << *result.ErrorMessage() << "'" << std::endl;
+ } else if (output_format == OutputFormatKind::kIpc) {
+ fout << "E "
+ << result.inode
+ << " " << result.data.error() << std::endl;
+ }
+ else if (output_format == OutputFormatKind::kTextCache) {
+ // Don't add bad results to the textcache. They are dropped.
+ } else {
+ LOG(FATAL) << "Not implemented this kind of --output-format";
+ }
}
+ }, /*on_error*/[&return_code](rxcpp::util::error_ptr error) {
+ // Usually occurs very early on before we see the first result.
+ // In this case the error is terminal so we just end up exiting out soon.
+ return_code = 3;
+ LOG(ERROR) << "Critical error: " << rxcpp::util::what(error);
});
- // Normally #subscribe would start emitting items immediately, but this does nothing yet
- // because one of the nodes in the flow graph was published. Published streams make the entire
- // downstream inert until #connect is called.
- connectable->connect();
-
- // 0 -> found at least a single match, 1 -> could not find any matches.
+ // 0 -> found at least a single match,
+ // 1 -> bad parameters,
+ // 2 -> could not find any matches,
+ // 3 -> rxcpp on_error.
return return_code;
}
+} // namespace iorap::inode2filename
+
+int main(int argc, char** argv) {
+ return ::iorap::inode2filename::main(argc, argv);
+}
+
#endif
diff --git a/src/inode2filename/out_of_process_inode_resolver.cc b/src/inode2filename/out_of_process_inode_resolver.cc
new file mode 100644
index 0000000..88ce6e0
--- /dev/null
+++ b/src/inode2filename/out_of_process_inode_resolver.cc
@@ -0,0 +1,425 @@
+// Copyright (C) 2020 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
+//
+// http://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 "common/cmd_utils.h"
+#include "inode2filename/inode_resolver.h"
+#include "inode2filename/out_of_process_inode_resolver.h"
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/unique_fd.h>
+
+#include <sstream>
+#include <stdio.h>
+#include <unistd.h>
+
+namespace rx = rxcpp;
+
+namespace iorap::inode2filename {
+
+using ::android::base::unique_fd;
+using ::android::base::borrowed_fd;
+
+static const char* GetCommandFileName() {
+ // Avoid ENOENT by execve by specifying the absolute path of inode2filename.
+#ifdef __ANDROID__
+ return "/system/bin/iorap.inode2filename";
+#else
+ static const char* file_name = nullptr;
+
+ if (file_name == nullptr) {
+ char* out_dir = getenv("ANDROID_HOST_OUT");
+ static std::string file_name_str = out_dir;
+ if (out_dir != nullptr) {
+ file_name_str += "/bin/";
+ } else {
+ // Assume it's in the same directory as the binary we are in.
+ std::string self_path;
+ CHECK(::android::base::Readlink("/proc/self/exe", /*out*/&self_path));
+
+ std::string self_dir = ::android::base::Dirname(self_path);
+ file_name_str = self_dir + "/";
+ }
+ file_name_str += "iorap.inode2filename";
+
+ file_name = file_name_str.c_str();
+ }
+
+ return file_name;
+#endif
+}
+
+std::error_code ErrorCodeFromErrno() {
+ int err = errno;
+ return std::error_code(err, std::system_category());
+}
+
+std::ios_base::failure IosBaseFailureWithErrno(const char* message) {
+ std::error_code ec = ErrorCodeFromErrno();
+ return std::ios_base::failure(message, ec);
+}
+
+static constexpr bool kDebugFgets = false;
+
+// This always contains the 'newline' character at the end of the string.
+// If there is not, the string is both empty and we hit EOF (or an error occurred).
+std::string FgetsWholeLine(FILE* stream,
+ bool* eof) {
+ DCHECK(stream != nullptr);
+ DCHECK(eof != nullptr);
+
+ char buf[1024];
+
+ std::string str;
+ *eof = false;
+
+ while (true) {
+ memset(buf, '\0', sizeof(buf));
+
+ char* out = fgets(&buf[0], sizeof(buf), stream);
+
+ if (out == nullptr) {
+ // either EOF or error.
+
+ *eof = true;
+ if (feof(stream)) {
+ return str;
+ } else {
+ // error! :(
+ PLOG(ERROR) << "failed to fgets";
+ return str;
+ }
+ }
+
+ if (kDebugFgets) {
+ std::string dbg;
+
+ for (size_t i = 0; i < sizeof(buf); ++i) {
+ if (buf[i] == '\0') {
+ break;
+ }
+
+ int val = buf[i];
+
+ dbg += "," + std::to_string(val);
+ }
+
+ LOG(DEBUG) << "fgets ascii: " << dbg;
+ }
+
+ str += buf;
+
+ // fgets always reads at most count-1 characters.
+ // the last character is always '\0'
+ // the second-to-last character would be \n if we read the full line,
+ // and any other character otherwise.
+ if (!str.empty() && str.back() == '\n') {
+ // we read the whole line: do not need to call fgets again.
+ break;
+ }
+ }
+
+ return str;
+}
+
+static inline void LeftTrim(/*inout*/std::string& s) {
+ s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) {
+ return !std::isspace(ch);
+ }));
+}
+
+// Parses an --output-format=ipc kind of line into an InodeResult.
+// Returns nullopt if parsing failed.
+std::optional<InodeResult> ParseFromLine(const std::string& line) {
+ // inode <- INT:INT:INT
+ // line_ok <- 'K ' inode ' ' STRING
+ // line_err <- 'E ' inode ' ' INT
+ //
+ // result <- line_ok | line_err
+
+ std::stringstream ss{line};
+
+ bool result_ok = false;
+
+ std::string ok_or_error;
+ ss >> ok_or_error;
+
+ if (ss.fail()) {
+ return std::nullopt;
+ }
+
+ if (ok_or_error == "K") {
+ result_ok = true;
+ } else if (ok_or_error == "E") {
+ result_ok = false;
+ } else {
+ return std::nullopt;
+ }
+
+ std::string inode_s;
+ ss >> inode_s;
+
+ if (ss.fail()) {
+ return std::nullopt;
+ }
+
+ Inode inode;
+
+ std::string inode_parse_error_msg;
+ if (!Inode::Parse(inode_s, /*out*/&inode, /*out*/&inode_parse_error_msg)) {
+ return std::nullopt;
+ }
+
+ if (result_ok == false) {
+ int error_code;
+ ss >> error_code;
+
+ if (ss.fail()) {
+ return std::nullopt;
+ }
+
+ return InodeResult::makeFailure(inode, error_code);
+ } else if (result_ok == true) {
+ std::string rest_of_line;
+
+ // parse " string with potential spaces[\n]"
+ // into "string with potential spaces"
+ std::getline(/*inout*/ss, /*out*/rest_of_line);
+ LeftTrim(/*inout*/rest_of_line);
+
+ if (ss.fail()) {
+ return std::nullopt;
+ }
+
+ const std::string& file_name = rest_of_line;
+
+ return InodeResult::makeSuccess(inode, file_name);
+ }
+
+ return std::nullopt;
+}
+
+struct OutOfProcessInodeResolver::Impl {
+ Impl() {
+ }
+
+ private:
+ // Create the argv we will pass to the forked inode2filename, corresponds to #EmitAll.
+ std::vector<std::string> CreateArgvAll(const InodeResolverDependencies& deps) const {
+ std::vector<std::string> argv;
+ argv.push_back("--all");
+
+ return CreateArgv(deps, std::move(argv));
+ }
+
+ // Create the argv we will pass to the forked inode2filename, corresponds to
+ // #FindFilenamesFromInodes.
+ std::vector<std::string> CreateArgvFind(const InodeResolverDependencies& deps,
+ const std::vector<Inode>& inodes) const {
+ std::vector<std::string> argv;
+ iorap::common::AppendArgsRepeatedly(argv, inodes);
+
+ return CreateArgv(deps, std::move(argv));
+ }
+
+ std::vector<std::string> CreateArgv(const InodeResolverDependencies& deps,
+ std::vector<std::string> append_argv) const {
+ InodeResolverDependencies deps_oop = deps;
+ deps_oop.process_mode = ProcessMode::kInProcessDirect;
+
+ std::vector<std::string> argv = ToArgs(deps_oop);
+
+ argv.push_back("--output-format=ipc");
+
+ if (iorap::common::GetBoolEnvOrProperty("iorap.inode2filename.log.verbose", false)) {
+ argv.push_back("--verbose");
+ }
+
+ iorap::common::AppendArgsRepeatedly(argv, std::move(append_argv));
+
+ return argv;
+ }
+
+ public:
+ // fork+exec into inode2filename with 'inodes' as the search list.
+ // Each result is parsed into a dest#on_next(result).
+ // If a fatal error occurs, dest#on_error is called once and no other callbacks are called.
+ void EmitFromCommandFind(rxcpp::subscriber<InodeResult>& dest,
+ const InodeResolverDependencies& deps,
+ const std::vector<Inode>& inodes) {
+ // Trivial case: complete immediately.
+ // Executing inode2filename with empty search list will just print the --help menu.
+ if (inodes.empty()) {
+ dest.on_completed();
+ }
+
+ std::vector<std::string> argv = CreateArgvFind(deps, inodes);
+ EmitFromCommandWithArgv(/*inout*/dest, std::move(argv), inodes.size());
+ }
+
+ // fork+exec into inode2filename with --all (listing *all* inodes).
+ // Each result is parsed into a dest#on_next(result).
+ // If a fatal error occurs, dest#on_error is called once and no other callbacks are called.
+ void EmitFromCommandAll(rxcpp::subscriber<InodeResult>& dest,
+ const InodeResolverDependencies& deps) {
+ std::vector<std::string> argv = CreateArgvAll(deps);
+ EmitFromCommandWithArgv(/*inout*/dest, std::move(argv), /*result_count*/std::nullopt);
+ }
+
+ private:
+ void EmitFromCommandWithArgv(rxcpp::subscriber<InodeResult>& dest,
+ std::vector<std::string> argv_vec,
+ std::optional<size_t> result_count) {
+ unique_fd pipe_reader, pipe_writer;
+ if (!::android::base::Pipe(/*out*/&pipe_reader, /*out*/&pipe_writer)) {
+ dest.on_error(
+ rxcpp::util::make_error_ptr(
+ IosBaseFailureWithErrno("Failed to create out-going pipe for inode2filename")));
+ return;
+ }
+
+ pid_t child = fork();
+ if (child == -1) {
+ dest.on_error(
+ rxcpp::util::make_error_ptr(
+ IosBaseFailureWithErrno("Failed to fork process for inode2filename")));
+ return;
+ } else if (child > 0) { // we are the caller of this function
+ LOG(DEBUG) << "forked into a process for inode2filename , pid = " << child;
+ } else {
+ // we are the child that was forked
+
+ const char* kCommandFileName = GetCommandFileName();
+
+ std::stringstream argv; // for debugging.
+ for (std::string arg : argv_vec) {
+ argv << arg << ' ';
+ }
+ LOG(DEBUG) << "fork+exec: " << kCommandFileName << " " << argv.str();
+
+ // Redirect only stdout. stdin is unused, stderr is same as parent.
+ if (dup2(pipe_writer.get(), STDOUT_FILENO) == -1) {
+ // Trying to call #on_error does not make sense here because we are in a forked process,
+ // the only thing we can do is crash definitively.
+ PLOG(FATAL) << "Failed to dup2 for inode2filename";
+ }
+
+ std::unique_ptr<const char *[]> argv_ptr =
+ common::VecToArgv(kCommandFileName, argv_vec);
+
+ if (execve(kCommandFileName,
+ (char **)argv_ptr.get(),
+ /*envp*/nullptr) == -1) {
+ // Trying to call #on_error does not make sense here because we are in a forked process,
+ // the only thing we can do is crash definitively.
+ PLOG(FATAL) << "Failed to execve process for inode2filename";
+ }
+ // This should never return.
+ }
+
+ // Immediately close the writer end of the pipe because we never use it.
+ pipe_writer.reset();
+
+ // Convert pipe(reader) file descriptor into FILE*.
+ std::unique_ptr<FILE, int(*)(FILE*)> file_reader{
+ ::android::base::Fdopen(std::move(pipe_reader), /*mode*/"r"), fclose};
+ if (!file_reader) {
+ dest.on_error(
+ rxcpp::util::make_error_ptr(
+ IosBaseFailureWithErrno("Failed to fdopen for inode2filename")));
+ return;
+ }
+
+ size_t actual_result_count = 0;
+
+ bool file_eof = false;
+ while (!file_eof) {
+ std::string inode2filename_line = FgetsWholeLine(file_reader.get(), /*out*/&file_eof);
+
+ if (inode2filename_line.empty()) {
+ if (!file_eof) {
+ // Ignore empty lines.
+ LOG(WARNING) << "inode2filename: got empty line";
+ }
+ continue;
+ }
+
+ LOG(DEBUG) << "inode2filename output-line: " << inode2filename_line;
+
+ std::optional<InodeResult> res = ParseFromLine(inode2filename_line);
+ if (!res) {
+ std::string error_msg = "Invalid output: ";
+ error_msg += inode2filename_line;
+ dest.on_error(
+ rxcpp::util::make_error_ptr(std::ios_base::failure(error_msg)));
+ return;
+ }
+ dest.on_next(*res);
+
+ ++actual_result_count;
+ }
+
+ LOG(DEBUG) << "inode2filename output-eof";
+
+ // Ensure that the # of inputs into the rx stream match the # of outputs.
+ // This is validating the post-condition of FindFilenamesFromInodes.
+ if (result_count && actual_result_count != *result_count) {
+ std::stringstream ss;
+ ss << "Invalid number of results, expected: " << *result_count;
+ ss << ", actual: " << actual_result_count;
+
+ dest.on_error(
+ rxcpp::util::make_error_ptr(std::ios_base::failure(ss.str())));
+ return;
+ }
+
+ CHECK(child > 0); // we are in the parent process, parse the IPC output of inode2filename
+ dest.on_completed();
+ }
+};
+
+rxcpp::observable<InodeResult>
+ OutOfProcessInodeResolver::FindFilenamesFromInodes(std::vector<Inode> inodes) const {
+ return rxcpp::observable<>::create<InodeResult>(
+ [self=std::static_pointer_cast<const OutOfProcessInodeResolver>(shared_from_this()),
+ inodes=std::move(inodes)](
+ rxcpp::subscriber<InodeResult> s) {
+ self->impl_->EmitFromCommandFind(s, self->GetDependencies(), inodes);
+ });
+}
+
+rxcpp::observable<InodeResult>
+ OutOfProcessInodeResolver::EmitAll() const {
+ auto self = std::static_pointer_cast<const OutOfProcessInodeResolver>(shared_from_this());
+ CHECK(self != nullptr);
+ CHECK(self->impl_ != nullptr);
+
+ return rxcpp::observable<>::create<InodeResult>(
+ [self](rxcpp::subscriber<InodeResult> s) {
+ CHECK(self != nullptr);
+ CHECK(self->impl_ != nullptr);
+ self->impl_->EmitFromCommandAll(s, self->GetDependencies());
+ });
+}
+
+OutOfProcessInodeResolver::OutOfProcessInodeResolver(InodeResolverDependencies dependencies)
+ : InodeResolver{std::move(dependencies)}, impl_{new Impl{}} {
+}
+
+OutOfProcessInodeResolver::~OutOfProcessInodeResolver() {
+ // std::unique_ptr requires complete types, but we hide the definition in the header.
+ delete impl_;
+}
+
+} // namespace iorap::inode2filename
diff --git a/src/inode2filename/out_of_process_inode_resolver.h b/src/inode2filename/out_of_process_inode_resolver.h
new file mode 100644
index 0000000..c9f4291
--- /dev/null
+++ b/src/inode2filename/out_of_process_inode_resolver.h
@@ -0,0 +1,44 @@
+// Copyright (C) 2020 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_INODE2FILENAME_OUT_OF_PROCESS_INDOE_RESOLVER_H_
+#define IORAP_SRC_INODE2FILENAME_OUT_OF_PROCESS_INDOE_RESOLVER_H_
+
+#include "common/expected.h"
+#include "inode2filename/inode_resolver.h"
+
+namespace iorap::inode2filename {
+
+// Create an InodeResolver that fork+exec+pipes into the binary 'iorap.inode2filename'
+// and transmits the results back via an IPC mechanism.
+//
+// This is instantiated by InodeResolver::Create + ProcessMode::kOutOfProcessIpc
+class OutOfProcessInodeResolver : public InodeResolver {
+ public:
+ virtual rxcpp::observable<InodeResult>
+ FindFilenamesFromInodes(std::vector<Inode> inodes) const override;
+
+ virtual rxcpp::observable<InodeResult>
+ EmitAll() const override;
+
+ OutOfProcessInodeResolver(InodeResolverDependencies dependencies);
+ ~OutOfProcessInodeResolver();
+ private:
+ struct Impl;
+ Impl* impl_;
+};
+
+}
+
+#endif // IORAP_SRC_INODE2FILENAME_OUT_OF_PROCESS_INDOE_RESOLVER_H_
diff --git a/src/inode2filename/search_directories.cc b/src/inode2filename/search_directories.cc
index 2ec09d9..1d31671 100644
--- a/src/inode2filename/search_directories.cc
+++ b/src/inode2filename/search_directories.cc
@@ -53,11 +53,45 @@ using android::base::StringPrintf; // NOLINT
namespace iorap::inode2filename {
+#define DEBUG_INODE_SET 0
+
// A multimap of 'ino_t -> List[Inode]' (where the value Inodes have the same ino_t as the key).
//
// A flat list of Inodes is turned into the above map, then keys can be removed one at a time
// until the InodeSet eventually becomes empty.
struct InodeSet {
+
+ InodeSet() = default;
+#if DEBUG_INODE_SET
+ InodeSet(const InodeSet& other) {
+ LOG(INFO) << "InodeSet-copyctor";
+ set_ = other.set_;
+ }
+
+ InodeSet(InodeSet&& other) {
+ LOG(INFO) << "InodeSet-movector";
+ set_ = std::move(other.set_);
+ }
+
+ InodeSet& operator=(const InodeSet& other) {
+ LOG(INFO) << "InodeSet-opassign-copy";
+ set_ = other.set_;
+ return *this;
+ }
+
+ InodeSet& operator=(InodeSet&& other) {
+ LOG(INFO) << "InodeSet-opassign-move";
+ set_ = std::move(other.set_);
+ return *this;
+ }
+#else
+ InodeSet(InodeSet&& other) = default;
+ InodeSet& operator=(InodeSet&& other) = default;
+ // Copying InodeSet can be very expensive, refuse to even allow compiling such code.
+ InodeSet(const InodeSet& other) = delete;
+ InodeSet& operator=(const InodeSet& other) = delete;
+#endif
+
struct ValueRange {
auto/*Iterable<Inode>*/ begin() {
return begin_;
@@ -149,7 +183,7 @@ struct InodeSet {
});
if (found != inode_list.end()) {
- const Inode& inode = found->second;
+ Inode inode = found->second;
LOG(VERBOSE) << "InodeSet:FindAndRemoveInodeInList *success* inode+device " << inode;
DCHECK(found->second.inode == stat_buf.st_ino);
// Erase the inode from the list. This is important.
@@ -160,6 +194,33 @@ struct InodeSet {
return std::nullopt;
}
+ // Match all fields of an Inode against another Inode.
+ //
+ // The returned Inode (if any) is removed from the InodeSet; it will not be returned by
+ // FindInodeList in future calls.
+ std::optional<Inode> FindAndRemoveInodeInList(ValueRange inode_list,
+ const Inode& inode) {
+ LOG(VERBOSE) << "FindAndRemoveInodeInList " << inode_list << ", "
+ << inode << "}";
+
+ auto /*iterator*/ found = std::find_if(inode_list.begin(),
+ inode_list.end(),
+ [&](const std::pair<ino_t, Inode>& pair) {
+ return inode == pair.second;
+ });
+
+ if (found != inode_list.end()) {
+ Inode inode = found->second;
+ LOG(VERBOSE) << "InodeSet:FindAndRemoveInodeInList *success* inode+device " << inode;
+ DCHECK_EQ(found->second, inode);
+ // Erase the inode from the list. This is important.
+ set_.erase(found);
+ return inode;
+ }
+
+ return std::nullopt;
+ }
+
// TODO: equality and string operators for testing/logging.
private:
// Explanation: readdir returns a 'file' -> 'ino_t inode' mapping.
@@ -641,7 +702,8 @@ struct StatError {
};
std::ostream& operator<<(std::ostream& os, const StatError& e) {
- os << "StatError{" << e.err_no << "," << e.path_name << "}";
+ os << "StatError{" << e.err_no << "," << e.path_name
+ << ": " << strerror(e.err_no) << "}";
return os;
}
@@ -685,6 +747,12 @@ struct SearchState {
// The InodeSet removes any matching 'Inode'.
std::optional<SearchMatch> match;
+ SearchState() = default;
+ SearchState(SearchState&& other) = default;
+
+ // Do not copy this because copying InodeSet is excruciatingly slow.
+ SearchState(const SearchState& other) = delete;
+
// TODO: make sure this doesn't copy [inodes], as that would be unnecessarily expensive.
};
@@ -727,18 +795,19 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode
// DirectoryEntry is missing the dev_t portion, so we may need to call scan(2) again
// to confirm the dev_t. We skip calling scan(2) when the ino_t does not match.
// InodeSet lets us optimally avoid calling scan(2).
- SearchState initial;
- initial.inode_set = InodeSet::OfList(inode_search_list);
+ std::shared_ptr<SearchState> initial = std::make_shared<SearchState>();
+ initial->inode_set = InodeSet::OfList(inode_search_list);
auto/*[observable<SearchState>,Connectable]*/ search_state_results = find_all_subdir_entries.scan(
std::move(initial),
- [system_call=system_call](SearchState search_state, const DirectoryEntry& dir_entry) {
+ [system_call=system_call](std::shared_ptr<SearchState> search_state,
+ const DirectoryEntry& dir_entry) {
LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#Scan "
- << dir_entry << ", state: " << search_state;
+ << dir_entry << ", state: " << *search_state;
- search_state.match = std::nullopt;
+ search_state->match = std::nullopt;
- InodeSet* inodes = &search_state.inode_set;
+ InodeSet* inodes = &search_state->inode_set;
// Find all the possible inodes across different devices.
InodeSet::ValueRange inode_list = inodes->FindInodeList(dir_entry.d_ino);
@@ -754,23 +823,23 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode
std::optional<Inode> inode = inodes->FindAndRemoveInodeInList(inode_list, stat_buf);
if (inode) {
- search_state.match = SearchMatch{inode.value(), dir_entry.filename};
+ search_state->match = SearchMatch{inode.value(), dir_entry.filename};
}
});
- return search_state; // implicit move.
+ return search_state;
}
// Avoid exhausting a potentially 'infinite' stream of files by terminating as soon
// as we find every single inode we care about.
- ).take_while([](const SearchState& state) {
+ ).take_while([](std::shared_ptr<SearchState> state) {
// Also emit the last item that caused the search set to go empty.
- bool cond = !state.inode_set.Empty() || state.match;
+ bool cond = !state->inode_set.Empty() || state->match;
if (WOULD_LOG(VERBOSE)) {
static int kCounter = 0;
LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#take_while (" << kCounter++ <<
",is_empty:"
- << state.inode_set.Empty() << ", match:" << state.match.has_value();
+ << state->inode_set.Empty() << ", match:" << state->match.has_value();
}
// Minor O(1) implementation inefficiency:
// (Too minor to fix but it can be strange if looking at the logs or readdir traces).
@@ -781,8 +850,8 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode
// This means that for cond to go to false, we would've read one extra item and then discarded
// it. If that item was the first child of a directory, that means we essentially did
// one redundant pass of doing a readdir.
- //
// In other words if the search set goes to empty while the current item is a directory,
+ //
// it will definitely readdir on it at least once as we try to get the first child in
// OnTreeTraversal.
//
@@ -792,7 +861,7 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode
if (!cond) {
LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#take_while "
- << "should now terminate for " << state;
+ << "should now terminate for " << *state;
}
return cond;
@@ -813,8 +882,10 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode
// The 'matched_inode_values' only touches the match.
// Either stream can 'std::move' from those fields because they don't move each other's fields.
auto/*observable<InodeResult>*/ matched_inode_values = search_state_results
- .filter([](const SearchState& search_state) { return search_state.match.has_value(); })
- .map([](SearchState& search_state) { return std::move(search_state.match.value()); })
+ .filter([](std::shared_ptr<SearchState> search_state) {
+ return search_state->match.has_value(); })
+ .map([](std::shared_ptr<SearchState> search_state) {
+ return std::move(search_state->match.value()); })
// observable<SearchMatch>
.map([](SearchMatch search_match) {
return InodeResult::makeSuccess(search_match.inode, std::move(search_match.filename));
@@ -823,10 +894,10 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode
auto/*observable<?>*/ unmatched_inode_values = search_state_results
// The 'last' SearchState is the one that contains all the remaining inodes.
.take_last(1) // observable<SearchState>
- .flat_map([](const SearchState& search_state) {
+ .flat_map([](std::shared_ptr<SearchState> search_state) {
LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#unmatched -- flat_map";
// Aside: Could've used a move here if the inodes weren't so lightweight already.
- return search_state.inode_set.IterateValues(); })
+ return search_state->inode_set.IterateValues(); })
// observable<Inode>
.map([](const Inode& inode) {
LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#unmatched -- map";
@@ -848,11 +919,10 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode
return std::make_pair(all_inode_results, search_state_results);
}
-
rxcpp::observable<InodeResult> SearchDirectories::FindFilenamesFromInodes(
std::vector<std::string> root_directories,
std::vector<Inode> inode_list,
- SearchMode mode) {
+ SearchMode mode) const {
DCHECK(mode == SearchMode::kInProcessDirect) << " other modes not implemented yet";
auto/*observable[2]*/ [inode_results, connectable] = SearchDirectoriesForMatchingInodes(
@@ -860,7 +930,7 @@ rxcpp::observable<InodeResult> SearchDirectories::FindFilenamesFromInodes(
std::move(inode_list),
system_call_);
- return inode_results;
+ return inode_results.ref_count(connectable);
}
// I think we could avoid this with auto_connect, which rxcpp doesn't seem to have.
@@ -898,7 +968,7 @@ std::pair<rxcpp::observable<InodeResult>, std::unique_ptr<SearchDirectories::RxA
SearchDirectories::FindFilenamesFromInodesPair(
std::vector<std::string> root_directories,
std::vector<Inode> inode_list,
- SearchMode mode) {
+ SearchMode mode) const {
DCHECK(mode == SearchMode::kInProcessDirect) << " other modes not implemented yet";
auto/*observable[2]*/ [inode_results, connectable] = SearchDirectoriesForMatchingInodes(
@@ -912,4 +982,385 @@ std::pair<rxcpp::observable<InodeResult>, std::unique_ptr<SearchDirectories::RxA
return {inode_results, std::move(connectable_ptr)};
}
+rxcpp::observable<InodeResult>
+ SearchDirectories::FindFilenamesFromInodes(std::vector<std::string> root_directories,
+ rxcpp::observable<Inode> inodes,
+ SearchMode mode) const {
+
+ // It's inefficient to search for inodes until the full search list is available,
+ // so first reduce to a vector so we can access all the inodes simultaneously.
+ return inodes.reduce(std::vector<Inode>{},
+ [](std::vector<Inode> vec, Inode inode) {
+ vec.push_back(inode);
+ return vec;
+ },
+ [](std::vector<Inode> v){
+ return v; // TODO: use an identity function
+ })
+ .flat_map([root_directories=std::move(root_directories), mode, self=*this]
+ (std::vector<Inode> vec) {
+ // All borrowed values (e.g. SystemCall) must outlive the observable.
+ return self.FindFilenamesFromInodes(root_directories, vec, mode);
+ }
+ );
+}
+
+auto/*[observable<InodeResult>]*/ EmitAllInodesFromDirectories(
+ std::vector<std::string> root_dirs,
+ borrowed<SystemCall*> system_call) {
+
+ // Create a (lazy) observable that will emit each DirectoryEntry that is a recursive subchild
+ // of root_dirs. Emission will be stopped when its unsubscribed from.
+ //
+ // This is done by calling readdir(3) lazily.
+ auto/*obs<DirectoryEntry>*/ find_all_subdir_entries = ([&]() {
+ DirectoryEntry sentinel = DirectoryEntry::CreateSentinel(std::move(root_dirs));
+ auto/*obs<DirectoryEntryResult*/ results = sentinel.GetSubTreePreOrderEntries(system_call);
+
+ // Drop any errors by logging them to logcat. "Unwrap" the expected into the underlying data.
+ auto/*obs<DirectoryEntry*>*/ expected_drop_errors = MapExpectedOrLogError(std::move(results));
+ return expected_drop_errors;
+ })();
+
+ // Fill in -1 for the dev_t since readdir only returns the ino_t.
+ // The caller of this function is expected to call stat(2) later on to fill in
+ // the full data.
+ return find_all_subdir_entries.map([](DirectoryEntry e) {
+ return InodeResult::makeSuccess(Inode::FromDeviceAndInode(-1, e.d_ino), std::move(e.filename));
+ });
+}
+
+rxcpp::observable<InodeResult>
+ SearchDirectories::ListAllFilenames(std::vector<std::string> root_directories) const {
+ // TODO: refactor implementation into DiskScanDataSource.
+ return EmitAllInodesFromDirectories(std::move(root_directories),
+ /*borrowed*/system_call_);
+}
+
+struct FilterState {
+ // Emit 'match' Inodes corresponding to the ones here.
+ InodeSet inode_set;
+
+ // An inode matching one of the ones in inode_set was discovered in the most-recently
+ // emitted SearchState.
+ //
+ // The InodeSet removes any matching 'Inode'.
+ std::optional<InodeResult> match;
+
+ FilterState() = default;
+ FilterState(FilterState&& other) = default;
+
+ // Copying the InodeSet is expensive, so forbid any copies.
+ FilterState(const FilterState& other) = delete;
+};
+
+std::ostream& operator<<(std::ostream& os, const FilterState& s) {
+ os << "FilterState{match:";
+ // Print the 'match' first. The InodeSet could be very large so it could be truncated in logs.
+ if (s.match) {
+ os << s.match.value();
+ } else {
+ os << "(none)";
+ }
+ os << ", inode_set:" << s.inode_set << "}";
+ return os;
+}
+
+rxcpp::observable<InodeResult> SearchDirectories::FilterFilenamesForSpecificInodes(
+ rxcpp::observable<InodeResult> all_inodes,
+ std::vector<Inode> inode_list,
+ bool missing_device_number, // missing dev_t portion?
+ bool needs_verification) const {
+ // TODO: refactor into InodeResolver
+
+ borrowed<SystemCall*> system_call = system_call_;
+
+ // InodeResult may be missing the dev_t portion, so we may need to call scan(2) again
+ // to confirm the dev_t. We skip calling scan(2) when the ino_t does not match.
+ // InodeSet lets us optimally avoid calling scan(2).
+ std::shared_ptr<FilterState> initial = std::make_shared<FilterState>();
+ initial->inode_set = InodeSet::OfList(inode_list);
+
+ auto/*[observable<FilterState>,Connectable]*/ filter_state_results = all_inodes.scan(
+ std::move(initial),
+ [system_call, missing_device_number]
+ (std::shared_ptr<FilterState> filter_state, InodeResult inode_result) {
+ LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#Scan "
+ << inode_result << ", state: " << *filter_state;
+
+ filter_state->match = std::nullopt;
+
+ InodeSet* inodes = &filter_state->inode_set;
+
+ // Find all the possible (dev_t, ino_t) potential needles given an ino_t in the haystack.
+ InodeSet::ValueRange inode_list = inodes->FindInodeList(inode_result.inode.inode);
+
+ // This inode result doesn't correspond to any inodes we are searching for.
+ if (!inode_list) {
+ // Drop the result and keep going.
+ return filter_state;
+ }
+
+ if (missing_device_number) {
+ // Need to fill in dev_t by calling stat(2).
+ VisitValueOrLogError(std::move(inode_result.data), [&](std::string filename) {
+ StatResult maybe_stat = Stat(filename, system_call);
+ VisitValueOrLogError(maybe_stat, [&](const struct stat& stat_buf) {
+ // Try to match the specific inode. Usually this will not result in a match (nullopt).
+ std::optional<Inode> inode = inodes->FindAndRemoveInodeInList(inode_list, stat_buf);
+
+ if (inode) {
+ filter_state->match = InodeResult::makeSuccess(inode.value(), std::move(filename));
+ }
+ });
+
+ // Note: stat errors are logged here to make the error closer to the occurrence.
+ // In theory, we could just return it as an InodeResult but then the error would
+ // just get logged elsewhere.
+ });
+ } else {
+ // Trust the dev_t in InodeResult is valid. Later passes can verify it.
+
+ // Try to match the specific inode. Usually this will not result in a match (nullopt).
+ std::optional<Inode> inode =
+ inodes->FindAndRemoveInodeInList(inode_list, inode_result.inode);
+
+ if (inode) {
+ filter_state->match = inode_result;
+ }
+
+ // Note that the InodeResult doesn't necessarily need to have a valid filename here.
+ // If the earlier pass returned an error-ed result, this will forward the error code.
+ }
+
+ return filter_state;
+ }
+ // Avoid exhausting a potentially 'infinite' stream of files by terminating as soon
+ // as we find every single inode we care about.
+ ).take_while([](std::shared_ptr<FilterState> state) {
+ // Also emit the last item that caused the search set to go empty.
+ bool cond = !state->inode_set.Empty() || state->match;
+
+ if (WOULD_LOG(VERBOSE)) {
+ static int kCounter = 0;
+ LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#take_while (" << kCounter++ <<
+ ",is_empty:"
+ << state->inode_set.Empty() << ", match:" << state->match.has_value();
+ }
+ // Minor O(1) implementation inefficiency:
+ // (Too minor to fix but it can be strange if looking at the logs or readdir traces).
+ //
+ // Note, because we return 'true' after the search set went empty,
+ // the overall stream graph still pulls from filter_state_results exactly once more:
+ //
+ // This means that for cond to go to false, we would've read one extra item and then discarded
+ // it. If that item was the first child of a directory, that means we essentially did
+ // one redundant pass of doing a readdir.
+ // In other words if the search set goes to empty while the current item is a directory,
+ //
+ // it will definitely readdir on it at least once as we try to get the first child in
+ // OnTreeTraversal.
+ //
+ // This could be fixed with a 'take_until(Predicate)' operator which doesn't discard
+ // the last item when the condition becomes false. However rxcpp seems to lack this operator,
+ // whereas RxJava has it.
+
+ if (!cond) {
+ LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#take_while "
+ << "should now terminate for " << *state;
+ }
+
+ return cond;
+ }).publish();
+ // The publish here is mandatory. The stream is consumed twice (once by matched and once by
+ // unmatched streams). Without the publish, once all items from 'matched' were consumed it would
+ // start another instance of 'filter_state_results' (i.e. it appears as if the search
+ // is restarted).
+ //
+ // By using 'publish', the filter_state_results is effectively shared by both downstream nodes.
+ // Note that this also requires the subscriber to additionally call #connect on the above stream,
+ // otherwise no work will happen.
+
+ // Lifetime notes:
+ //
+ // The the 'FilterState' is emitted into both below streams simultaneously.
+ // The 'unmatched_inode_values' only touches the inode_set.
+ // The 'matched_inode_values' only touches the match.
+ // Either stream can 'std::move' from those fields because they don't move each other's fields.
+ auto/*observable<InodeResult>*/ matched_inode_values = filter_state_results
+ .filter([](std::shared_ptr<FilterState> filter_state) {
+ return filter_state->match.has_value(); })
+ .map([](std::shared_ptr<FilterState> filter_state) {
+ return std::move(filter_state->match.value()); });
+ // observable<InodeResult>
+
+ auto/*observable<?>*/ unmatched_inode_values = filter_state_results
+ // The 'last' FilterState is the one that contains all the remaining inodes.
+ .take_last(1) // observable<FilterState>
+ .flat_map([](std::shared_ptr<FilterState> filter_state) {
+ LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#unmatched -- flat_map";
+ // Aside: Could've used a move here if the inodes weren't so lightweight already.
+ return filter_state->inode_set.IterateValues(); })
+ // observable<Inode>
+ .map([](const Inode& inode) {
+ LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#unmatched -- map";
+ return InodeResult::makeFailure(inode, InodeResult::kCouldNotFindFilename);
+ });
+ // observable<InodeResult>
+
+ // The matched and unmatched InodeResults are emitted together.
+ // Use merge, not concat, because we need both observables to be subscribed to simultaneously.
+
+ auto/*observable<InodeResult*/ all_inode_results =
+ matched_inode_values.merge(unmatched_inode_values);
+
+ // Verify the inode results by calling stat(2).
+ // Unverified results are turned into an error.
+
+ auto/*observable<InodeResult>*/ verified_inode_results =
+ all_inode_results.map([needs_verification, system_call](InodeResult result) {
+ if (!needs_verification || !result) {
+ // Skip verification if requested, or if the result didn't have a filename.
+ return result;
+ }
+
+ const std::string& filename = result.data.value();
+ StatResult maybe_stat = Stat(filename, system_call);
+
+ if (maybe_stat)
+ {
+ if (result.inode == Inode::FromDeviceAndInode(maybe_stat->st_dev, maybe_stat->st_ino)) {
+ return result;
+ } else {
+ LOG(WARNING)
+ << "FilterFilenamesForSpecificInodes#verified fail out-of-date inode: " << result;
+ return InodeResult::makeFailure(result.inode, InodeResult::kVerificationFailed);
+ }
+ } else {
+ // Forward stat errors directly, as it could be a missing security rule,
+ // but turn -ENOENT into casual verification errors.
+ const StatError& err = maybe_stat.error();
+ int error_code = err.err_no;
+ if (err.err_no == ENOENT) {
+ error_code = InodeResult::kVerificationFailed;
+
+ // TODO: Don't LOG(WARNING) here because this could be very common if we
+ // access the data much much later after the initial results were read in.
+ LOG(WARNING)
+ << "FilterFilenamesForSpecificInodes#verified fail out-of-date filename: " << result;
+ } else {
+ LOG(ERROR)
+ << "FilterFilenamesForSpecificInodes#verified stat(2) failure: " << err;
+ }
+
+ return InodeResult::makeFailure(result.inode, error_code);
+ }
+ });
+
+ // Now that all mid-stream observables have been connected, turn the Connectable observable
+ // into a regular observable.
+ return verified_inode_results.ref_count(filter_state_results);
+}
+
+rxcpp::observable<InodeResult> SearchDirectories::EmitAllFilenames(
+ rxcpp::observable<InodeResult> all_inodes,
+ bool missing_device_number, // missing dev_t portion?
+ bool needs_verification) const {
+ // TODO: refactor into InodeResolver
+
+ borrowed<SystemCall*> system_call = system_call_;
+
+ // InodeResult may be missing the dev_t portion, so we may need to call scan(2) again
+ // to confirm the dev_t.
+
+ using EmitAllState = std::optional<InodeResult>;
+
+ auto/*[observable<FilterState>,Connectable]*/ all_inode_results = all_inodes.map(
+ [system_call, missing_device_number](InodeResult inode_result) {
+ LOG(VERBOSE) << "EmitAllFilenames#map "
+ << inode_result;
+
+ // Could fail if the device number is missing _and_ stat(2) fails.
+ EmitAllState match = std::nullopt;
+
+ if (missing_device_number) {
+ // Need to fill in dev_t by calling stat(2).
+ VisitValueOrLogError(std::move(inode_result.data), [&](std::string filename) {
+ StatResult maybe_stat = Stat(filename, system_call);
+ VisitValueOrLogError(maybe_stat, [&](const struct stat& stat_buf) {
+ Inode inode = Inode::FromDeviceAndInode(stat_buf.st_dev, stat_buf.st_ino);
+ match = InodeResult::makeSuccess(inode, std::move(filename));
+ });
+
+ // Note: stat errors are logged here to make the error closer to the occurrence.
+ // In theory, we could just return it as an InodeResult but then the error would
+ // just get logged elsewhere.
+ });
+ } else {
+ // Trust the dev_t in InodeResult is valid. Later passes can verify it.
+ match = std::move(inode_result);
+
+ // Note that the InodeResult doesn't necessarily need to have a valid filename here.
+ // If the earlier pass returned an error-ed result, this will forward the error code.
+ }
+
+ return match; // implicit move.
+ }
+ );
+
+ auto/*observable<InodeResult>*/ matched_inode_values = all_inode_results
+ .filter([](const EmitAllState& filter_state) { return filter_state.has_value(); })
+ .map([](EmitAllState& filter_state) { return std::move(filter_state.value()); });
+ // observable<InodeResult>
+
+ // Verify the inode results by calling stat(2).
+ // Unverified results are turned into an error.
+
+ auto/*observable<InodeResult>*/ verified_inode_results =
+ matched_inode_values.map([needs_verification, system_call](InodeResult result) {
+ if (!needs_verification || !result) {
+ // Skip verification if requested, or if the result didn't have a filename.
+ return result;
+ }
+
+ const std::string& filename = result.data.value();
+ StatResult maybe_stat = Stat(filename, system_call);
+
+ if (maybe_stat)
+ {
+ if (result.inode == Inode::FromDeviceAndInode(maybe_stat->st_dev, maybe_stat->st_ino)) {
+ return result;
+ } else {
+ LOG(WARNING)
+ << "EmitAllFilenames#verified fail out-of-date inode: " << result;
+ return InodeResult::makeFailure(result.inode, InodeResult::kVerificationFailed);
+ }
+ } else {
+ // Forward stat errors directly, as it could be a missing security rule,
+ // but turn -ENOENT into casual verification errors.
+ const StatError& err = maybe_stat.error();
+ int error_code = err.err_no;
+ if (err.err_no == ENOENT) {
+ error_code = InodeResult::kVerificationFailed;
+
+ // TODO: Don't LOG(WARNING) here because this could be very common if we
+ // access the data much much later after the initial results were read in.
+ LOG(WARNING)
+ << "EmitAllFilenames#verified fail out-of-date filename: " << result;
+ } else {
+ LOG(ERROR)
+ << "EmitAllFilenames#verified stat(2) failure: " << err;
+ }
+
+ return InodeResult::makeFailure(result.inode, error_code);
+ }
+ });
+
+ // TODO: refactor this function some more with the Find(inode_set) equivalent.
+
+ // Now that all mid-stream observables have been connected, turn the Connectable observable
+ // into a regular observable.
+ return verified_inode_results;
+}
+
} // namespace iorap::inode2filename
diff --git a/src/inode2filename/search_directories.h b/src/inode2filename/search_directories.h
index 8156574..0b4af78 100644
--- a/src/inode2filename/search_directories.h
+++ b/src/inode2filename/search_directories.h
@@ -15,52 +15,17 @@
#ifndef IORAP_SRC_INODE2FILENAME_SEARCH_DIRECTORIES_H_
#define IORAP_SRC_INODE2FILENAME_SEARCH_DIRECTORIES_H_
-#include "common/expected.h"
#include "inode2filename/inode.h"
#include "inode2filename/system_call.h"
+#include "inode2filename/inode_resolver.h"
#include <fruit/fruit.h>
#include <rxcpp/rx.hpp>
namespace iorap::inode2filename {
-// Tuple of (Inode -> (Filename|Errno))
-struct InodeResult {
- // We set this error when all root directories have been searched and
- // yet we still could not find a corresponding filename for the inode under search.
- static constexpr int kCouldNotFindFilename = -ENOENT;
-
- Inode inode;
- // Value: Contains the filename (with a root directory as a prefix).
- // Error: Contains the errno, usually -ENOENT or perhaps a security error.
- iorap::expected<std::string /*filename*/, int /*errno*/> data;
-
- static InodeResult makeSuccess(Inode inode, std::string filename) {
- return InodeResult{inode, std::move(filename)};
- }
-
- static InodeResult makeFailure(Inode inode, int err_no) {
- return InodeResult{inode, iorap::unexpected{err_no}};
- }
-
- constexpr operator bool() const {
- return data.has_value();
- }
-};
-
-enum class SearchMode {
- // Test modes:
- kInProcessDirect, // Execute the code directly.
- kInProcessIpc, // Execute code via IPC layer using multiple threads.
- // Shipping mode:
- kOutOfProcessIpc, // Execute code via fork+exec with IPC.
-
- // Note: in-process system-wide stat(2)/readdir/etc is blocked by selinux.
- // Attempting to call the test modes will fail with -EPERM.
- //
- // Use fork+exec mode in shipping configurations, which spawns inode2filename
- // as a separate command.
-};
+// TODO: rename.
+using SearchMode = ProcessMode;
struct SearchDirectories {
// Type-erased subset of rxcpp::connectable_observable<?>
@@ -100,7 +65,7 @@ struct SearchDirectories {
rxcpp::observable<InodeResult>
FindFilenamesFromInodes(std::vector<std::string> root_directories,
std::vector<Inode> inode_list,
- SearchMode mode);
+ SearchMode mode) const;
// Create a cold observable of inode results (a lazy stream) corresponding
// to the inode search list.
@@ -126,7 +91,37 @@ struct SearchDirectories {
std::pair<rxcpp::observable<InodeResult>, std::unique_ptr<RxAnyConnectable>>
FindFilenamesFromInodesPair(std::vector<std::string> root_directories,
std::vector<Inode> inode_list,
- SearchMode mode);
+ SearchMode mode) const;
+
+ // No items on the output stream will be emitted until 'inodes' completes.
+ //
+ // The current algorithm is a naive DFS, so if it began too early it would either
+ // miss the search items or require traversal restarts.
+ //
+ // See above for more details.
+ rxcpp::observable<InodeResult>
+ FindFilenamesFromInodes(std::vector<std::string> root_directories,
+ rxcpp::observable<Inode> inodes,
+ SearchMode mode) const;
+
+ rxcpp::observable<InodeResult>
+ ListAllFilenames(std::vector<std::string> root_directories) const;
+
+ rxcpp::observable<InodeResult> FilterFilenamesForSpecificInodes(
+ // haystack that will be subscribed to until all in inode_list are found.
+ rxcpp::observable<InodeResult> all_inodes,
+ // key list: traverse all_inodes until we emit all results from inode_list.
+ std::vector<Inode> inode_list,
+ // all_inodes have a missing device number: use stat(2) to fill it in.
+ bool missing_device_number,
+ bool needs_verification) const;
+
+ rxcpp::observable<InodeResult> EmitAllFilenames(
+ // haystack that will be subscribed to until all in inode_list are found.
+ rxcpp::observable<InodeResult> all_inodes,
+ // all_inodes have a missing device number: use stat(2) to fill it in.
+ bool missing_device_number,
+ bool needs_verification) const;
// Any borrowed parameters here can also be borrowed by the observables returned by the above
// member functions.
diff --git a/src/iorapd/main.cc b/src/iorapd/main.cc
index ab73fe5..8d806ba 100644
--- a/src/iorapd/main.cc
+++ b/src/iorapd/main.cc
@@ -16,6 +16,8 @@
#include "binder/iiorap_impl.h"
#include "common/debug.h"
+#include "common/loggers.h"
+#include "db/models.h"
#include "manager/event_manager.h"
#include <android-base/logging.h>
@@ -27,27 +29,6 @@
static constexpr const char* kServiceName = iorap::binder::IIorapImpl::getServiceName();
-// Log to both Stderr and Logd for convenience when running this from the command line.
-class StderrAndLogdLogger {
- public:
- explicit StderrAndLogdLogger(android::base::LogId default_log_id = android::base::MAIN)
- : logd_(default_log_id) {
- }
-
- void operator()(::android::base::LogId id,
- ::android::base::LogSeverity sev,
- const char* tag,
- const char* file,
- unsigned int line,
- const char* message) {
- logd_(id, sev, tag, file, line, message);
- StderrLogger(id, sev, tag, file, line, message);
- }
-
- private:
- ::android::base::LogdLogger logd_;
-};
-
int main(int /*argc*/, char** argv) {
if (android::base::GetBoolProperty("iorapd.log.verbose", iorap::kIsDebugBuild)) {
// Show verbose logs if the property is enabled or if we are a debug build.
@@ -55,23 +36,35 @@ int main(int /*argc*/, char** argv) {
}
// Logs go to system logcat.
- android::base::InitLogging(argv, StderrAndLogdLogger{android::base::SYSTEM});
+ android::base::InitLogging(argv, iorap::common::StderrAndLogdLogger{android::base::SYSTEM});
+ LOG(INFO) << kServiceName << " (the prefetchening) firing up";
{
- android::ScopedTrace trace_main{ATRACE_TAG_PACKAGE_MANAGER, "main"};
- LOG(INFO) << kServiceName << " (the prefetchening) firing up";
+ android::ScopedTrace trace_db_init{ATRACE_TAG_ACTIVITY_MANAGER, "IorapNativeService::db_init"};
+ iorap::db::SchemaModel db_schema =
+ iorap::db::SchemaModel::GetOrCreate(
+ android::base::GetProperty("iorapd.db.location",
+ "/data/misc/iorapd/sqlite.db"));
+ db_schema.MarkSingleton();
+ }
- android::ScopedTrace trace_start{ATRACE_TAG_PACKAGE_MANAGER, "IorapNativeService::start"};
+ std::shared_ptr<iorap::manager::EventManager> event_manager;
+ {
+ android::ScopedTrace trace_start{ATRACE_TAG_ACTIVITY_MANAGER, "IorapNativeService::start"};
// TODO: use fruit for this DI.
- auto /*std::shared_ptr<EventManager>*/ event_manager =
+ event_manager =
iorap::manager::EventManager::Create();
- if (!iorap::binder::IIorapImpl::Start(std::move(event_manager))) {
+ if (!iorap::binder::IIorapImpl::Start(event_manager)) {
LOG(ERROR) << "Unable to start IorapNativeService";
exit(1);
}
}
+ // This must be logged after all other initialization has finished.
+ LOG(INFO) << kServiceName << " (the prefetchening) readied up";
+
+ event_manager->Join(); // TODO: shutdown somewhere?
// Block until something else shuts down the binder service.
android::IPCThreadState::self()->joinThreadPool();
LOG(INFO) << kServiceName << " shutting down";
diff --git a/src/maintenance/controller.cc b/src/maintenance/controller.cc
new file mode 100644
index 0000000..daaf08f
--- /dev/null
+++ b/src/maintenance/controller.cc
@@ -0,0 +1,620 @@
+// Copyright (C) 2019 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
+//
+// http://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 "compiler/compiler.h"
+#include "maintenance/controller.h"
+
+#include "common/cmd_utils.h"
+#include "common/debug.h"
+#include "common/expected.h"
+#include "common/trace.h"
+
+#include "db/models.h"
+#include "inode2filename/inode.h"
+#include "inode2filename/search_directories.h"
+#include "prefetcher/read_ahead.h"
+
+#include <android-base/file.h>
+#include <utils/Printer.h>
+
+#include <chrono>
+#include <ctime>
+#include <iostream>
+#include <filesystem>
+#include <fstream>
+#include <limits>
+#include <mutex>
+#include <optional>
+#include <vector>
+#include <string>
+#include <sys/wait.h>
+
+namespace iorap::maintenance {
+
+const constexpr int64_t kCompilerCheckIntervalMs = 10;
+static constexpr size_t kMinTracesForCompilation = 1;
+
+struct LastJobInfo {
+ time_t last_run_ns_{0};
+ size_t activities_last_compiled_{0};
+};
+
+LastJobInfo last_job_info_;
+std::mutex last_job_info_mutex_;
+
+// Gets the path of output compiled trace.
+db::CompiledTraceFileModel CalculateNewestFilePath(
+ const std::string& package_name,
+ const std::string& activity_name,
+ int version) {
+ db::VersionedComponentName versioned_component_name{
+ package_name, activity_name, version};
+
+ db::CompiledTraceFileModel output_file =
+ db::CompiledTraceFileModel::CalculateNewestFilePath(versioned_component_name);
+
+ return output_file;
+}
+
+using ArgString = const char*;
+
+static constexpr const char kCommandFileName[] = "/system/bin/iorap.cmd.compiler";
+
+int Exec::Execve(const std::string& pathname,
+ std::vector<std::string>& argv_vec,
+ char *const envp[]) {
+ std::unique_ptr<ArgString[]> argv_ptr =
+ common::VecToArgv(kCommandFileName, argv_vec);
+
+ return execve(pathname.c_str(), (char**)argv_ptr.get(), envp);
+}
+
+pid_t Exec::Fork() {
+ return fork();
+}
+
+// Represents the parameters used when fork+exec compiler.
+struct CompilerForkParameters {
+ std::vector<std::string> input_pbs;
+ std::vector<uint64_t> timestamp_limit_ns;
+ std::string output_proto;
+ ControllerParameters controller_params;
+
+ CompilerForkParameters(const std::vector<compiler::CompilationInput>& perfetto_traces,
+ const std::string& output_proto,
+ ControllerParameters controller_params) :
+ output_proto(output_proto), controller_params(controller_params) {
+ for (compiler::CompilationInput perfetto_trace : perfetto_traces) {
+ input_pbs.push_back(perfetto_trace.filename);
+ timestamp_limit_ns.push_back(perfetto_trace.timestamp_limit_ns);
+ }
+ }
+};
+
+std::vector<std::string> MakeCompilerParams(const CompilerForkParameters& params) {
+ std::vector<std::string> argv;
+ ControllerParameters controller_params = params.controller_params;
+
+ common::AppendArgsRepeatedly(argv, params.input_pbs);
+ common::AppendArgsRepeatedly(argv, "--timestamp_limit_ns", params.timestamp_limit_ns);
+
+ if (controller_params.output_text) {
+ argv.push_back("--output-text");
+ }
+
+ common::AppendArgs(argv, "--output-proto", params.output_proto);
+
+ if (controller_params.inode_textcache) {
+ common::AppendArgs(argv, "--inode-textcache", *controller_params.inode_textcache);
+ }
+
+ if (controller_params.verbose) {
+ argv.push_back("--verbose");
+ }
+
+ return argv;
+}
+
+// Sets a watch dog for the given pid and kill it if timeout.
+std::thread SetTimeoutWatchDog(pid_t pid, int64_t timeout_ms, std::atomic<bool>& cancel_watchdog) {
+ std::thread watchdog_thread{[pid, timeout_ms, &cancel_watchdog]() {
+ std::chrono::time_point start = std::chrono::system_clock::now();
+ std::chrono::milliseconds timeout(timeout_ms);
+ while (!cancel_watchdog) {
+ int status = kill(pid, 0);
+ if (status != 0) {
+ LOG(DEBUG) << "Process (" << pid << ") doesn't exist now.";
+ break;
+ }
+ std::chrono::time_point cur = std::chrono::system_clock::now();
+ if (cur - start > timeout) {
+ LOG(INFO) << "Process (" << pid << ") is timeout!";
+ LOG(INFO) << "start time: "
+ << std::chrono::system_clock::to_time_t(start)
+ << " end time: "
+ << std::chrono::system_clock::to_time_t(cur)
+ << " timeout: "
+ << timeout_ms;
+ kill(pid, SIGKILL);
+ break;
+ }
+ usleep(kCompilerCheckIntervalMs * 1000);
+ }
+ }};
+
+ return watchdog_thread;
+}
+
+bool StartViaFork(const CompilerForkParameters& params) {
+ const ControllerParameters& controller_params = params.controller_params;
+ pid_t child = controller_params.exec->Fork();
+
+ if (child == -1) {
+ LOG(FATAL) << "Failed to fork a process for compilation";
+ } else if (child > 0) { // we are the caller of this function
+ LOG(DEBUG) << "forked into a process for compilation , pid = " << child;
+
+ int64_t compiler_timeout_ms =
+ android::base::GetIntProperty("iorapd.maintenance.compiler_timeout_ms",
+ /*default*/ 10 * 60 * 1000); // 10 min
+ std::atomic<bool> cancel_watchdog(false);
+ std::thread watchdog_thread = SetTimeoutWatchDog(child, compiler_timeout_ms, cancel_watchdog);
+ int wstatus;
+ waitpid(child, /*out*/&wstatus, /*options*/0);
+
+ // Terminate the thread after the compiler process is killed or done.
+ LOG(DEBUG) << "Terminate the watch dog thread.";
+ cancel_watchdog = true;
+ watchdog_thread.join();
+
+ if (!WIFEXITED(wstatus)) {
+ LOG(ERROR) << "Child terminated abnormally, status: " << WEXITSTATUS(wstatus);
+ return false;
+ }
+
+ int status = WEXITSTATUS(wstatus);
+ LOG(DEBUG) << "Child terminated, status: " << status;
+ if (status == 0) {
+ LOG(DEBUG) << "Iorap compilation succeeded";
+ return true;
+ } else {
+ LOG(ERROR) << "Iorap compilation failed";
+ return false;
+ }
+ } else {
+ // we are the child that was forked.
+ std::vector<std::string> argv_vec = MakeCompilerParams(params);
+ std::unique_ptr<ArgString[]> argv_ptr =
+ common::VecToArgv(kCommandFileName, argv_vec);
+
+ std::stringstream argv; // for debugging.
+ for (std::string arg : argv_vec) {
+ argv << arg << ' ';
+ }
+ LOG(DEBUG) << "fork+exec: " << kCommandFileName << " " << argv.str();
+
+ controller_params.exec->Execve(kCommandFileName,
+ argv_vec,
+ /*envp*/nullptr);
+ // This should never return.
+ }
+ return false;
+}
+
+// Gets the perfetto trace infos in the histories.
+std::vector<compiler::CompilationInput> GetPerfettoTraceInfo(
+ const db::DbHandle& db,
+ const std::vector<db::AppLaunchHistoryModel>& histories) {
+ std::vector<compiler::CompilationInput> perfetto_traces;
+
+ for(db::AppLaunchHistoryModel history : histories) {
+ // Get perfetto trace.
+ std::optional<db::RawTraceModel> raw_trace =
+ db::RawTraceModel::SelectByHistoryId(db, history.id);
+ if (!raw_trace) {
+ // This is normal: non-cold launches do not have traces.
+ continue;
+ }
+
+ uint64_t timestamp_limit = std::numeric_limits<uint64_t>::max();
+ // Get corresponding timestamp limit.
+ if (history.report_fully_drawn_ns) {
+ timestamp_limit = *history.report_fully_drawn_ns;
+ } else if (history.total_time_ns) {
+ timestamp_limit = *history.total_time_ns;
+ } else {
+ LOG(DEBUG) << " No timestamp exists. Using the max value.";
+ }
+ perfetto_traces.push_back({raw_trace->file_path, timestamp_limit});
+ }
+ return perfetto_traces;
+}
+
+// Helper struct for printing vector.
+template <class T>
+struct VectorPrinter {
+ std::vector<T>& values;
+};
+
+std::ostream& operator<<(std::ostream& os,
+ const struct compiler::CompilationInput& perfetto_trace) {
+ os << "file_path: " << perfetto_trace.filename << " "
+ << "timestamp_limit: " << perfetto_trace.timestamp_limit_ns;
+ return os;
+}
+
+template <class T>
+std::ostream& operator<<(std::ostream& os, const struct VectorPrinter<T>& printer) {
+ os << "[\n";
+ for (T i : printer.values) {
+ os << i << ",\n";
+ }
+ os << "]\n";
+ return os;
+}
+
+// Compiled the perfetto traces for an activity.
+bool CompileActivity(const db::DbHandle& db,
+ int package_id,
+ const std::string& package_name,
+ const std::string& activity_name,
+ int version,
+ const ControllerParameters& params) {
+ ScopedFormatTrace atrace_compile_package(ATRACE_TAG_PACKAGE_MANAGER,
+ "Compile activity %s",
+ activity_name.c_str());
+
+ LOG(DEBUG) << "CompileActivity: " << package_name << "/" << activity_name << "@" << version;
+
+ db::CompiledTraceFileModel output_file =
+ CalculateNewestFilePath(package_name, activity_name, version);
+
+ std::string file_path = output_file.FilePath();
+
+ if (!params.recompile) {
+ if (std::filesystem::exists(file_path)) {
+ LOG(DEBUG) << "compiled trace exists in " << file_path;
+
+ db::VersionedComponentName vcn{package_name, activity_name, version};
+ std::optional<db::PrefetchFileModel> prefetch_file =
+ db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn);
+ if (prefetch_file) {
+ return true;
+ } else {
+ LOG(WARNING) << "Missing corresponding prefetch_file db row for " << vcn;
+ // let it go and compile again. we'll insert the prefetch_file at the bottom.
+ }
+ }
+ }
+
+ std::optional<db::ActivityModel> activity =
+ db::ActivityModel::SelectByNameAndPackageId(db, activity_name.c_str(), package_id);
+ if (!activity) {
+ LOG(ERROR) << "Cannot find activity for package_id: " << package_id
+ <<" activity_name: " <<activity_name;
+ return false;
+ }
+
+ int activity_id = activity->id;
+
+ std::vector<db::AppLaunchHistoryModel> histories =
+ db::AppLaunchHistoryModel::SelectActivityHistoryForCompile(db, activity_id);
+
+ {
+ std::vector<compiler::CompilationInput> perfetto_traces =
+ GetPerfettoTraceInfo(db, histories);
+
+ if (perfetto_traces.size() < params.min_traces) {
+ LOG(DEBUG) << "The number of perfetto traces is " << perfetto_traces.size()
+ <<", which is less than " << params.min_traces;
+ return false;
+ }
+
+ {
+ std::lock_guard<std::mutex> last_job_info_guard{last_job_info_mutex_};
+ last_job_info_.activities_last_compiled_++;
+ }
+
+ // Show the compilation config.
+ LOG(DEBUG) << "Try to compiled package_id: " << package_id
+ << " package_name: " << package_name
+ << " activity_name: " << activity_name
+ << " version: " << version
+ << " file_path: " << file_path
+ << " verbose: " << params.verbose
+ << " perfetto_traces: "
+ << VectorPrinter<compiler::CompilationInput>{perfetto_traces};
+ if (params.inode_textcache) {
+ LOG(DEBUG) << "inode_textcache: " << *params.inode_textcache;
+ }
+
+ CompilerForkParameters compiler_params{perfetto_traces, file_path, params};
+
+ if (!output_file.MkdirWithParents()) {
+ LOG(ERROR) << "Compile activity failed. Failed to mkdirs " << file_path;
+ return false;
+ }
+
+ ScopedFormatTrace atrace_compile_fork(ATRACE_TAG_PACKAGE_MANAGER,
+ "Fork+exec iorap.cmd.compiler",
+ activity_name.c_str());
+ if (!StartViaFork(compiler_params)) {
+ LOG(ERROR) << "Compilation failed for package_id:" << package_id
+ << " activity_name: " << activity_name;
+ return false;
+ }
+ }
+
+ std::optional<db::PrefetchFileModel> compiled_trace =
+ db::PrefetchFileModel::Insert(db, activity_id, file_path);
+ if (!compiled_trace) {
+ LOG(ERROR) << "Cannot insert compiled trace activity_id: " << activity_id
+ << " file_path: " << file_path;
+ return false;
+ }
+ return true;
+}
+
+// Compiled the perfetto traces for activities in an package.
+bool CompilePackage(const db::DbHandle& db,
+ const std::string& package_name,
+ int version,
+ const ControllerParameters& params) {
+ ScopedFormatTrace atrace_compile_package(ATRACE_TAG_PACKAGE_MANAGER,
+ "Compile package %s",
+ package_name.c_str());
+
+ std::optional<db::PackageModel> package =
+ db::PackageModel::SelectByNameAndVersion(db, package_name.c_str(), version);
+
+ if (!package) {
+ LOG(ERROR) << "Cannot find package for package_name: "
+ << package_name
+ << " and version "
+ << version;
+ return false;
+ }
+
+ std::vector<db::ActivityModel> activities =
+ db::ActivityModel::SelectByPackageId(db, package->id);
+
+ bool ret = true;
+ for (db::ActivityModel activity : activities) {
+ if (!CompileActivity(db, package->id, package->name, activity.name, version, params)) {
+ ret = false;
+ }
+ }
+ return ret;
+}
+
+// Compiled the perfetto traces for packages in a device.
+bool CompileAppsOnDevice(const db::DbHandle& db, const ControllerParameters& params) {
+ {
+ std::lock_guard<std::mutex> last_job_info_guard{last_job_info_mutex_};
+ last_job_info_.activities_last_compiled_ = 0;
+ }
+
+ std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db);
+ bool ret = true;
+ for (db::PackageModel package : packages) {
+ if (!CompilePackage(db, package.name, package.version, params)) {
+ ret = false;
+ }
+ }
+
+ {
+ std::lock_guard<std::mutex> last_job_info_guard{last_job_info_mutex_};
+ last_job_info_.last_run_ns_ = time(nullptr);
+ }
+
+ return ret;
+}
+
+// Compiled the perfetto traces for a single package in a device.
+bool CompileSingleAppOnDevice(const db::DbHandle& db,
+ const ControllerParameters& params,
+ const std::string& package_name) {
+ std::vector<db::PackageModel> packages = db::PackageModel::SelectByName(db, package_name.c_str());
+ bool ret = true;
+ for (db::PackageModel package : packages) {
+ if (!CompilePackage(db, package.name, package.version, params)) {
+ ret = false;
+ }
+ }
+
+ return ret;
+}
+
+bool Compile(const std::string& db_path, const ControllerParameters& params) {
+ iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path);
+ db::DbHandle db{db_schema.db()};
+ return CompileAppsOnDevice(db, params);
+}
+
+bool Compile(const std::string& db_path,
+ const std::string& package_name,
+ int version,
+ const ControllerParameters& params) {
+ iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path);
+ db::DbHandle db{db_schema.db()};
+ return CompilePackage(db, package_name, version, params);
+}
+
+bool Compile(const std::string& db_path,
+ const std::string& package_name,
+ const std::string& activity_name,
+ int version,
+ const ControllerParameters& params) {
+ iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path);
+ db::DbHandle db{db_schema.db()};
+
+ std::optional<db::PackageModel> package =
+ db::PackageModel::SelectByNameAndVersion(db, package_name.c_str(), version);
+
+ if (!package) {
+ LOG(ERROR) << "Cannot find package with name "
+ << package_name
+ << " and version "
+ << version;
+ return false;
+ }
+ return CompileActivity(db, package->id, package_name, activity_name, version, params);
+}
+
+static std::string TimeToString(time_t the_time) {
+ tm tm_buf{};
+ tm* tm_ptr = localtime_r(&the_time, &tm_buf);
+
+ if (tm_ptr != nullptr) {
+ char time_buffer[256];
+ strftime(time_buffer, sizeof(time_buffer), "%a %b %d %H:%M:%S %Y", tm_ptr);
+ return std::string{time_buffer};
+ } else {
+ return std::string{"(nullptr)"};
+ }
+}
+
+static std::string GetTimestampForPrefetchFile(const db::PrefetchFileModel& prefetch_file) {
+ std::filesystem::path path{prefetch_file.file_path};
+
+ std::error_code ec{};
+ auto last_write_time = std::filesystem::last_write_time(path, /*out*/ec);
+ if (ec) {
+ return std::string("Failed to get last write time: ") + ec.message();
+ }
+
+ time_t time = decltype(last_write_time)::clock::to_time_t(last_write_time);
+
+ std::string time_str = TimeToString(time);
+ return time_str;
+}
+
+void DumpPackageActivity(const db::DbHandle& db,
+ ::android::Printer& printer,
+ const db::PackageModel& package,
+ const db::ActivityModel& activity) {
+ int package_id = package.id;
+ const std::string& package_name = package.name;
+ int package_version = package.version;
+ const std::string& activity_name = activity.name;
+ db::VersionedComponentName vcn{package_name, activity_name, package_version};
+
+ // com.google.Settings/com.google.Settings.ActivityMain@1234567890
+ printer.printFormatLine(" %s/%s@%d",
+ package_name.c_str(),
+ activity_name.c_str(),
+ package_version);
+
+ std::optional<db::PrefetchFileModel> prefetch_file =
+ db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn);
+
+ std::vector<db::AppLaunchHistoryModel> histories =
+ db::AppLaunchHistoryModel::SelectActivityHistoryForCompile(db, activity.id);
+ std::vector<compiler::CompilationInput> perfetto_traces =
+ GetPerfettoTraceInfo(db, histories);
+
+ if (prefetch_file) {
+ bool exists_on_disk = std::filesystem::exists(prefetch_file->file_path);
+
+ std::optional<size_t> prefetch_byte_sum =
+ prefetcher::ReadAhead::PrefetchSizeInBytes(prefetch_file->file_path);
+
+ if (exists_on_disk) {
+ printer.printFormatLine(" Compiled Status: Usable compiled trace");
+ } else {
+ printer.printFormatLine(" Compiled Status: Prefetch file deleted from disk.");
+ }
+
+ if (prefetch_byte_sum) {
+ printer.printFormatLine(" Bytes to be prefetched: %zu", *prefetch_byte_sum);
+ } else {
+ printer.printFormatLine(" Bytes to be prefetched: (bad file path)" );
+ }
+
+ printer.printFormatLine(" Time compiled: %s",
+ GetTimestampForPrefetchFile(*prefetch_file).c_str());
+ printer.printFormatLine(" %s", prefetch_file->file_path.c_str());
+ } else {
+ size_t size = perfetto_traces.size();
+
+ if (size >= kMinTracesForCompilation) {
+ printer.printFormatLine(" Compiled Status: Raw traces pending compilation (%zu)",
+ perfetto_traces.size());
+ } else {
+ size_t remaining = kMinTracesForCompilation - size;
+ printer.printFormatLine(" Compiled Status: Need %zu more traces for compilation",
+ remaining);
+ }
+ }
+
+ printer.printFormatLine(" Raw traces:");
+ printer.printFormatLine(" Trace count: %zu", perfetto_traces.size());
+
+ for (compiler::CompilationInput& compilation_input : perfetto_traces) {
+ std::string& raw_trace_file_name = compilation_input.filename;
+
+ printer.printFormatLine(" %s", raw_trace_file_name.c_str());
+ }
+}
+
+void DumpPackage(const db::DbHandle& db,
+ ::android::Printer& printer,
+ db::PackageModel package) {
+ std::vector<db::ActivityModel> activities =
+ db::ActivityModel::SelectByPackageId(db, package.id);
+
+ for (db::ActivityModel& activity : activities) {
+ DumpPackageActivity(db, printer, package, activity);
+ }
+}
+
+void DumpAllPackages(const db::DbHandle& db, ::android::Printer& printer) {
+ printer.printLine("Package history in database:");
+
+ std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db);
+ for (db::PackageModel package : packages) {
+ DumpPackage(db, printer, package);
+ }
+
+ printer.printLine("");
+}
+
+void Dump(const db::DbHandle& db, ::android::Printer& printer) {
+ bool locked = last_job_info_mutex_.try_lock();
+
+ LastJobInfo info = last_job_info_;
+
+ printer.printFormatLine("Background job:");
+ if (!locked) {
+ printer.printLine(""""" (possible deadlock)");
+ }
+ if (info.last_run_ns_ != time_t{0}) {
+ std::string time_str = TimeToString(info.last_run_ns_);
+
+ printer.printFormatLine(" Last run at: %s", time_str.c_str());
+ } else {
+ printer.printFormatLine(" Last run at: (None)");
+ }
+ printer.printFormatLine(" Activities last compiled: %zu", info.activities_last_compiled_);
+
+ printer.printLine("");
+
+ if (locked) {
+ last_job_info_mutex_.unlock();
+ }
+
+ DumpAllPackages(db, printer);
+}
+
+} // namespace iorap::maintenance
diff --git a/src/maintenance/controller.h b/src/maintenance/controller.h
new file mode 100644
index 0000000..dbe6df9
--- /dev/null
+++ b/src/maintenance/controller.h
@@ -0,0 +1,113 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_MAINTENANCE_COMPILER_CONTROLLER_H_
+#define IORAP_SRC_MAINTENANCE_COMPILER_CONTROLLER_H_
+
+#include "db/file_models.h"
+#include "inode2filename/inode_resolver.h"
+
+#include <string>
+#include <vector>
+
+namespace android {
+class Printer;
+} // namespace android
+
+namespace iorap::maintenance {
+
+// Enabling mock for testing purpose.
+class IExec {
+ public:
+ virtual int Execve(const std::string& pathname,
+ std::vector<std::string>& argv_vec,
+ char *const envp[]) = 0;
+ virtual int Fork() = 0;
+ virtual ~IExec() = default;
+};
+
+class Exec : public IExec {
+ public:
+ virtual int Execve(const std::string& pathname,
+ std::vector<std::string>& argv_vec,
+ char *const envp[]);
+ virtual int Fork();
+};
+
+// Represents the parameters used for compilation controller.
+struct ControllerParameters {
+ bool output_text;
+ // The path of inode2filepath file.
+ std::optional<std::string> inode_textcache;
+ bool verbose;
+ bool recompile;
+ uint64_t min_traces;
+ std::shared_ptr<IExec> exec;
+
+ ControllerParameters(bool output_text,
+ std::optional<std::string> inode_textcache,
+ bool verbose,
+ bool recompile,
+ uint64_t min_traces,
+ std::shared_ptr<IExec> exec) :
+ output_text(output_text),
+ inode_textcache(inode_textcache),
+ verbose(verbose),
+ recompile(recompile),
+ min_traces(min_traces),
+ exec(exec) {
+ }
+};
+
+// Control the compilation of perfetto traces in the sqlite db.
+//
+// The strategy now is to compile all the existing perfetto traces for an activity
+// and skip ones if the number of perfetto traces is less than the min_traces.
+//
+// By default, the program doesn't replace the existing compiled trace, it just
+// return true. To force replace the existing compiled trace, set `force` to true.
+//
+// The timestamp limit of the each perfetto trace is determined by `report_fully_drawn_ns`
+// timestamp. If it doesn't exists, use `total_time_ns`. If neither of them exists,
+// use the max.
+
+// Compile all activities of all packages in the database.
+bool Compile(const std::string& db_path, const ControllerParameters& params);
+
+// Compile all activities in the package.
+// If the version is not given, an arbitrary package that has the same name is used.
+bool Compile(const std::string& db_path,
+ const std::string& package_name,
+ int version,
+ const ControllerParameters& params);
+
+// Compile trace for the activity.
+// If the version is not given, an arbitrary package has the same name is used.
+bool Compile(const std::string& db_path,
+ const std::string& package_name,
+ const std::string& activity_name,
+ int version,
+ const ControllerParameters& params);
+// Visible for testing.
+bool CompileAppsOnDevice(const db::DbHandle& db, const ControllerParameters& params);
+
+bool CompileSingleAppOnDevice(const db::DbHandle& db,
+ const ControllerParameters& params,
+ const std::string& package_name);
+
+void Dump(const db::DbHandle& db, ::android::Printer& printer);
+
+} // iorap::maintenance
+
+#endif // IORAP_SRC_MAINTENANCE_COMPILER_CONTROLLER_H_
diff --git a/src/maintenance/db_cleaner.cc b/src/maintenance/db_cleaner.cc
new file mode 100644
index 0000000..56eff70
--- /dev/null
+++ b/src/maintenance/db_cleaner.cc
@@ -0,0 +1,66 @@
+// Copyright (C) 2020 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
+//
+// http://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 "maintenance/db_cleaner.h"
+
+#include <android-base/file.h>
+
+#include <cstdio>
+#include <filesystem>
+#include <fstream>
+#include <iostream>
+#include <limits>
+#include <optional>
+#include <string>
+#include <vector>
+
+#include "db/clean_up.h"
+#include "db/file_models.h"
+#include "db/models.h"
+
+namespace iorap::maintenance {
+
+// Enable foreign key restriction.
+const constexpr char* kForeignKeyOnSql = "PRAGMA foreign_keys = ON;";
+
+void CleanUpDatabase(const db::DbHandle& db,
+ std::shared_ptr<binder::PackageVersionMap> version_map) {
+ std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db);
+ // Enable cascade deletion.
+ if (!db::DbQueryBuilder::ExecuteOnce(db, kForeignKeyOnSql)) {
+ LOG(ERROR) << "Fail to turn on foreign key restraint!";
+ }
+
+ for (db::PackageModel package : packages) {
+ std::optional<int64_t> version = version_map->Find(package.name);
+ if (!version) {
+ LOG(DEBUG) << "Fail to find version for package " << package.name
+ << " with version " << package.version
+ << ". The package manager may be down.";
+ continue;
+ }
+ // Package is cleanup if it
+ // * is not in the version map, it may be uninstalled
+ // * has an different version with the latest one
+ if (*version != package.version) {
+ db::CleanUpFilesForPackage(db, package.id, package.name, package.version);
+ if (!package.Delete()) {
+ LOG(ERROR) << "Fail to delete package " << package.name
+ << " with version " << package.version;
+ }
+ }
+ }
+}
+
+} // namespace iorap::maintenance
diff --git a/src/maintenance/db_cleaner.h b/src/maintenance/db_cleaner.h
new file mode 100644
index 0000000..1168bd5
--- /dev/null
+++ b/src/maintenance/db_cleaner.h
@@ -0,0 +1,34 @@
+// Copyright (C) 2020 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
+//
+// http://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.
+
+#ifndef IORAP_SRC_MAINTENANCE_VERSION_UPDATE_H_
+#define IORAP_SRC_MAINTENANCE_VERSION_UPDATE_H_
+
+#include <android/content/pm/IPackageManagerNative.h>
+
+#include <string>
+#include <vector>
+
+#include "binder/package_version_map.h"
+#include "db/file_models.h"
+
+namespace iorap::maintenance {
+
+// Clean up the database.
+// Remove all relevant data for old-version packages.
+void CleanUpDatabase(const db::DbHandle& db,
+ std::shared_ptr<binder::PackageVersionMap> version_map);
+} // namespace iorap::maintenance
+
+#endif // IORAP_SRC_MAINTENANCE_VERSION_UPDATE_H_
diff --git a/src/maintenance/main.cc b/src/maintenance/main.cc
new file mode 100644
index 0000000..16b2a35
--- /dev/null
+++ b/src/maintenance/main.cc
@@ -0,0 +1,194 @@
+// Copyright (C) 2019 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
+//
+// http://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 "common/debug.h"
+#include "compiler/compiler.h"
+#include "maintenance/controller.h"
+#include "db/clean_up.h"
+
+#include <android-base/parseint.h>
+#include <android-base/properties.h>
+#include <android-base/logging.h>
+
+#include <iostream>
+#include <optional>
+
+#if defined(IORAP_MAINTENANCE_MAIN)
+
+namespace iorap::maintenance {
+
+void Usage(char** argv) {
+ std::cerr << "Usage: " << argv[0] << " <path of sqlite db>" << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Compile the perfetto trace for an package and activity." << std::endl;
+ std::cerr << " The info of perfetto trace is stored in the sqlite db." << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Optional flags:" << std::endl;
+ std::cerr << " --package $,-p $ Package name." << std::endl;
+ std::cerr << " --version $,-ve $ Package version." << std::endl;
+ std::cerr << " --activity $,-a $ Activity name." << std::endl;
+ std::cerr << " --inode-textcache $,-it $ Resolve inode->filename from textcache." << std::endl;
+ std::cerr << " --help,-h Print this Usage." << std::endl;
+ std::cerr << " --recompile,-r Force re-compilation, which replace the existing compiled trace ." << std::endl;
+ std::cerr << " --purge-package,-pp Purge all files associated with a package." << std::endl;
+ std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl;
+ std::cerr << " --output-text,-ot Output ascii text instead of protobuf (default off)." << std::endl;
+ std::cerr << " --min_traces,-mt The min number of perfetto traces needed for compilation (default 1)."
+ << std::endl;
+ exit(1);
+}
+
+
+int Main(int argc, char** argv){
+ android::base::InitLogging(argv);
+ android::base::SetLogger(android::base::StderrLogger);
+
+ if (argc == 1) {
+ // Need at least 1 input file to do anything.
+ Usage(argv);
+ }
+
+ std::vector<std::string> arg_input_filenames;
+ std::optional<std::string> arg_package;
+ std::optional<std::string> arg_purge_package;
+ int arg_version = -1;
+ std::optional<std::string> arg_activity;
+ std::optional<std::string> arg_inode_textcache;
+ bool recompile = false;
+ bool enable_verbose = false;
+ bool arg_output_text = false;
+ uint64_t arg_min_traces = 1;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+ bool has_arg_next = (arg+1)<argc;
+ std::string arg_next = has_arg_next ? argv[arg+1] : "";
+
+ if (argstr == "--help" || argstr == "-h") {
+ Usage(argv);
+ } else if (argstr == "--package" || argstr == "-p") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --package <value>" << std::endl;
+ return 1;
+ }
+ arg_package = arg_next;
+ ++arg;
+ } else if (argstr == "--version" || argstr == "-ve") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --version <value>" << std::endl;
+ return 1;
+ }
+ int version;
+ if (!android::base::ParseInt<int>(arg_next, &version)) {
+ std::cerr << "Invalid --version " << arg_next << std::endl;
+ return 1;
+ }
+ arg_version = version;
+ ++arg;
+ } else if (argstr == "--activity" || argstr == "-a") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --activity <value>" << std::endl;
+ return 1;
+ }
+ arg_activity = arg_next;
+ ++arg;
+ } else if (argstr == "--inode-textcache" || argstr == "-it") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --inode-textcache <value>" << std::endl;
+ return 1;
+ }
+ arg_inode_textcache = arg_next;
+ ++arg;
+ } else if (argstr == "--purge-package" || argstr == "-pp") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --purge-package <value>" << std::endl;
+ return 1;
+ }
+ arg_purge_package = arg_next;
+ ++arg;
+ }
+ else if (argstr == "--verbose" || argstr == "-v") {
+ enable_verbose = true;
+ } else if (argstr == "--recompile" || argstr == "-r") {
+ recompile = true;
+ } else if (argstr == "--output-text" || argstr == "-ot") {
+ arg_output_text = true;
+ } else if (argstr == "--min_traces" || argstr == "-mt") {
+ if (!has_arg_next) {
+ std::cerr << "Missing --min_traces <value>" << std::endl;
+ return 1;
+ }
+ arg_min_traces = std::stoul(arg_next);
+ ++arg;
+ } else {
+ arg_input_filenames.push_back(argstr);
+ }
+ }
+
+ if (arg_input_filenames.empty()) {
+ LOG(ERROR) << "Missing filename to a sqlite database.";
+ Usage(argv);
+ } else if (arg_input_filenames.size() > 1) {
+ LOG(ERROR) << "More than one filename to a sqlite database.";
+ Usage(argv);
+ }
+
+ std::string db_path = arg_input_filenames[0];
+
+ if (enable_verbose) {
+ android::base::SetMinimumLogSeverity(android::base::VERBOSE);
+
+ LOG(VERBOSE) << "Verbose check";
+ LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild;
+ } else {
+ android::base::SetMinimumLogSeverity(android::base::DEBUG);
+ }
+
+ if (arg_purge_package) {
+ db::CleanUpFilesForPackage(db_path, *arg_purge_package);
+ return 0;
+ // Don't do any more work because SchemaModel can only be created once.
+ }
+
+ maintenance::ControllerParameters params{
+ arg_output_text,
+ arg_inode_textcache,
+ enable_verbose,
+ recompile,
+ arg_min_traces,
+ std::make_shared<Exec>()};
+
+ int ret_code = 0;
+ if (arg_package && arg_activity) {
+ ret_code = !Compile(std::move(db_path),
+ std::move(*arg_package),
+ std::move(*arg_activity),
+ arg_version,
+ params);
+ } else if (arg_package) {
+ ret_code = !Compile(std::move(db_path), std::move(*arg_package), arg_version, params);
+ } else {
+ ret_code = !Compile(std::move(db_path), params);
+ }
+ return ret_code;
+}
+
+} // iorap::maintenance
+
+int main(int argc, char** argv) {
+ return ::iorap::maintenance::Main(argc, argv);
+}
+
+
+#endif // IORAP_MAINTENANCE_MAIN
diff --git a/src/manager/event_manager.cc b/src/manager/event_manager.cc
index 3b75b89..bae676b 100644
--- a/src/manager/event_manager.cc
+++ b/src/manager/event_manager.cc
@@ -14,94 +14,94 @@
* limitations under the License.
*/
+#include "binder/package_version_map.h"
#include "common/debug.h"
#include "common/expected.h"
+#include "common/printer.h"
+#include "common/rx_async.h"
+#include "common/trace.h"
+#include "db/app_component_name.h"
+#include "db/file_models.h"
+#include "db/models.h"
+#include "maintenance/controller.h"
+#include "maintenance/db_cleaner.h"
#include "manager/event_manager.h"
#include "perfetto/rx_producer.h"
+#include "prefetcher/read_ahead.h"
+#include "prefetcher/task_id.h"
+#include <android-base/chrono_utils.h>
+#include <android-base/strings.h>
#include <android-base/properties.h>
#include <rxcpp/rx.hpp>
+#include <server_configurable_flags/get_flags.h>
+#include <utils/misc.h>
+#include <utils/Trace.h>
#include <atomic>
+#include <filesystem>
#include <functional>
+#include <type_traits>
+#include <unordered_map>
using rxcpp::observe_on_one_worker;
namespace iorap::manager {
-using binder::RequestId;
using binder::AppLaunchEvent;
+using binder::DexOptEvent;
+using binder::JobScheduledEvent;
+using binder::RequestId;
+using binder::TaskResult;
+
+using common::AsyncPool;
+using common::RxAsync;
+
using perfetto::PerfettoStreamCommand;
using perfetto::PerfettoTraceProto;
-struct AppComponentName {
- std::string package;
- std::string activity_name;
+using db::AppComponentName;
- static bool HasAppComponentName(const std::string& s) {
- return s.find('/') != std::string::npos;
- }
+static std::atomic<bool> s_tracing_allowed{false};
+static std::atomic<bool> s_readahead_allowed{false};
+static std::atomic<uint64_t> s_min_traces{3};
- // "com.foo.bar/.A" -> {"com.foo.bar", ".A"}
- static AppComponentName FromString(const std::string& s) {
- constexpr const char delimiter = '/';
- std::string package = s.substr(0, delimiter);
+struct PackageBlacklister {
+ // "x.y.z;foo.bar.baz" colon-separated list of substrings
+ PackageBlacklister(std::string blacklist_string) {
+ LOG(VERBOSE) << "Configuring package blacklister with string: " << blacklist_string;
- std::string activity_name = s;
- activity_name.erase(0, s.find(delimiter) + sizeof(delimiter));
+ std::vector<std::string> split = ::android::base::Split(blacklist_string, ";");
- return {std::move(package), std::move(activity_name)};
- }
-
- // {"com.foo.bar", ".A"} -> "com.foo.bar/.A"
- std::string ToString() const {
- return package + "/" + activity_name;
+ // Ignore any l/r whitespace or empty strings.
+ for (const std::string& s : split) {
+ std::string t = ::android::base::Trim(s);
+ if (!t.empty()) {
+ LOG(INFO) << "Blacklisted package: " << t << "; will not optimize.";
+ packages_.push_back(t);
+ }
+ }
}
- /*
- * '/' is encoded into %2F
- * '%' is encoded into %25
- *
- * This allows the component name to be be used as a file name
- * ('/' is illegal due to being a path separator) with minimal
- * munging.
- */
+ PackageBlacklister() = default;
- // "com.foo.bar%2F.A%25" -> {"com.foo.bar", ".A%"}
- static AppComponentName FromUrlEncodedString(const std::string& s) {
- std::string cpy = s;
- Replace(cpy, "%2F", "/");
- Replace(cpy, "%25", "%");
+ bool IsBlacklisted(const std::string& package_name) const {
+ return std::find(packages_.begin(), packages_.end(), package_name) != packages_.end();
+ }
- return FromString(cpy);
+ bool IsBlacklisted(const AppComponentName& component_name) const {
+ return IsBlacklisted(component_name.package);
}
- // {"com.foo.bar", ".A%"} -> "com.foo.bar%2F.A%25"
- std::string ToUrlEncodedString() const {
- std::string s = ToString();
- Replace(s, "%", "%25");
- Replace(s, "/", "%2F");
- return s;
+ bool IsBlacklisted(const std::optional<AppComponentName>& component_name) const {
+ return component_name.has_value() && IsBlacklisted(component_name->package);
}
private:
- static bool Replace(std::string& str, const std::string& from, const std::string& to) {
- // TODO: call in a loop to replace all occurrences, not just the first one.
- const size_t start_pos = str.find(from);
- if (start_pos == std::string::npos) {
- return false;
- }
-
- str.replace(start_pos, from.length(), to);
-
- return true;
-}
+ std::vector<std::string> packages_;
};
-std::ostream& operator<<(std::ostream& os, const AppComponentName& name) {
- os << name.ToString();
- return os;
-}
+using PackageVersionMap = std::unordered_map<std::string, int64_t>;
// Main logic of the #OnAppLaunchEvent scan method.
//
@@ -112,26 +112,74 @@ std::ostream& operator<<(std::ostream& os, const AppComponentName& name) {
// of #scan to another.
struct AppLaunchEventState {
std::optional<AppComponentName> component_name_;
-
+ // Sequence ID is shared amongst the same app launch sequence,
+ // but changes whenever a new app launch sequence begins.
+ size_t sequence_id_ = static_cast<size_t>(-1);
+ std::optional<AppLaunchEvent::Temperature> temperature_;
+
+ // Push data to perfetto rx chain for associating
+ // the raw_trace with the history_id.
+ std::optional<rxcpp::subscriber<int>> history_id_subscriber_;
+ rxcpp::observable<int> history_id_observable_;
+
+ std::optional<uint64_t> intent_started_ns_;
+ std::optional<uint64_t> total_time_ns_;
+
+ // Used by kReportFullyDrawn to find the right history_id.
+ // We assume no interleaving between different sequences.
+ // This assumption is checked in the Java service code.
+ std::optional<uint64_t> recent_history_id_;
+
+ // labeled as 'shared' due to rx not being able to handle move-only objects.
+ // lifetime: in practice equivalent to unique_ptr.
+ std::shared_ptr<prefetcher::ReadAhead> read_ahead_;
+ bool allowed_readahead_{true};
+ bool is_read_ahead_{false};
+ std::optional<prefetcher::TaskId> read_ahead_task_;
+
+ bool allowed_tracing_{true};
bool is_tracing_{false};
std::optional<rxcpp::composite_subscription> rx_lifetime_;
std::vector<rxcpp::composite_subscription> rx_in_flight_;
+ PackageBlacklister package_blacklister_{};
+
borrowed<perfetto::RxProducerFactory*> perfetto_factory_; // not null
borrowed<observe_on_one_worker*> thread_; // not null
borrowed<observe_on_one_worker*> io_thread_; // not null
+ borrowed<AsyncPool*> async_pool_; // not null
+
+ std::shared_ptr<binder::PackageVersionMap> version_map_;
explicit AppLaunchEventState(borrowed<perfetto::RxProducerFactory*> perfetto_factory,
+ bool allowed_readahead,
+ bool allowed_tracing,
+ PackageBlacklister package_blacklister,
borrowed<observe_on_one_worker*> thread,
- borrowed<observe_on_one_worker*> io_thread) {
+ borrowed<observe_on_one_worker*> io_thread,
+ borrowed<AsyncPool*> async_pool,
+ std::shared_ptr<binder::PackageVersionMap> version_map)
+ : read_ahead_{std::make_shared<prefetcher::ReadAhead>()}
+ {
perfetto_factory_ = perfetto_factory;
DCHECK(perfetto_factory_ != nullptr);
+ allowed_readahead_ = allowed_readahead;
+ allowed_tracing_ = allowed_tracing;
+
+ package_blacklister_ = package_blacklister;
+
thread_ = thread;
DCHECK(thread_ != nullptr);
io_thread_ = io_thread;
DCHECK(io_thread_ != nullptr);
+
+ async_pool_ = async_pool;
+ DCHECK(async_pool_ != nullptr);
+
+ version_map_ = version_map;
+ DCHECK(version_map_ != nullptr);
}
// Updates the values in this struct only as a side effect.
@@ -141,11 +189,57 @@ struct AppLaunchEventState {
void OnNewEvent(const AppLaunchEvent& event) {
LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent: " << event;
+ android::ScopedTrace trace_db_init{ATRACE_TAG_ACTIVITY_MANAGER,
+ "IorapNativeService::OnAppLaunchEvent"};
+
using Type = AppLaunchEvent::Type;
+ DCHECK_GE(event.sequence_id, 0);
+ sequence_id_ = static_cast<size_t>(event.sequence_id);
+ allowed_readahead_ = s_readahead_allowed;
+ allowed_tracing_ = s_tracing_allowed;
+
switch (event.type) {
case Type::kIntentStarted: {
+ const std::string& package_name = event.intent_proto->component().package_name();
+ const std::string& class_name = event.intent_proto->component().class_name();
+ AppComponentName component_name{package_name, class_name};
+ component_name = component_name.Canonicalize();
+ component_name_ = component_name;
+
+ if (package_blacklister_.IsBlacklisted(component_name)) {
+ LOG(DEBUG) << "kIntentStarted: package " << component_name.package
+ << " ignored due to blacklisting.";
+ break;
+ }
+
+ // Create a new history ID chain for each new app start-up sequence.
+ auto history_id_observable = rxcpp::observable<>::create<int>(
+ [&](rxcpp::subscriber<int> subscriber) {
+ history_id_subscriber_ = std::move(subscriber);
+ LOG(VERBOSE) << " set up the history id subscriber ";
+ })
+ .tap([](int history_id) { LOG(VERBOSE) << " tap rx history id = " << history_id; })
+ .replay(1); // Remember the history id in case we subscribe too late.
+
+ history_id_observable_ = history_id_observable;
+
+ // Immediately turn observable hot, creating the subscriber.
+ history_id_observable.connect();
+
DCHECK(!IsTracing());
+
+ // The time should be set before perfetto tracing.
+ // Record the timestamp even no perfetto tracing is triggered,
+ // because the tracing may start in the following ActivityLaunched
+ // event. Otherwise, there will be no starting timestamp and
+ // trace without starting timestamp is not considered for compilation.
+ if (event.timestamp_nanos >= 0) {
+ intent_started_ns_ = event.timestamp_nanos;
+ } else {
+ LOG(WARNING) << "Negative event timestamp: " << event.timestamp_nanos;
+ }
+
// Optimistically start tracing if we have the activity in the intent.
if (!event.intent_proto->has_component()) {
// Can't do anything if there is no component in the proto.
@@ -153,51 +247,93 @@ struct AppLaunchEventState {
break;
}
- const std::string& package_name = event.intent_proto->component().package_name();
- const std::string& class_name = event.intent_proto->component().class_name();
- AppComponentName component_name{package_name, class_name};
-
- component_name_ = component_name;
- rx_lifetime_ = StartTracing(std::move(component_name));
+ if (allowed_readahead_) {
+ StartReadAhead(sequence_id_, component_name);
+ }
+ if (allowed_tracing_ && !IsReadAhead()) {
+ rx_lifetime_ = StartTracing(std::move(component_name));
+ }
break;
}
case Type::kIntentFailed:
+ if (package_blacklister_.IsBlacklisted(component_name_)) {
+ LOG(VERBOSE) << "kIntentFailed: package " << component_name_->package
+ << " ignored due to blacklisting.";
+ break;
+ }
+
AbortTrace();
+ AbortReadAhead();
+
+ if (history_id_subscriber_) {
+ history_id_subscriber_->on_error(rxcpp::util::make_error_ptr(
+ std::ios_base::failure("Aborting due to intent failed")));
+ history_id_subscriber_ = std::nullopt;
+ }
+
break;
case Type::kActivityLaunched: {
+ const std::string& title = event.activity_record_proto->identifier().title();
+ if (!AppComponentName::HasAppComponentName(title)) {
+ // Proto comment claim this is sometimes a window title.
+ // We need the actual 'package/component' here, so just ignore it if it's a title.
+ LOG(WARNING) << "App launched without a component name: " << event;
+ break;
+ }
+
+ AppComponentName component_name = AppComponentName::FromString(title);
+ component_name = component_name.Canonicalize();
+ component_name_ = component_name;
+
+ if (package_blacklister_.IsBlacklisted(component_name_)) {
+ LOG(VERBOSE) << "kActivityLaunched: package " << component_name_->package
+ << " ignored due to blacklisting.";
+ break;
+ }
+
// Cancel tracing for warm/hot.
// Restart tracing if the activity was unexpected.
AppLaunchEvent::Temperature temperature = event.temperature;
+ temperature_ = temperature;
if (temperature != AppLaunchEvent::Temperature::kCold) {
LOG(DEBUG) << "AppLaunchEventState#OnNewEvent aborting trace due to non-cold temperature";
+
AbortTrace();
- } else if (!IsTracing()) { // and the temperature is Cold.
+ AbortReadAhead();
+ } else if (!IsTracing() && !IsReadAhead()) { // and the temperature is Cold.
// Start late trace when intent didn't have a component name
LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent need to start new trace";
- const std::string& title = event.activity_record_proto->identifier().title();
- if (!AppComponentName::HasAppComponentName(title)) {
- // Proto comment claim this is sometimes a window title.
- // We need the actual 'package/component' here, so just ignore it if it's a title.
- LOG(WARNING) << "App launched without a component name: " << event;
- break;
+ if (allowed_readahead_ && !IsReadAhead()) {
+ StartReadAhead(sequence_id_, component_name);
+ }
+ if (allowed_tracing_ && !IsTracing() && !IsReadAhead()) {
+ rx_lifetime_ = StartTracing(std::move(component_name));
}
-
- AppComponentName component_name = AppComponentName::FromString(title);
-
- component_name_ = component_name;
- rx_lifetime_ = StartTracing(std::move(component_name));
} else {
// FIXME: match actual component name against intent component name.
// abort traces if they don't match.
- LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent already tracing";
+ if (allowed_tracing_) {
+ LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent already tracing";
+ }
+ LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent already doing readahead";
}
break;
}
case Type::kActivityLaunchFinished:
+ if (package_blacklister_.IsBlacklisted(component_name_)) {
+ LOG(VERBOSE) << "kActivityLaunchFinished: package " << component_name_->package
+ << " ignored due to blacklisting.";
+ break;
+ }
+
+ if (event.timestamp_nanos >= 0) {
+ total_time_ns_ = event.timestamp_nanos;
+ }
+ RecordDbLaunchHistory();
// Finish tracing and collect trace buffer.
//
// TODO: this happens automatically when perfetto finishes its
@@ -205,22 +341,138 @@ struct AppLaunchEventState {
if (IsTracing()) {
MarkPendingTrace();
}
+ FinishReadAhead();
break;
case Type::kActivityLaunchCancelled:
+ if (package_blacklister_.IsBlacklisted(component_name_)) {
+ LOG(VERBOSE) << "kActivityLaunchCancelled: package " << component_name_->package
+ << " ignored due to blacklisting.";
+ break;
+ }
+
// Abort tracing.
AbortTrace();
+ AbortReadAhead();
+ break;
+ case Type::kReportFullyDrawn: {
+ if (package_blacklister_.IsBlacklisted(component_name_)) {
+ LOG(VERBOSE) << "kReportFullyDrawn: package " << component_name_->package
+ << " ignored due to blacklisting.";
+ break;
+ }
+
+ if (!recent_history_id_) {
+ LOG(WARNING) << "Dangling kReportFullyDrawn event";
+ return;
+ }
+ UpdateReportFullyDrawn(*recent_history_id_, event.timestamp_nanos);
+ recent_history_id_ = std::nullopt;
break;
+ }
default:
DCHECK(false) << "invalid type: " << event; // binder layer should've rejected this.
LOG(ERROR) << "invalid type: " << event; // binder layer should've rejected this.
}
}
+ // Is there an in-flight readahead task currently?
+ bool IsReadAhead() const {
+ return read_ahead_task_.has_value();
+ }
+
+ // Gets the compiled trace.
+ // If a compiled trace exists in sqlite, use that one. Otherwise, try
+ // to find a prebuilt one.
+ std::optional<std::string> GetCompiledTrace(const AppComponentName& component_name) {
+ ScopedFormatTrace atrace_get_compiled_trace(ATRACE_TAG_ACTIVITY_MANAGER, "GetCompiledTrace");
+ // Firstly, try to find the compiled trace from sqlite.
+ android::base::Timer timer{};
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+ std::optional<int> version =
+ version_map_->GetOrQueryPackageVersion(component_name.package);
+ if (!version) {
+ LOG(DEBUG) << "The version is NULL, maybe package manager is down.";
+ return std::nullopt;
+ }
+ db::VersionedComponentName vcn{component_name.package,
+ component_name.activity_name,
+ *version};
+
+ std::optional<db::PrefetchFileModel> compiled_trace =
+ db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn);
+
+ std::chrono::milliseconds duration_ms = timer.duration();
+ LOG(DEBUG) << "EventManager: Looking up compiled trace done in "
+ << duration_ms.count() // the count of ticks.
+ << "ms.";
+
+ if (compiled_trace) {
+ if (std::filesystem::exists(compiled_trace->file_path)) {
+ return compiled_trace->file_path;
+ } else {
+ LOG(DEBUG) << "Compiled trace in sqlite doesn't exists. file_path: "
+ << compiled_trace->file_path;
+ }
+ }
+
+ LOG(DEBUG) << "Cannot find compiled trace in sqlite for package_name: "
+ << component_name.package
+ << " activity_name: "
+ << component_name.activity_name;
+
+ // If sqlite doesn't have the compiled trace, try the prebuilt path.
+ std::string file_path = "/product/iorap-trace/";
+ file_path += component_name.ToMakeFileSafeEncodedPkgString();
+ file_path += ".compiled_trace.pb";
+
+ if (std::filesystem::exists(file_path)) {
+ return file_path;
+ }
+
+ LOG(DEBUG) << "Prebuilt compiled trace doesn't exists. file_path: "
+ << file_path;
+
+ return std::nullopt;
+ }
+
+ void StartReadAhead(size_t id, const AppComponentName& component_name) {
+ DCHECK(allowed_readahead_);
+ DCHECK(!IsReadAhead());
+
+ std::optional<std::string> file_path = GetCompiledTrace(component_name);
+ if (!file_path) {
+ LOG(VERBOSE) << "Cannot find a compiled trace.";
+ return;
+ }
+
+ prefetcher::TaskId task{id, *file_path};
+ read_ahead_->BeginTask(task);
+ // TODO: non-void return signature?
+
+ read_ahead_task_ = std::move(task);
+ }
+
+ void FinishReadAhead() {
+ // if no readahead task exist, do nothing.
+ if (!IsReadAhead()){
+ return;
+ }
+
+ read_ahead_->FinishTask(*read_ahead_task_);
+ read_ahead_task_ = std::nullopt;
+ }
+
+ void AbortReadAhead() {
+ FinishReadAhead();
+ }
+
bool IsTracing() const {
return is_tracing_;
}
- rxcpp::composite_subscription StartTracing(AppComponentName component_name) {
+ std::optional<rxcpp::composite_subscription> StartTracing(
+ AppComponentName component_name) {
+ DCHECK(allowed_tracing_);
DCHECK(!IsTracing());
auto /*observable<PerfettoStreamCommand>*/ perfetto_commands =
@@ -245,30 +497,73 @@ struct AppLaunchEventState {
rxcpp::composite_subscription lifetime;
- trace_proto_stream
+ auto stream_via_threads = trace_proto_stream
.tap([](const PerfettoTraceProto& trace_proto) {
LOG(VERBOSE) << "StartTracing -- PerfettoTraceProto received (1)";
})
+ .combine_latest(history_id_observable_)
.observe_on(*thread_) // All work prior to 'observe_on' is handled on thread_.
.subscribe_on(*thread_) // All work prior to 'observe_on' is handled on thread_.
.observe_on(*io_thread_) // Write data on an idle-class-priority thread.
- .tap([](const PerfettoTraceProto& trace_proto) {
+ .tap([](std::tuple<PerfettoTraceProto, int> trace_tuple) {
LOG(VERBOSE) << "StartTracing -- PerfettoTraceProto received (2)";
- })
- .as_blocking() // TODO: remove.
- .subscribe(/*out*/lifetime,
- /*on_next*/[component_name]
- (PerfettoTraceProto trace_proto) {
- std::string file_path = "/data/misc/iorapd/";
- file_path += component_name.ToUrlEncodedString();
- file_path += ".perfetto_trace.pb";
+ });
- // TODO: timestamp each file into a subdirectory.
+ std::optional<int> version =
+ version_map_->GetOrQueryPackageVersion(component_name_->package);
+ if (!version) {
+ LOG(DEBUG) << "The version is NULL, maybe package manager is down.";
+ return std::nullopt;
+ }
+ db::VersionedComponentName versioned_component_name{component_name.package,
+ component_name.activity_name,
+ *version};
+ lifetime = RxAsync::SubscribeAsync(*async_pool_,
+ std::move(stream_via_threads),
+ /*on_next*/[versioned_component_name]
+ (std::tuple<PerfettoTraceProto, int> trace_tuple) {
+ PerfettoTraceProto& trace_proto = std::get<0>(trace_tuple);
+ int history_id = std::get<1>(trace_tuple);
+
+ db::PerfettoTraceFileModel file_model =
+ db::PerfettoTraceFileModel::CalculateNewestFilePath(versioned_component_name);
+
+ std::string file_path = file_model.FilePath();
+
+ ScopedFormatTrace atrace_write_to_file(ATRACE_TAG_ACTIVITY_MANAGER,
+ "Perfetto Write Trace To File %s",
+ file_path.c_str());
+
+ if (!file_model.MkdirWithParents()) {
+ LOG(ERROR) << "Cannot save TraceBuffer; failed to mkdirs " << file_path;
+ return;
+ }
if (!trace_proto.WriteFullyToFile(file_path)) {
LOG(ERROR) << "Failed to save TraceBuffer to " << file_path;
} else {
LOG(INFO) << "Perfetto TraceBuffer saved to file: " << file_path;
+
+ ScopedFormatTrace atrace_update_raw_traces_table(
+ ATRACE_TAG_ACTIVITY_MANAGER,
+ "update raw_traces table history_id = %d",
+ history_id);
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+ std::optional<db::RawTraceModel> raw_trace =
+ db::RawTraceModel::Insert(db, history_id, file_path);
+
+ if (!raw_trace) {
+ LOG(ERROR) << "Failed to insert raw_traces for " << file_path;
+ } else {
+ LOG(VERBOSE) << "Inserted into db: " << *raw_trace;
+
+ ScopedFormatTrace atrace_delete_older_files(
+ ATRACE_TAG_ACTIVITY_MANAGER,
+ "Delete older trace files for package");
+
+ // Ensure we don't have too many files per-app.
+ db::PerfettoTraceFileModel::DeleteOlderFiles(db, versioned_component_name);
+ }
}
},
/*on_error*/[](rxcpp::util::error_ptr err) {
@@ -282,12 +577,23 @@ struct AppLaunchEventState {
void AbortTrace() {
LOG(VERBOSE) << "AppLaunchEventState - AbortTrace";
+
+ // if the tracing is not running, do nothing.
+ if (!IsTracing()){
+ return;
+ }
+
is_tracing_ = false;
if (rx_lifetime_) {
// TODO: it would be good to call perfetto Destroy.
+ rx_in_flight_.erase(std::remove(rx_in_flight_.begin(),
+ rx_in_flight_.end(), *rx_lifetime_),
+ rx_in_flight_.end());
+
LOG(VERBOSE) << "AppLaunchEventState - AbortTrace - Unsubscribe";
rx_lifetime_->unsubscribe();
+
rx_lifetime_.reset();
}
}
@@ -309,8 +615,187 @@ struct AppLaunchEventState {
LOG(VERBOSE) << "AppLaunchEventState - MarkPendingTrace - lifetime was empty";
}
+ is_tracing_ = false;
// FIXME: how do we clear this vector?
}
+
+ void RecordDbLaunchHistory() {
+ std::optional<db::AppLaunchHistoryModel> history = InsertDbLaunchHistory();
+
+ // RecordDbLaunchHistory happens-after kIntentStarted
+ if (!history_id_subscriber_.has_value()) {
+ LOG(WARNING) << "Logic error? Should always have a subscriber here.";
+ return;
+ }
+
+ // Ensure that the history id rx chain is terminated either with an error or with
+ // the newly inserted app_launch_histories.id
+ if (!history) {
+ history_id_subscriber_->on_error(rxcpp::util::make_error_ptr(
+ std::ios_base::failure("Failed to insert history id")));
+ recent_history_id_ = std::nullopt;
+ } else {
+ // Note: we must have already subscribed, or this value will disappear.
+ LOG(VERBOSE) << "history_id_subscriber on_next history_id=" << history->id;
+ history_id_subscriber_->on_next(history->id);
+ history_id_subscriber_->on_completed();
+
+ recent_history_id_ = history->id;
+ }
+ history_id_subscriber_ = std::nullopt;
+ }
+
+ std::optional<db::AppLaunchHistoryModel> InsertDbLaunchHistory() {
+ // TODO: deferred queue into a different lower priority thread.
+ if (!component_name_ || !temperature_) {
+ LOG(VERBOSE) << "Skip RecordDbLaunchHistory, no component name available.";
+
+ return std::nullopt;
+ }
+
+ android::ScopedTrace trace{ATRACE_TAG_ACTIVITY_MANAGER,
+ "IorapNativeService::RecordDbLaunchHistory"};
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+
+ using namespace iorap::db;
+
+ std::optional<int> version =
+ version_map_->GetOrQueryPackageVersion(component_name_->package);
+ if (!version) {
+ LOG(DEBUG) << "The version is NULL, maybe package manager is down.";
+ return std::nullopt;
+ }
+ std::optional<ActivityModel> activity =
+ ActivityModel::SelectOrInsert(db,
+ component_name_->package,
+ *version,
+ component_name_->activity_name);
+
+ if (!activity) {
+ LOG(WARNING) << "Failed to query activity row for : " << *component_name_;
+ return std::nullopt;
+ }
+
+ auto temp = static_cast<db::AppLaunchHistoryModel::Temperature>(*temperature_);
+
+ std::optional<AppLaunchHistoryModel> alh =
+ AppLaunchHistoryModel::Insert(db,
+ activity->id,
+ temp,
+ IsTracing(),
+ IsReadAhead(),
+ intent_started_ns_,
+ total_time_ns_,
+ // ReportFullyDrawn event normally occurs after this. Need update later.
+ /* report_fully_drawn_ns= */ std::nullopt);
+ //Repo
+ if (!alh) {
+ LOG(WARNING) << "Failed to insert app_launch_histories row";
+ return std::nullopt;
+ }
+
+ LOG(VERBOSE) << "RecordDbLaunchHistory: " << *alh;
+ return alh;
+ }
+
+ void UpdateReportFullyDrawn(int history_id, uint64_t timestamp_ns) {
+ LOG(DEBUG) << "Update kReportFullyDrawn for history_id:"
+ << history_id
+ << " timestamp_ns: "
+ << timestamp_ns;
+
+ android::ScopedTrace trace{ATRACE_TAG_ACTIVITY_MANAGER,
+ "IorapNativeService::UpdateReportFullyDrawn"};
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+
+ bool result =
+ db::AppLaunchHistoryModel::UpdateReportFullyDrawn(db,
+ history_id,
+ timestamp_ns);
+
+ if (!result) {
+ LOG(WARNING) << "Failed to update app_launch_histories row";
+ }
+ }
+};
+
+struct AppLaunchEventDefender {
+ binder::AppLaunchEvent::Type last_event_type_{binder::AppLaunchEvent::Type::kUninitialized};
+
+ enum class Result {
+ kAccept, // Pass-through the new event.
+ kOverwrite, // Overwrite the new event with a different event.
+ kReject // Completely reject the new event, it will not be delivered.
+ };
+
+ Result OnAppLaunchEvent(binder::RequestId request_id,
+ const binder::AppLaunchEvent& event,
+ binder::AppLaunchEvent* overwrite) {
+ using Type = binder::AppLaunchEvent::Type;
+ CHECK(overwrite != nullptr);
+
+ // Ensure only legal transitions are allowed.
+ switch (last_event_type_) {
+ case Type::kUninitialized:
+ case Type::kIntentFailed:
+ case Type::kActivityLaunchCancelled:
+ case Type::kReportFullyDrawn: { // From a terminal state, only go to kIntentStarted
+ if (event.type != Type::kIntentStarted) {
+ LOG(WARNING) << "Rejecting transition from " << last_event_type_ << " to " << event.type;
+ last_event_type_ = Type::kUninitialized;
+ return Result::kReject;
+ } else {
+ LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type;
+ last_event_type_ = event.type;
+ return Result::kAccept;
+ }
+ }
+ case Type::kIntentStarted: {
+ if (event.type == Type::kIntentFailed ||
+ event.type == Type::kActivityLaunched) {
+ LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type;
+ last_event_type_ = event.type;
+ return Result::kAccept;
+ } else {
+ LOG(WARNING) << "Overwriting transition from kIntentStarted to "
+ << event.type << " into kIntentFailed";
+ last_event_type_ = Type::kIntentFailed;
+
+ *overwrite = event;
+ overwrite->type = Type::kIntentFailed;
+ return Result::kOverwrite;
+ }
+ }
+ case Type::kActivityLaunched: {
+ if (event.type == Type::kActivityLaunchFinished ||
+ event.type == Type::kActivityLaunchCancelled) {
+ LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type;
+ last_event_type_ = event.type;
+ return Result::kAccept;
+ } else {
+ LOG(WARNING) << "Overwriting transition from kActivityLaunched to "
+ << event.type << " into kActivityLaunchCancelled";
+ last_event_type_ = Type::kActivityLaunchCancelled;
+
+ *overwrite = event;
+ overwrite->type = Type::kActivityLaunchCancelled;
+ return Result::kOverwrite;
+ }
+ }
+ case Type::kActivityLaunchFinished: {
+ if (event.type == Type::kIntentStarted ||
+ event.type == Type::kReportFullyDrawn) {
+ LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type;
+ last_event_type_ = event.type;
+ return Result::kAccept;
+ } else {
+ LOG(WARNING) << "Rejecting transition from " << last_event_type_ << " to " << event.type;
+ last_event_type_ = Type::kUninitialized;
+ return Result::kReject;
+ }
+ }
+ }
+ }
};
// Convert callback pattern into reactive pattern.
@@ -387,6 +872,70 @@ struct AppLaunchEventSubject {
std::optional<rxcpp::subscriber<RefWrapper>> subscriber_;
};
+// Convert callback pattern into reactive pattern.
+struct JobScheduledEventSubject {
+ JobScheduledEventSubject() {}
+
+ void Subscribe(rxcpp::subscriber<std::pair<RequestId, JobScheduledEvent>> subscriber) {
+ DCHECK(ready_ != true) << "Cannot Subscribe twice";
+
+ subscriber_ = std::move(subscriber);
+
+ // Release edge of synchronizes-with AcquireIsReady.
+ ready_.store(true);
+ }
+
+ void OnNext(RequestId request_id, JobScheduledEvent e) {
+ if (!AcquireIsReady()) {
+ return;
+ }
+
+ if (!subscriber_->is_subscribed()) {
+ return;
+ }
+
+ subscriber_->on_next(std::pair<RequestId, JobScheduledEvent>{std::move(request_id), std::move(e)});
+
+ }
+
+ void OnCompleted() {
+ if (!AcquireIsReady()) {
+ return;
+ }
+
+ subscriber_->on_completed();
+ }
+
+ private:
+ bool AcquireIsReady() {
+ // Synchronizes-with the release-edge in Subscribe.
+ // This can happen much later, only once the subscription actually happens.
+
+ // However, as far as I know, 'rxcpp::subscriber' is not thread safe,
+ // (but the observable chain itself can be made thread-safe via #observe_on, etc).
+ // so we must avoid reading it until it has been fully synchronized.
+ //
+ // TODO: investigate rxcpp subscribers and see if we can get rid of this atomics,
+ // to make it simpler.
+ return ready_.load();
+ }
+
+ // TODO: also track the RequestId ?
+
+ std::atomic<bool> ready_{false};
+
+ std::optional<rxcpp::subscriber<std::pair<RequestId, JobScheduledEvent>>> subscriber_;
+};
+
+std::ostream& operator<<(std::ostream& os, const android::content::pm::PackageChangeEvent& event) {
+ os << "PackageChangeEvent{";
+ os << "packageName=" << event.packageName << ",";
+ os << "version=" << event.version << ",";
+ os << "lastUpdateTimeMillis=" << event.lastUpdateTimeMillis;
+ os << "}";
+ return os;
+}
+
class EventManager::Impl {
public:
Impl(/*borrow*/perfetto::RxProducerFactory& perfetto_factory)
@@ -394,15 +943,36 @@ class EventManager::Impl {
worker_thread_(rxcpp::observe_on_new_thread()),
worker_thread2_(rxcpp::observe_on_new_thread()),
io_thread_(perfetto::ObserveOnNewIoThread()) {
+ // Try to create version map
+ RetryCreateVersionMap();
- // TODO: read all properties from one config class.
- tracing_allowed_ = ::android::base::GetBoolProperty("iorapd.perfetto.enable", /*default*/false);
+ iorap::common::StderrLogPrinter printer{"iorapd"};
+ RefreshSystemProperties(printer);
- if (tracing_allowed_) {
- rx_lifetime_ = InitializeRxGraph();
- } else {
- LOG(WARNING) << "Tracing disabled by iorapd.perfetto.enable=false";
- }
+ rx_lifetime_ = InitializeRxGraph();
+ rx_lifetime_jobs_ = InitializeRxGraphForJobScheduledEvents();
+
+ android::add_sysprop_change_callback(&Impl::OnSyspropChanged, /*priority*/-10000);
+ }
+
+ void RetryCreateVersionMap() {
+ android::base::Timer timer{};
+ version_map_ = binder::PackageVersionMap::Create();
+ std::chrono::milliseconds duration_ms = timer.duration();
+ LOG(DEBUG) << "Got versions for "
+ << version_map_->Size()
+ << " packages in "
+ << duration_ms.count()
+ << "ms";
+ }
+
+ void SetTaskResultCallbacks(std::shared_ptr<TaskResultCallbacks> callbacks) {
+ DCHECK(callbacks_.expired());
+ callbacks_ = callbacks;
+ }
+
+ void Join() {
+ async_pool_.Join();
}
bool OnAppLaunchEvent(RequestId request_id,
@@ -411,11 +981,75 @@ class EventManager::Impl {
<< "request_id=" << request_id.request_id << ","
<< event;
- app_launch_event_subject_.OnNext(event);
+ // Filter any incoming events through a defender that enforces
+ // that all state transitions are as contractually documented in
+ // ActivityMetricsLaunchObserver's javadoc.
+ AppLaunchEvent overwrite_event{};
+ AppLaunchEventDefender::Result result =
+ app_launch_event_defender_.OnAppLaunchEvent(request_id, event, /*out*/&overwrite_event);
+
+ switch (result) {
+ case AppLaunchEventDefender::Result::kAccept:
+ app_launch_event_subject_.OnNext(event);
+ return true;
+ case AppLaunchEventDefender::Result::kOverwrite:
+ app_launch_event_subject_.OnNext(overwrite_event);
+ return false;
+ case AppLaunchEventDefender::Result::kReject:
+ // Intentionally left-empty: we drop the event completely.
+ return false;
+ }
+
+ // In theory returns BAD_VALUE to the other side of this binder connection.
+ // In practice we use 'oneway' flags so this doesn't matter on a regular build.
+ return false;
+ }
+
+ bool OnDexOptEvent(RequestId request_id,
+ const DexOptEvent& event) {
+ LOG(VERBOSE) << "EventManager::OnDexOptEvent("
+ << "request_id=" << request_id.request_id << ","
+ << event.package_name
+ << ")";
+
+ return PurgePackage(event.package_name);
+ }
+
+ bool OnJobScheduledEvent(RequestId request_id,
+ const JobScheduledEvent& event) {
+ LOG(VERBOSE) << "EventManager::OnJobScheduledEvent("
+ << "request_id=" << request_id.request_id << ",event=TODO).";
+
+ job_scheduled_event_subject_.OnNext(std::move(request_id), event);
+ return true; // No errors.
+ }
+
+ bool OnPackageChanged(const android::content::pm::PackageChangeEvent& event) {
+ LOG(DEBUG) << "Received " << event;
+ if (event.isDeleted) {
+ // Do nothing if the package is deleted rignt now.
+ // The package will be removed from db during maintenance.
+ return true;
+ }
+ // Update the version map.
+ if (version_map_->Update(event.packageName, event.version)) {
+ return true;
+ }
+
+ // Sometimes a package is updated without any version change.
+ // Clean it up in this case.
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+ db::CleanUpFilesForPackage(db, event.packageName, event.version);
return true;
}
+ void Dump(/*borrow*/::android::Printer& printer) {
+ ::iorap::prefetcher::ReadAhead::Dump(printer);
+ ::iorap::perfetto::PerfettoConsumerImpl::Dump(/*borrow*/printer);
+ ::iorap::maintenance::Dump(db::SchemaModel::GetSingleton(), printer);
+ }
+
rxcpp::composite_subscription InitializeRxGraph() {
LOG(VERBOSE) << "EventManager::InitializeRxGraph";
@@ -426,7 +1060,21 @@ class EventManager::Impl {
rxcpp::composite_subscription lifetime;
- AppLaunchEventState initial_state{&perfetto_factory_, &worker_thread2_, &io_thread_};
+ if (!tracing_allowed_) {
+ LOG(WARNING) << "Tracing disabled by system property";
+ }
+ if (!readahead_allowed_) {
+ LOG(WARNING) << "Readahead disabled by system property";
+ }
+
+ AppLaunchEventState initial_state{&perfetto_factory_,
+ readahead_allowed_,
+ tracing_allowed_,
+ package_blacklister_,
+ &worker_thread2_,
+ &io_thread_,
+ &async_pool_,
+ version_map_};
app_launch_events_
.subscribe_on(worker_thread_)
.scan(std::move(initial_state),
@@ -442,12 +1090,227 @@ class EventManager::Impl {
return lifetime;
}
+ // Runs the maintenance code to compile perfetto traces to compiled
+ // trace.
+ void StartMaintenance(bool output_text,
+ std::optional<std::string> inode_textcache,
+ bool verbose,
+ bool recompile,
+ uint64_t min_traces) {
+ ScopedFormatTrace atrace_bg_scope(ATRACE_TAG_PACKAGE_MANAGER,
+ "Background Job Scope");
+
+ {
+ ScopedFormatTrace atrace_update_versions(ATRACE_TAG_PACKAGE_MANAGER,
+ "Update package versions map cache");
+ // Update the version map.
+ version_map_->UpdateAll();
+ }
+
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+ {
+ ScopedFormatTrace atrace_cleanup_db(ATRACE_TAG_PACKAGE_MANAGER,
+ "Clean up obsolete data in database");
+ // Cleanup the obsolete data in the database.
+ maintenance::CleanUpDatabase(db, version_map_);
+ }
+
+ {
+ ScopedFormatTrace atrace_compile_apps(ATRACE_TAG_PACKAGE_MANAGER,
+ "Compile apps on device");
+ // Compilation
+ maintenance::ControllerParameters params{
+ output_text,
+ inode_textcache,
+ verbose,
+ recompile,
+ min_traces,
+ std::make_shared<maintenance::Exec>()};
+
+ LOG(DEBUG) << "StartMaintenance: min_traces=" << min_traces;
+ maintenance::CompileAppsOnDevice(db, params);
+ }
+ }
+
+ rxcpp::composite_subscription InitializeRxGraphForJobScheduledEvents() {
+ LOG(VERBOSE) << "EventManager::InitializeRxGraphForJobScheduledEvents";
+
+ using RequestAndJobEvent = std::pair<RequestId, JobScheduledEvent>;
+
+ job_scheduled_events_ = rxcpp::observable<>::create<RequestAndJobEvent>(
+ [&](rxcpp::subscriber<RequestAndJobEvent> subscriber) {
+ job_scheduled_event_subject_.Subscribe(std::move(subscriber));
+ });
+
+ rxcpp::composite_subscription lifetime;
+
+ job_scheduled_events_
+ .observe_on(worker_thread_) // async handling.
+ .tap([this](const RequestAndJobEvent& e) {
+ LOG(VERBOSE) << "EventManager#JobScheduledEvent#tap(1) - job begins";
+ this->NotifyProgress(e.first, TaskResult{TaskResult::State::kBegan});
+
+ StartMaintenance(/*output_text=*/false,
+ /*inode_textcache=*/std::nullopt,
+ /*verbose=*/false,
+ /*recompile=*/false,
+ s_min_traces);
+
+ // TODO: probably this shouldn't be emitted until most of the usual DCHECKs
+ // (for example, validate a job isn't already started, the request is not reused, etc).
+ // In this way we could block from the client until it sees 'kBegan' and Log.wtf otherwise.
+ })
+ .tap([](const RequestAndJobEvent& e) {
+ // TODO. Actual work.
+ LOG(VERBOSE) << "EventManager#JobScheduledEvent#tap(2) - job is being processed";
+
+ // TODO: abort functionality for in-flight jobs.
+ //
+ // maybe something like scan that returns an observable<Job> + flat map to that job.
+ // then we could unsubscribe from the scan to do a partial abort? need to try it and see if it works.
+ //
+ // other option is to create a new outer subscription for each job id which seems less ideal.
+ })
+ .subscribe(/*out*/lifetime,
+ /*on_next*/
+ [this](const RequestAndJobEvent& e) {
+ LOG(VERBOSE) << "EventManager#JobScheduledEvent#subscribe - job completed";
+ this->NotifyComplete(e.first, TaskResult{TaskResult::State::kCompleted});
+ }
+#if 0
+ ,
+ /*on_error*/
+ [](rxcpp::util::error_ptr err) {
+ LOG(ERROR) << "Scheduled job event failed: " << rxcpp::util::what(err);
+
+ //std::shared_ptr<TaskResultCallbacks> callbacks = callbacks_.lock();
+ //if (callbacks != nullptr) {
+ // FIXME: How do we get the request ID back out of the error? Seems like a problem.
+ // callbacks->OnComplete(, TaskResult{TaskResult::kError});
+ // We may have to wrap with an iorap::expected instead of using on_error.
+ //}
+
+ // FIXME: need to add a 'OnErrorResumeNext' operator?
+ DCHECK(false) << "forgot to implement OnErrorResumeNext";
+ }
+#endif
+ );
+
+ // TODO: error output should happen via an observable.
+
+ return lifetime;
+ }
+
+ void NotifyComplete(RequestId request_id, TaskResult result) {
+ std::shared_ptr<TaskResultCallbacks> callbacks = callbacks_.lock();
+ if (callbacks != nullptr) {
+ callbacks->OnComplete(std::move(request_id), std::move(result));
+ } else {
+ LOG(WARNING) << "EventManager: TaskResultCallbacks may have been released early";
+ }
+ }
+
+ void NotifyProgress(RequestId request_id, TaskResult result) {
+ std::shared_ptr<TaskResultCallbacks> callbacks = callbacks_.lock();
+ if (callbacks != nullptr) {
+ callbacks->OnProgress(std::move(request_id), std::move(result));
+ } else {
+ LOG(WARNING) << "EventManager: TaskResultCallbacks may have been released early";
+ }
+ }
+
+ static void OnSyspropChanged() {
+ LOG(DEBUG) << "OnSyspropChanged";
+ }
+
+ void RefreshSystemProperties(::android::Printer& printer) {
+ // TODO: read all properties from one config class.
+ // PH properties do not work if they contain ".". "_" was instead used here.
+ const char* ph_namespace = "runtime_native_boot";
+ tracing_allowed_ = server_configurable_flags::GetServerConfigurableFlag(
+ ph_namespace,
+ "iorap_perfetto_enable",
+ ::android::base::GetProperty("iorapd.perfetto.enable", /*default*/"true")) == "true";
+ s_tracing_allowed = tracing_allowed_;
+ printer.printFormatLine("iorapd.perfetto.enable = %s", tracing_allowed_ ? "true" : "false");
+
+ readahead_allowed_ = server_configurable_flags::GetServerConfigurableFlag(
+ ph_namespace,
+ "iorap_readahead_enable",
+ ::android::base::GetProperty("iorapd.readahead.enable", /*default*/"true")) == "true";
+ s_readahead_allowed = readahead_allowed_;
+ printer.printFormatLine("iorapd.readahead.enable = %s", s_readahead_allowed ? "true" : "false");
+
+ s_min_traces =
+ ::android::base::GetUintProperty<uint64_t>("iorapd.maintenance.min_traces", /*default*/1);
+ uint64_t min_traces = s_min_traces;
+ printer.printFormatLine("iorapd.maintenance.min_traces = %" PRIu64, min_traces);
+
+ package_blacklister_ = PackageBlacklister{
+ /* Colon-separated string list of blacklisted packages, e.g.
+ * "foo.bar.baz;com.fake.name" would blacklist {"foo.bar.baz", "com.fake.name"} packages.
+ *
+ * Blacklisted packages are ignored by iorapd.
+ */
+ server_configurable_flags::GetServerConfigurableFlag(
+ ph_namespace,
+ "iorap_blacklisted_packages",
+ ::android::base::GetProperty("iorapd.blacklist_packages",
+ /*default*/""))
+ };
+
+ LOG(DEBUG) << "RefreshSystemProperties";
+ }
+
+ bool PurgePackage(::android::Printer& printer, const std::string& package_name) {
+ (void)printer;
+ return PurgePackage(package_name);
+ }
+
+ bool PurgePackage(const std::string& package_name) {
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+ db::CleanUpFilesForPackage(db, package_name);
+ LOG(DEBUG) << "PurgePackage: " << package_name;
+ return true;
+ }
+
+ bool CompilePackage(::android::Printer& printer, const std::string& package_name) {
+ (void)printer;
+
+ ScopedFormatTrace atrace_compile_app(ATRACE_TAG_PACKAGE_MANAGER,
+ "Compile one app on device");
+
+ maintenance::ControllerParameters params{
+ /*output_text*/false,
+ /*inode_textcache*/std::nullopt,
+ WOULD_LOG(VERBOSE),
+ /*recompile*/false,
+ s_min_traces,
+ std::make_shared<maintenance::Exec>()};
+
+ db::DbHandle db{db::SchemaModel::GetSingleton()};
+ bool res = maintenance::CompileSingleAppOnDevice(db, std::move(params), package_name);
+ LOG(DEBUG) << "CompilePackage: " << package_name;
+
+ return res;
+ }
+
+ bool readahead_allowed_{true};
+
perfetto::RxProducerFactory& perfetto_factory_;
bool tracing_allowed_{true};
+ PackageBlacklister package_blacklister_{};
+
+ std::weak_ptr<TaskResultCallbacks> callbacks_; // avoid cycles with weakptr.
+
using AppLaunchEventRefWrapper = AppLaunchEventSubject::RefWrapper;
rxcpp::observable<AppLaunchEventRefWrapper> app_launch_events_;
AppLaunchEventSubject app_launch_event_subject_;
+ AppLaunchEventDefender app_launch_event_defender_;
+
+ rxcpp::observable<std::pair<RequestId, JobScheduledEvent>> job_scheduled_events_;
+ JobScheduledEventSubject job_scheduled_event_subject_;
rxcpp::observable<RequestId> completed_requests_;
@@ -456,8 +1319,14 @@ class EventManager::Impl {
observe_on_one_worker worker_thread2_;
// low priority idle-class thread for IO operations.
observe_on_one_worker io_thread_;
+ // async futures pool for async rx operations.
+ AsyncPool async_pool_;
+
+ rxcpp::composite_subscription rx_lifetime_; // app launch events
+ rxcpp::composite_subscription rx_lifetime_jobs_; // job scheduled events
- rxcpp::composite_subscription rx_lifetime_;
+ // package version map
+ std::shared_ptr<binder::PackageVersionMap> version_map_;
//INTENTIONAL_COMPILER_ERROR_HERE:
// FIXME:
@@ -488,9 +1357,47 @@ std::shared_ptr<EventManager> EventManager::Create(perfetto::RxProducerFactory&
return p;
}
+void EventManager::SetTaskResultCallbacks(std::shared_ptr<TaskResultCallbacks> callbacks) {
+ return impl_->SetTaskResultCallbacks(std::move(callbacks));
+}
+
+void EventManager::Join() {
+ return impl_->Join();
+}
+
bool EventManager::OnAppLaunchEvent(RequestId request_id,
const AppLaunchEvent& event) {
return impl_->OnAppLaunchEvent(request_id, event);
}
+bool EventManager::OnDexOptEvent(RequestId request_id,
+ const DexOptEvent& event) {
+ return impl_->OnDexOptEvent(request_id, event);
+}
+
+bool EventManager::OnJobScheduledEvent(RequestId request_id,
+ const JobScheduledEvent& event) {
+ return impl_->OnJobScheduledEvent(request_id, event);
+}
+
+bool EventManager::OnPackageChanged(const android::content::pm::PackageChangeEvent& event) {
+ return impl_->OnPackageChanged(event);
+}
+
+void EventManager::Dump(/*borrow*/::android::Printer& printer) {
+ return impl_->Dump(printer);
+}
+
+void EventManager::RefreshSystemProperties(::android::Printer& printer) {
+ return impl_->RefreshSystemProperties(printer);
+}
+
+bool EventManager::PurgePackage(::android::Printer& printer, const std::string& package_name) {
+ return impl_->PurgePackage(printer, package_name);
+}
+
+bool EventManager::CompilePackage(::android::Printer& printer, const std::string& package_name) {
+ return impl_->CompilePackage(printer, package_name);
+}
+
} // namespace iorap::manager
diff --git a/src/manager/event_manager.h b/src/manager/event_manager.h
index 5355296..fa09eec 100644
--- a/src/manager/event_manager.h
+++ b/src/manager/event_manager.h
@@ -18,21 +18,50 @@
#define IORAP_MANAGER_EVENT_MANAGER_H_
#include "binder/app_launch_event.h"
+#include "binder/dexopt_event.h"
+#include "binder/job_scheduled_event.h"
#include "binder/request_id.h"
+#include "binder/task_result.h"
+
+#include <android/content/pm/PackageChangeEvent.h>
#include <memory>
+namespace android {
+class Printer;
+} // namespace android
+
namespace iorap::perfetto {
- struct RxProducerFactory;
+struct RxProducerFactory;
} // namespace iorap::perfetto
namespace iorap::manager {
+// These callbacks are invoked by the EventManager to provide asynchronous notification for the status
+// of an event handler.
+//
+// Calling 'On_Event' in EventManager should be considered merely to start the task.
+// Calling 'OnComplete' here is considered to terminate the request (either with a success or error).
+// OnProgress is optional, but if it is called it must be called prior to 'OnComplete'.
+//
+// All callbacks for the same request-id are sequentially consistent.
+class TaskResultCallbacks {
+ public:
+ virtual void OnProgress(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) {}
+ virtual void OnComplete(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) {}
+
+ virtual ~TaskResultCallbacks() {}
+};
+
class EventManager {
public:
static std::shared_ptr<EventManager> Create();
static std::shared_ptr<EventManager> Create(
/*borrow*/perfetto::RxProducerFactory& perfetto_factory);
+ void SetTaskResultCallbacks(std::shared_ptr<TaskResultCallbacks> callbacks);
+
+ // Joins any background threads created by EventManager.
+ void Join();
// Handles an AppLaunchEvent:
//
@@ -45,6 +74,41 @@ class EventManager {
bool OnAppLaunchEvent(binder::RequestId request_id,
const binder::AppLaunchEvent& event);
+ // Handles a DexOptEvent:
+ //
+ // Clean up the invalidate traces after package is updated by dexopt.
+ bool OnDexOptEvent(binder::RequestId request_id,
+ const binder::DexOptEvent& event);
+
+
+ // Handles a JobScheduledEvent:
+ //
+ // * Start/stop background jobs (typically for idle maintenance).
+ // * For example, this could kick off a background compiler.
+ bool OnJobScheduledEvent(binder::RequestId request_id,
+ const binder::JobScheduledEvent& event);
+
+ // Handles a PackageChangeEvent:
+ //
+ // * The package manager service send this event for package install
+ // update or delete.
+ bool OnPackageChanged(const android::content::pm::PackageChangeEvent& event);
+
+ // Print to adb shell dumpsys (for bugreport info).
+ void Dump(/*borrow*/::android::Printer& printer);
+
+ // A dumpsys --refresh-properties command signaling that we should
+ // refresh our system properties.
+ void RefreshSystemProperties(::android::Printer& printer);
+
+ // A dumpsys --purge-package <name> command signaling
+ // that all db rows and files associated with a package should be deleted.
+ bool PurgePackage(::android::Printer& printer, const std::string& package_name);
+
+ // A dumpsys --compile-package <name> command signaling
+ // that a package should be recompiled.
+ bool CompilePackage(::android::Printer& printer, const std::string& package_name);
+
class Impl;
private:
std::unique_ptr<Impl> impl_;
diff --git a/src/perfetto/perfetto_consumer.cc b/src/perfetto/perfetto_consumer.cc
new file mode 100644
index 0000000..4fe677b
--- /dev/null
+++ b/src/perfetto/perfetto_consumer.cc
@@ -0,0 +1,608 @@
+// Copyright (C) 2020 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
+//
+// http://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/perfetto_consumer.h"
+
+#include "common/trace.h"
+
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+#include <utils/Looper.h>
+#include <utils/Printer.h>
+
+#include <limits>
+#include <map>
+#include <memory>
+#include <mutex>
+#include <sstream>
+#include <vector>
+
+#include <inttypes.h>
+#include <time.h>
+
+namespace iorap::perfetto {
+
+using State = PerfettoConsumer::State;
+using Handle = PerfettoConsumer::Handle;
+static constexpr Handle kInvalidHandle = PerfettoConsumer::kInvalidHandle;
+using OnStateChangedCb = PerfettoConsumer::OnStateChangedCb;
+using TraceBuffer = PerfettoConsumer::TraceBuffer;
+
+enum class StateKind {
+ kUncreated,
+ kCreated,
+ kStartedTracing,
+ kReadTracing,
+ kTimedOutDestroyed, // same as kDestroyed but timed out.
+ kDestroyed, // calling kDestroyed before timing out.
+};
+
+std::ostream& operator<<(std::ostream& os, StateKind kind) {
+ switch (kind) {
+ case StateKind::kUncreated:
+ os << "kUncreated";
+ break;
+ case StateKind::kCreated:
+ os << "kCreated";
+ break;
+ case StateKind::kStartedTracing:
+ os << "kStartedTracing";
+ break;
+ case StateKind::kReadTracing:
+ os << "kReadTracing";
+ break;
+ case StateKind::kTimedOutDestroyed:
+ os << "kTimedOutDestroyed";
+ break;
+ case StateKind::kDestroyed:
+ os << "kDestroyed";
+ break;
+ default:
+ os << "(invalid)";
+ break;
+ }
+ return os;
+}
+
+std::string ToString(StateKind kind) {
+ std::stringstream ss;
+ ss << kind;
+ return ss.str();
+}
+
+static constexpr uint64_t kSecToNano = 1000000000LL;
+
+static uint64_t GetTimeNanoseconds() {
+ struct timespec now;
+ clock_gettime(CLOCK_REALTIME, &now);
+
+ uint64_t now_ns = (now.tv_sec * kSecToNano + now.tv_nsec);
+ return now_ns;
+}
+
+// Describe the state of our handle in detail for debugging/logging.
+struct HandleDescription {
+ Handle handle_;
+ StateKind kind_{StateKind::kUncreated}; // Our state. required for correctness.
+ OnStateChangedCb callback_{nullptr}; // Required for Destroy callbacks.
+ void* callback_arg_{nullptr};
+
+ // For dumping to logs:
+ State state_{State::kSessionNotFound}; // perfetto state
+ std::optional<uint64_t> started_tracing_ns_; // when StartedTracing last called.
+ std::optional<uint64_t> read_trace_ns_; // When ReadTrace last called.
+ std::uint64_t last_transition_ns_{0};
+ std::optional<uint64_t> trace_cookie_; // atrace beginning at StartTracing.
+ bool trace_ended_{false}; // atrace ending at ReadTrace or Destroy.
+
+ HandleDescription(Handle handle): handle_(handle) {}
+};
+
+// pimpl idiom to hide the implementation details from header
+//
+// Track and verify that our perfetto usage is sane.
+struct PerfettoConsumerImpl::Impl {
+ Impl() : raw_{new PerfettoConsumerRawImpl{}},
+ message_handler_{new TraceMessageHandler{this}} {
+ std::thread watchdog_thread{ [this]() {
+ ::android::sp<::android::Looper> looper;
+ {
+ std::lock_guard<std::mutex> guard{looper_mutex_};
+ looper = ::android::Looper::prepare(/*opts*/0);
+ looper_ = looper;
+ }
+
+ static constexpr int kTimeoutMillis = std::numeric_limits<int>::max();
+
+ while (true) {
+ // Execute any pending callbacks, otherwise just block forever.
+ int result = looper->pollAll(kTimeoutMillis);
+
+ if (result == ::android::Looper::POLL_ERROR) {
+ LOG(ERROR) << "PerfettoConsumerImpl::Looper got a POLL_ERROR";
+ } else {
+ LOG(DEBUG) << "PerfettoConsumerImpl::Looper result was " << result;
+ }
+ }
+ }};
+
+ // Let thread run freely on its own.
+ watchdog_thread.detach();
+
+ // Block until looper_ is prepared.
+ while (true) {
+ std::lock_guard<std::mutex> guard{looper_mutex_};
+ if (looper_ != nullptr) {
+ break;
+ }
+ }
+ }
+
+ private:
+ std::unique_ptr<PerfettoConsumerRawImpl> raw_;
+ std::map<Handle, HandleDescription> states_;
+
+ // We need this to be a counter to avoid memory leaks.
+ Handle last_created_{0};
+ Handle last_destroyed_{0};
+ uint64_t trace_cookie_{0};
+
+ std::mutex mutex_; // Guard above values.
+
+ ::android::sp<::android::Looper> looper_;
+ std::mutex looper_mutex_; // Guard looper_.
+
+ struct TraceMessageHandler : public ::android::MessageHandler {
+ TraceMessageHandler(Impl* impl) : impl_{impl} {
+ CHECK(impl != nullptr);
+ }
+
+ Impl* impl_;
+
+ virtual void handleMessage(const ::android::Message& message) override {
+ impl_->OnTraceMessage(static_cast<Handle>(message.what));
+ }
+ };
+
+ ::android::sp<TraceMessageHandler> message_handler_;
+
+ public:
+ Handle Create(const void* config_proto,
+ size_t config_len,
+ OnStateChangedCb callback,
+ void* callback_arg) {
+ LOG(VERBOSE) << "PerfettoConsumer::Create("
+ << "config_len=" << config_len << ")";
+ Handle handle = raw_->Create(config_proto, config_len, callback, callback_arg);
+
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ // Assume every Handle starts at 0 and then increments by 1 every Create.
+ ++last_created_;
+ CHECK_EQ(last_created_, handle) << "perfetto handle had unexpected behavior.";
+ // Without this^ increment-by-1 behavior our detection of untracked state values is broken.
+ // If we have to, we can go with Untracked=Uncreated|Destroyed but it's better to distinguish
+ // the two if possible.
+
+ HandleDescription handle_desc{handle};
+ handle_desc.handle_ = handle;
+ handle_desc.callback_ = callback;
+ handle_desc.callback_arg_ = callback_arg;
+ UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kCreated);
+
+ // assume we never wrap around due to using int64
+ bool inserted = states_.insert({handle, handle_desc}).second;
+ CHECK(inserted) << "perfetto handle was re-used: " << handle;
+
+ return handle;
+ }
+
+ void StartTracing(Handle handle) {
+ LOG(DEBUG) << "PerfettoConsumer::StartTracing(handle=" << handle << ")";
+
+ uint64_t trace_cookie;
+ {
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ auto it = states_.find(handle);
+ if (it == states_.end()) {
+ LOG(ERROR) << "Cannot StartTracing(" << handle << "), untracked handle";
+ return;
+ }
+ HandleDescription& handle_desc = it->second;
+
+ raw_->StartTracing(handle);
+ UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kStartedTracing);
+ }
+
+ // Use a looper here to add a timeout and immediately destroy the trace buffer.
+ CHECK_LE(static_cast<int64_t>(handle), static_cast<int64_t>(std::numeric_limits<int>::max()));
+ int message_code = static_cast<int>(handle);
+ ::android::Message message{message_code};
+
+ std::lock_guard<std::mutex> looper_guard{looper_mutex_};
+ looper_->sendMessageDelayed(static_cast<nsecs_t>(GetPropertyTraceTimeoutNs()),
+ message_handler_,
+ message);
+ }
+
+ TraceBuffer ReadTrace(Handle handle) {
+ LOG(DEBUG) << "PerfettoConsumer::ReadTrace(handle=" << handle << ")";
+
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ auto it = states_.find(handle);
+ if (it == states_.end()) {
+ LOG(ERROR) << "Cannot ReadTrace(" << handle << "), untracked handle";
+ return TraceBuffer{};
+ }
+
+ HandleDescription& handle_desc = it->second;
+
+ TraceBuffer trace_buffer = raw_->ReadTrace(handle);
+ UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kReadTracing);
+
+ return trace_buffer;
+ }
+
+ void Destroy(Handle handle) {
+ HandleDescription handle_desc{handle};
+ TryDestroy(handle, /*do_destroy*/true, /*out*/&handle_desc);;
+ }
+
+ bool TryDestroy(Handle handle, bool do_destroy, /*out*/HandleDescription* handle_desc_out) {
+ CHECK(handle_desc_out != nullptr);
+
+ LOG(VERBOSE) << "PerfettoConsumer::Destroy(handle=" << handle << ")";
+
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ auto it = states_.find(handle);
+ if (it == states_.end()) {
+ // Leniency for calling Destroy multiple times. It's not a mistake.
+ LOG(ERROR) << "Cannot Destroy(" << handle << "), untracked handle";
+ return false;
+ }
+
+ HandleDescription& handle_desc = it->second;
+
+ if (do_destroy) {
+ raw_->Destroy(handle);
+ }
+ UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kDestroyed);
+
+ *handle_desc_out = handle_desc;
+
+ // No longer track this handle to avoid memory leaks.
+ last_destroyed_ = handle;
+ states_.erase(it);
+
+ return true;
+ }
+
+ State PollState(Handle handle) {
+ // Just pass-through the call, we never use it directly anyway.
+ return raw_->PollState(handle);
+ }
+
+ // Either fetch or infer the current handle state from a handle.
+ // Meant for debugging/logging only.
+ HandleDescription GetOrInferHandleDescription(Handle handle) {
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ auto it = states_.find(handle);
+ if (it == states_.end()) {
+ HandleDescription state{handle};
+ // If it's untracked it hasn't been created yet, or it was already destroyed.
+ if (IsDestroyed(handle)) {
+ UpdateHandleDescription(/*inout*/&state, StateKind::kDestroyed);
+ } else {
+ if (!IsUncreated(handle)) {
+ LOG(WARNING) << "bad state detection";
+ }
+ UpdateHandleDescription(/*inout*/&state, StateKind::kUncreated);
+ }
+ return state;
+ }
+ return it->second;
+ }
+
+ void OnTraceMessage(Handle handle) {
+ LOG(VERBOSE) << "OnTraceMessage(" << static_cast<int64_t>(handle) << ")";
+ HandleDescription handle_desc{handle};
+ {
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ auto it = states_.find(handle);
+ if (it == states_.end()) {
+ // Handle values are never re-used, so we can simply ignore the message here
+ // instead of having to remove it from the message queue.
+ LOG(VERBOSE) << "OnTraceMessage(" << static_cast<int64_t>(handle)
+ << ") no longer tracked handle";
+ return;
+ }
+ handle_desc = it->second;
+ }
+
+ // First check. Has this trace been active for too long?
+ uint64_t now_ns = GetTimeNanoseconds();
+ if (handle_desc.kind_ == StateKind::kStartedTracing) {
+ // Ignore other kinds of traces because they don't exhaust perfetto resources.
+ CHECK(handle_desc.started_tracing_ns_.has_value()) << static_cast<int64_t>(handle);
+
+ uint64_t started_tracing_ns = *handle_desc.started_tracing_ns_;
+
+ if ((now_ns - started_tracing_ns) > GetPropertyTraceTimeoutNs()) {
+ LOG(WARNING) << "Perfetto Handle timed out after " << (now_ns - started_tracing_ns) << "ns"
+ << ", forcibly destroying";
+
+ // Let the callback handler call Destroy.
+ handle_desc.callback_(handle, State::kTraceFailed, handle_desc.callback_arg_);
+ }
+ }
+
+ // Second check. Are there too many traces now? Cull the old traces.
+ std::vector<HandleDescription> handle_list;
+ do {
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ size_t max_trace_count = GetPropertyMaxTraceCount();
+ if (states_.size() > max_trace_count) {
+ size_t overflow_count = states_.size() - max_trace_count;
+ LOG(WARNING) << "Too many perfetto handles, overflowed by " << overflow_count
+ << ", pruning down to " << max_trace_count;
+ } else {
+ break;
+ }
+
+ size_t prune_count = states_.size() - max_trace_count;
+ auto it = states_.begin();
+ for (size_t i = 0; i < prune_count; ++i) {
+ // Simply prune by handle 1,2,3,4...
+ // We could do better with a timestamp if we wanted to.
+ ++it;
+ handle_list.push_back(it->second);
+ }
+ } while (false);
+
+ for (HandleDescription& handle_desc : handle_list) {
+ LOG(DEBUG) << "Perfetto handle pruned: " << static_cast<int64_t>(handle);
+
+ // Let the callback handler call Destroy.
+ handle_desc.callback_(handle, State::kTraceFailed, handle_desc.callback_arg_);
+ }
+ }
+
+ private:
+ static uint64_t GetPropertyTraceTimeoutNs() {
+ static uint64_t value = // property is timeout in seconds
+ ::android::base::GetUintProperty<uint64_t>("iorapd.perfetto.timeout", /*default*/10);
+ return value * kSecToNano;
+ }
+
+ static size_t GetPropertyMaxTraceCount() {
+ static size_t value =
+ ::android::base::GetUintProperty<size_t>("iorapd.perfetto.max_traces", /*default*/5);
+ return value;
+ }
+
+ void UpdateHandleDescription(/*inout*/HandleDescription* handle_desc, StateKind kind) {
+ CHECK(handle_desc != nullptr);
+ handle_desc->kind_ = kind;
+ handle_desc->state_ = raw_->PollState(handle_desc->handle_);
+
+ handle_desc->last_transition_ns_ = GetTimeNanoseconds();
+ if (kind == StateKind::kStartedTracing) {
+ if (!handle_desc->started_tracing_ns_) {
+ handle_desc->started_tracing_ns_ = handle_desc->last_transition_ns_;
+
+ handle_desc->trace_cookie_ = ++trace_cookie_;
+
+ atrace_async_begin(ATRACE_TAG_ACTIVITY_MANAGER,
+ "Perfetto Scoped Trace",
+ *handle_desc->trace_cookie_);
+ atrace_int(ATRACE_TAG_ACTIVITY_MANAGER,
+ "Perfetto::Trace Handle",
+ static_cast<int32_t>(handle_desc->handle_));
+ }
+ }
+
+ if (kind == StateKind::kReadTracing) {
+ if (!handle_desc->read_trace_ns_) {
+ handle_desc->read_trace_ns_ = handle_desc->last_transition_ns_;
+
+ if (handle_desc->trace_cookie_.has_value() && !handle_desc->trace_ended_) {
+ atrace_async_end(ATRACE_TAG_ACTIVITY_MANAGER,
+ "Perfetto Scoped Trace",
+ handle_desc->trace_cookie_.value());
+
+ handle_desc->trace_ended_ = true;
+ }
+ }
+ }
+
+ // If Destroy is called prior to ReadTrace, mark the atrace as finished.
+ if (kind == StateKind::kDestroyed && handle_desc->trace_cookie_ && !handle_desc->trace_ended_) {
+ atrace_async_end(ATRACE_TAG_ACTIVITY_MANAGER,
+ "Perfetto Scoped Trace",
+ *handle_desc->trace_cookie_);
+ handle_desc->trace_ended_ = true;
+ }
+ }
+
+ // The following state detection is for debugging only.
+ // We figure out if something is destroyed, uncreated, or live.
+
+ // Does not distinguish between kTimedOutDestroyed and kDestroyed.
+ bool IsDestroyed(Handle handle) const {
+ auto it = states_.find(handle);
+ if (it != states_.end()) {
+ // Tracked values are not destroyed yet.
+ return false;
+ }
+
+ if (handle == kInvalidHandle) {
+ return false;
+ }
+
+ // The following assumes handles are incrementally generated:
+ if (it == states_.end()) {
+ // value is in range of [0, last_destroyed] => destroyed.
+ return handle <= last_destroyed_;
+ }
+
+ auto min_it = states_.begin();
+ if (handle < min_it->first) {
+ // value smaller than anything tracked: it was destroyed and we stopped tracking it.
+ return true;
+ }
+
+ auto max_it = states_.rbegin();
+ if (handle > max_it->first) {
+ // value too big: it's uncreated;
+ return false;
+ }
+
+ // else it was a value that was previously tracked within [min,max] but no longer
+ return true;
+ }
+
+ bool IsUncreated(Handle handle) const {
+ auto it = states_.find(handle);
+ if (it != states_.end()) {
+ // Tracked values are not uncreated.
+ return false;
+ }
+
+ if (handle == kInvalidHandle) {
+ // Strangely enough, an invalid handle can never be created.
+ return true;
+ }
+
+ // The following assumes handles are incrementally generated:
+ if (it == states_.end()) {
+ // value is in range of (last_destroyed, inf) => uncreated.
+ return handle > last_destroyed_;
+ }
+
+ auto min_it = states_.begin();
+ if (handle < min_it->first) {
+ // value smaller than anything tracked: it was destroyed and we stopped tracking it.
+ return false;
+ }
+
+ auto max_it = states_.rbegin();
+ if (handle > max_it->first) {
+ // value too big: it's uncreated;
+ return true;
+ }
+
+ // else it was a value that was previously tracked within [min,max] but no longer
+ return false;
+ }
+
+ public:
+ void Dump(::android::Printer& printer) {
+ // Locking can fail if we dump during a deadlock, so just do a best-effort lock here.
+ bool is_it_locked = mutex_.try_lock();
+
+ printer.printFormatLine("Perfetto consumer state:");
+ if (!is_it_locked) {
+ printer.printLine(""""" (possible deadlock)");
+ }
+ printer.printFormatLine(" Last destroyed handle: %" PRId64, last_destroyed_);
+ printer.printFormatLine(" Last created handle: %" PRId64, last_created_);
+ printer.printFormatLine("");
+ printer.printFormatLine(" In-flight handles:");
+
+ for (auto it = states_.begin(); it != states_.end(); ++it) {
+ HandleDescription& handle_desc = it->second;
+ uint64_t started_tracing =
+ handle_desc.started_tracing_ns_ ? *handle_desc.started_tracing_ns_ : 0;
+ printer.printFormatLine(" Handle %" PRId64, handle_desc.handle_);
+ printer.printFormatLine(" Kind: %s", ToString(handle_desc.kind_).c_str());
+ printer.printFormatLine(" Perfetto State: %d", static_cast<int>(handle_desc.state_));
+ printer.printFormatLine(" Started tracing at: %" PRIu64, started_tracing);
+ printer.printFormatLine(" Last transition at: %" PRIu64,
+ handle_desc.last_transition_ns_);
+ }
+ if (states_.empty()) {
+ printer.printFormatLine(" (None)");
+ }
+
+ printer.printFormatLine("");
+
+ if (is_it_locked) { // u.b. if calling unlock on an unlocked mutex.
+ mutex_.unlock();
+ }
+ }
+
+ static PerfettoConsumerImpl::Impl* GetImplSingleton() {
+ static PerfettoConsumerImpl::Impl impl;
+ return &impl;
+ }
+};
+
+// Use a singleton because fruit instantiates a new PerfettoConsumer object for every
+// new rx chain in RxProducerFactory. However, we want to track all perfetto transitions globally
+// through 1 impl object.
+//
+// TODO: Avoiding a singleton would mean a more significant refactoring to remove the fruit/perfetto
+// usage.
+
+
+//
+// Forward all calls to PerfettoConsumerImpl::Impl
+//
+
+PerfettoConsumerImpl::~PerfettoConsumerImpl() {
+ // delete impl_; // TODO: no singleton
+}
+
+void PerfettoConsumerImpl::Initialize() {
+ // impl_ = new PerfettoConsumerImpl::Impl(); // TODO: no singleton
+ impl_ = PerfettoConsumerImpl::Impl::GetImplSingleton();
+}
+
+void PerfettoConsumerImpl::Dump(::android::Printer& printer) {
+ PerfettoConsumerImpl::Impl::GetImplSingleton()->Dump(/*borrow*/printer);
+}
+
+PerfettoConsumer::Handle PerfettoConsumerImpl::Create(const void* config_proto,
+ size_t config_len,
+ PerfettoConsumer::OnStateChangedCb callback,
+ void* callback_arg) {
+ return impl_->Create(config_proto,
+ config_len,
+ callback,
+ callback_arg);
+}
+
+void PerfettoConsumerImpl::StartTracing(PerfettoConsumer::Handle handle) {
+ impl_->StartTracing(handle);
+}
+
+PerfettoConsumer::TraceBuffer PerfettoConsumerImpl::ReadTrace(PerfettoConsumer::Handle handle) {
+ return impl_->ReadTrace(handle);
+}
+
+void PerfettoConsumerImpl::Destroy(PerfettoConsumer::Handle handle) {
+ impl_->Destroy(handle);
+}
+
+PerfettoConsumer::State PerfettoConsumerImpl::PollState(PerfettoConsumer::Handle handle) {
+ return impl_->PollState(handle);
+}
+
+} // namespace iorap::perfetto
diff --git a/src/perfetto/perfetto_consumer.h b/src/perfetto/perfetto_consumer.h
index ce04ffd..2d828c0 100644
--- a/src/perfetto/perfetto_consumer.h
+++ b/src/perfetto/perfetto_consumer.h
@@ -18,6 +18,10 @@
#include <fruit/fruit.h>
#include <perfetto/public/consumer_api.h> // libperfetto
+namespace android {
+class Printer;
+} // namespace android
+
namespace iorap::perfetto {
// Abstract out the Perfetto C API behind a virtual interface:
@@ -48,9 +52,9 @@ struct PerfettoConsumer {
};
// "Live" implementation that calls down to libperfetto.
-struct PerfettoConsumerImpl : public PerfettoConsumer {
+struct PerfettoConsumerRawImpl : public PerfettoConsumer {
// Marks this constructor as the one to use for injection.
- INJECT(PerfettoConsumerImpl()) = default;
+ INJECT(PerfettoConsumerRawImpl()) = default;
virtual Handle Create(const void* config_proto,
size_t config_len,
@@ -77,7 +81,32 @@ struct PerfettoConsumerImpl : public PerfettoConsumer {
return ::perfetto::consumer::PollState(handle);
}
- virtual ~PerfettoConsumerImpl() {}
+ virtual ~PerfettoConsumerRawImpl() {}
+};
+
+// "Safe" implementation that has extra checking around it.
+class PerfettoConsumerImpl : public PerfettoConsumer {
+ public:
+ // Marks this constructor as the one to use for injection.
+ INJECT(PerfettoConsumerImpl()) { Initialize(); }
+
+ virtual Handle Create(const void* config_proto,
+ size_t config_len,
+ OnStateChangedCb callback,
+ void* callback_arg) override;
+ virtual void StartTracing(Handle handle) override;
+ virtual TraceBuffer ReadTrace(Handle handle) override;
+ virtual void Destroy(Handle handle) override;
+ virtual State PollState(Handle handle) override;
+
+ virtual ~PerfettoConsumerImpl();
+
+ static void Dump(/*borrow*/::android::Printer& printer);
+
+ private:
+ void Initialize();
+ struct Impl;
+ PerfettoConsumerImpl::Impl* impl_;
};
} // namespace iorap::perfetto
diff --git a/src/perfetto/rx_producer.cc b/src/perfetto/rx_producer.cc
index 14311a1..824600c 100644
--- a/src/perfetto/rx_producer.cc
+++ b/src/perfetto/rx_producer.cc
@@ -83,7 +83,7 @@ PerfettoDependencies::Component PerfettoDependencies::CreateComponent() {
.bind<PerfettoConsumer, PerfettoConsumerImpl>()
.registerProvider([]() /* -> TraceConfig */ {
return CreateConfig(kTraceDurationMs,
- /*deferred_start*/true,
+ /*deferred_start*/false,
kBufferSize);
});
}
@@ -199,6 +199,12 @@ class StateChangedSubject {
using State = ::perfetto::consumer::State;
using Handle = ::perfetto::consumer::Handle;
+ // Static members to solve use-after-free bug.
+ // The object is accessed from not only perfetto thread, but also iorap
+ // thread. Use this global map to manage it.
+ static std::mutex state_subject_mutex_;
+ static std::unordered_map<Handle, StateChangedSubject*> state_subject_map_;
+
StateChangedSubject(const ::perfetto::protos::TraceConfig& trace_config,
rxcpp::subscriber<PerfettoStateChange> destination,
std::shared_ptr<PerfettoConsumer> perfetto_consumer)
@@ -391,7 +397,9 @@ class StateChangedSubject {
bound_.store(true); // seq_cst release.
}
- // Thread safety: Called by libperfetto background thread (same one every time).
+
+ // Called by libperfetto background thread (same one every time) and iorap
+ // thread.
static void CallbackOnStateChanged(Handle handle, State state, void* callback_arg) {
LOG(VERBOSE) << "CallbackOnStateChanged(handle=" << handle << ",state=" << state
<< ",callback_arg=" << callback_arg << ")";
@@ -399,24 +407,30 @@ class StateChangedSubject {
// Validate OnStateChanged callback invariants, guaranteed by libperfetto.
DCHECK_NE(handle, ::perfetto::consumer::kInvalidHandle);
- // Note: Perfetto guarantees this callback always occurs on the same thread,
- // so we don't need to do any extra thread synchronization here since we are only mutating
- // StateChangedSubject from within this function.
-
// TODO: the memory ordering guarantees should be explicitly specified in consumer_api.h:
// This isn't specific enough:
// "The callback will be invoked on an internal thread and must not block."
// However looking at the implementation it posts onto a single-thread task runner,
// so this must be the case.
- StateChangedSubject* state_subject = reinterpret_cast<StateChangedSubject*>(callback_arg);
// This current thread owns 'StateChangedSubject', no other threads must access it.
// Explicit synchronization is not necessary.
- if (!state_subject->OnStateChanged(handle, state)) {
- // Clean up the state tracker when we reach a terminal state.
- // This means that no future callbacks will occur anymore.
- delete state_subject;
+ {
+ std::lock_guard<std::mutex> guard(StateChangedSubject::state_subject_mutex_);
+ auto it = StateChangedSubject::state_subject_map_.find(handle);
+ // If the object is already deleted, do nothing.
+ if (it == StateChangedSubject::state_subject_map_.end()) {
+ return;
+ }
+
+ StateChangedSubject* state_subject = it->second;
+ if (!state_subject->OnStateChanged(handle, state)) {
+ // Clean up the state tracker when we reach a terminal state.
+ // This means that no future callbacks will occur anymore.
+ StateChangedSubject::state_subject_map_.erase(it);
+ delete state_subject;
+ }
}
}
@@ -447,6 +461,10 @@ class StateChangedSubject {
// of just being subject-like?
};
+std::mutex StateChangedSubject::state_subject_mutex_;
+std::unordered_map<::perfetto::consumer::Handle,
+ StateChangedSubject*> StateChangedSubject::state_subject_map_;
+
// Note: The states will be emitted on a separate thread, so e.g. #as_blocking()
// needs to be used to avoid dropping everything on the floor.
//
@@ -484,6 +502,11 @@ static auto /*[observable<State>, shared_ptr<PerfettoConsumerHandle>]*/
return;
}
+ {
+ std::lock_guard<std::mutex> guard(StateChangedSubject::state_subject_mutex_);
+ StateChangedSubject::state_subject_map_[handle] = state_subject.get();
+ }
+
std::shared_ptr<PerfettoConsumerHandle> safe_handle{
new PerfettoConsumerHandle{perfetto_consumer, handle}};
@@ -567,11 +590,63 @@ bool BinaryWireProtobuf<T>::WriteStringToFd(int fd) const {
return true;
}
+template <typename T>
+std::optional<BinaryWireProtobuf<T>> BinaryWireProtobuf<T>::ReadFullyFromFile(
+ const std::string& path,
+ bool follow_symlinks) {
+ std::vector<std::byte> data;
+
+ int flags = O_RDONLY | O_CLOEXEC | O_BINARY | (follow_symlinks ? 0 : O_NOFOLLOW);
+ android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(path.c_str(), flags)));
+ if (fd == -1) {
+ return std::nullopt;
+ }
+
+ if (ReadFdToString(fd.get(), /*out*/&data)) {
+ return BinaryWireProtobuf<T>{std::move(data)};
+ } else {
+ return std::nullopt;
+ }
+}
+
+template <typename T>
+bool BinaryWireProtobuf<T>::operator==(const BinaryWireProtobuf<T>& other) const {
+ if (data_.size() != other.data_.size()) {
+ return false;
+ }
+ return std::equal(data_.begin(), data_.end(), other.data_.begin());
+}
+
+template <typename T>
+bool BinaryWireProtobuf<T>::ReadFdToString(int fd, /*out*/std::vector<std::byte>* content) {
+ DCHECK(content != nullptr);
+
+ content->clear();
+
+ struct stat sb;
+ if (fstat(fd, /*out*/&sb) != -1 && sb.st_size > 0) {
+ content->reserve(sb.st_size);
+ }
+
+ char buf[BUFSIZ];
+ auto it = content->begin();
+ ssize_t n;
+ while ((n = TEMP_FAILURE_RETRY(read(fd, &buf[0], sizeof(buf)))) > 0) {
+ content->insert(it,
+ reinterpret_cast<std::byte*>(&buf[0]),
+ reinterpret_cast<std::byte*>(&buf[n]));
+
+ std::advance(/*inout*/it, static_cast<size_t>(n));
+
+ static_assert(sizeof(char) == sizeof(std::byte), "sanity check for reinterpret cast");
+ }
+ return (n == 0) ? true : false;
+}
+
// explicit template instantiation.
template struct BinaryWireProtobuf<::google::protobuf::MessageLite>;
// TODO: refactor this not to need the template instantiation.
-#if defined(__ANDROID__)
// Copy of the 2.6.18 kernel header (linux/ioprio.h)
#define IOPRIO_WHO_PROCESS (1)
@@ -584,7 +659,6 @@ template struct BinaryWireProtobuf<::google::protobuf::MessageLite>;
#define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
#define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK)
#define IOPRIO_PRIO_VALUE(class, data) (((class) << IOPRIO_CLASS_SHIFT) | data)
-#endif
static int ioprio_get(int which, int who) {
return syscall(SYS_ioprio_get, which, who);
diff --git a/src/perfetto/rx_producer.h b/src/perfetto/rx_producer.h
index f4c40b4..4e93f0d 100644
--- a/src/perfetto/rx_producer.h
+++ b/src/perfetto/rx_producer.h
@@ -51,10 +51,39 @@ struct PerfettoDependencies {
uint32_t buffer_size = 4096);
};
+namespace detail {
+ template <typename T>
+ struct concept_message_lite_base {
+ static_assert(std::is_base_of_v<::google::protobuf::MessageLite, T>,
+ "T must inherit from MessageLite");
+ using type = T;
+ };
+
+ template <typename T>
+ using concept_message_lite_base_t = typename concept_message_lite_base<T>::type;
+} // namespace detail
+
+/*
+ * In Android's version of libprotobuf, move-constructors are not generated.
+ * This results in a legitimate (~10sec per TracePacket being compiled) slowdown,
+ * so we need to avoid it everywhere.
+ *
+ * 1) Don't copy the protos, move them instead.
+ * 2) Use 'shared_ptr' because rxcpp won't compile with unique_ptr.
+ */
+template <typename T>
+using ProtobufPtr = std::shared_ptr<detail::concept_message_lite_base_t<const T>>;
+
+template <typename T>
+using ProtobufMutablePtr = std::shared_ptr<detail::concept_message_lite_base_t<T>>;
+
// This acts as a lightweight type marker so that we know what data has actually
// encoded under the hood.
template <typename T>
struct BinaryWireProtobuf {
+ static_assert(std::is_base_of_v<::google::protobuf::MessageLite, T>,
+ "T should be a base class of MessageLite");
+
std::vector<std::byte>& data() {
return data_;
}
@@ -78,13 +107,21 @@ struct BinaryWireProtobuf {
data_.data());
}
+ explicit BinaryWireProtobuf(std::vector<std::byte> data) : data_{std::move(data)} {
+ }
+
+ // You wouldn't want to accidentally copy a giant multi-megabyte chunk would you?
+ // BinaryWireProtobuf(const BinaryWireProtobuf& other) = delete; // FIXME: rx likes to copy.
+ BinaryWireProtobuf(const BinaryWireProtobuf& other) = default;
+ BinaryWireProtobuf(BinaryWireProtobuf&& other) = default;
+
// Important: Deserialization could fail, for example data is truncated or
// some minor disc corruption occurred.
template <typename U>
- std::optional<U> MaybeUnserialize() {
- U unencoded;
+ std::optional<ProtobufPtr<U>> MaybeUnserialize() {
+ ProtobufMutablePtr<U> unencoded{new U{}};
- if (!unencoded.ParseFromArray(data_.data(), data_.size())) {
+ if (!unencoded->ParseFromArray(data_.data(), data_.size())) {
return std::nullopt;
}
@@ -94,10 +131,20 @@ struct BinaryWireProtobuf {
bool WriteFullyToFile(const std::string& path,
bool follow_symlinks = false) const;
+ static std::optional<BinaryWireProtobuf<T>> ReadFullyFromFile(const std::string& path,
+ bool follow_symlinks = false);
+
+ bool operator==(const BinaryWireProtobuf<T>& other) const;
+ bool operator!=(const BinaryWireProtobuf<T>& other) const {
+ return !(*this == other);
+ }
+
private:
static bool CleanUpAfterFailedWrite(const std::string& path);
bool WriteStringToFd(int fd) const;
+ static bool ReadFdToString(int fd, /*out*/std::vector<std::byte>* data);
+
std::vector<std::byte> data_;
};
diff --git a/src/prefetcher/main.cc b/src/prefetcher/main.cc
new file mode 100644
index 0000000..94ba141
--- /dev/null
+++ b/src/prefetcher/main.cc
@@ -0,0 +1,190 @@
+// Copyright (C) 2019 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
+//
+// http://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 "common/debug.h"
+#include "common/loggers.h"
+#include "prefetcher/prefetcher_daemon.h"
+
+#include <android-base/parseint.h>
+#include <android-base/logging.h>
+
+#include <iostream>
+#include <optional>
+#include <string_view>
+#include <string>
+#include <vector>
+
+#include <signal.h>
+
+#if defined(IORAP_PREFETCHER_MAIN)
+
+namespace iorap::prefetcher {
+
+void Usage(char** argv) {
+ std::cerr << "Usage: " << argv[0] << " [--input-fd=#] [--output-fd=#]" << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Run the readahead daemon which can prefetch files given a command." << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Optional flags:" << std::endl;
+ std::cerr << " --help,-h Print this Usage." << std::endl;
+ std::cerr << " --input-fd,-if Input FD (default stdin)." << std::endl;
+ std::cerr << " --output-fd,-of Output FD (default stdout)." << std::endl;
+ std::cerr << " --use-sockets,-us Use AF_UNIX sockets (default off)." << std::endl;
+ std::cerr << " --command-format=[text|binary],-cf (default text)." << std::endl;
+ std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl;
+ std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl;
+ exit(1);
+}
+
+int Main(int argc, char** argv) {
+ // Go to system logcat + stderr when running from command line.
+ android::base::InitLogging(argv, iorap::common::StderrAndLogdLogger{android::base::SYSTEM});
+
+ bool wait_for_keystroke = false;
+ bool enable_verbose = false;
+
+ bool command_format_text = false; // false = binary.
+
+ int arg_input_fd = -1;
+ int arg_output_fd = -1;
+
+ std::vector<std::string> arg_input_filenames;
+ bool arg_use_sockets = false;
+
+ LOG(VERBOSE) << "argparse: argc=" << argc;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+ bool has_arg_next = (arg+1)<argc;
+ std::string arg_next = has_arg_next ? argv[arg+1] : "";
+
+ LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr;
+
+ if (argstr == "--help" || argstr == "-h") {
+ Usage(argv);
+ } else if (argstr == "--input-fd" || argstr == "-if") {
+ if (!has_arg_next) {
+ LOG(ERROR) << "--input-fd=<numeric-value>";
+ Usage(argv);
+ }
+ if (!::android::base::ParseInt(arg_next, /*out*/&arg_input_fd)) {
+ LOG(ERROR) << "--input-fd value must be numeric";
+ Usage(argv);
+ }
+ } else if (argstr == "--output-fd" || argstr == "-of") {
+ if (!has_arg_next) {
+ LOG(ERROR) << "--output-fd=<numeric-value>";
+ Usage(argv);
+ }
+ if (!::android::base::ParseInt(arg_next, /*out*/&arg_output_fd)) {
+ LOG(ERROR) << "--output-fd value must be numeric";
+ Usage(argv);
+ }
+ } else if (argstr == "--command-format=" || argstr == "-cf") {
+ if (!has_arg_next) {
+ LOG(ERROR) << "--command-format=text|binary";
+ Usage(argv);
+ }
+ if (arg_next == "text") {
+ command_format_text = true;
+ } else if (arg_next == "binary") {
+ command_format_text = false;
+ } else {
+ LOG(ERROR) << "--command-format must be one of {text,binary}";
+ Usage(argv);
+ }
+ } else if (argstr == "--use-sockets" || argstr == "-us") {
+ arg_use_sockets = true;
+ } else if (argstr == "--verbose" || argstr == "-v") {
+ enable_verbose = true;
+ } else if (argstr == "--wait" || argstr == "-w") {
+ wait_for_keystroke = true;
+ } else {
+ arg_input_filenames.push_back(argstr);
+ }
+ }
+
+ if (enable_verbose) {
+ android::base::SetMinimumLogSeverity(android::base::VERBOSE);
+
+ LOG(VERBOSE) << "Verbose check";
+ LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild;
+ } else {
+ android::base::SetMinimumLogSeverity(android::base::DEBUG);
+ }
+
+ LOG(VERBOSE) << "argparse: argc=" << argc;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+
+ LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr;
+ }
+
+ // Useful to attach a debugger...
+ // 1) $> iorap.cmd.readahead -w <args>
+ // 2) $> gdbclient <pid>
+ if (wait_for_keystroke) {
+ LOG(INFO) << "Self pid: " << getpid();
+
+ raise(SIGSTOP);
+ // LOG(INFO) << "Press any key to continue...";
+ // std::cin >> wait_for_keystroke;
+ }
+
+ // auto system_call = std::make_unique<SystemCallImpl>();
+ // TODO: mock readahead calls?
+ //
+ // Uncomment this if we want to leave the process around to inspect it from adb shell.
+ // sleep(100000);
+
+ int return_code = 0;
+
+ LOG(VERBOSE) << "Hello world";
+
+ if (arg_input_fd == -1) {
+ arg_input_fd = STDIN_FILENO;
+ }
+ if (arg_output_fd == -1) {
+ arg_output_fd = STDOUT_FILENO;
+ }
+
+ PrefetcherForkParameters params{};
+ params.input_fd = arg_input_fd;
+ params.output_fd = arg_output_fd;
+ params.format_text = command_format_text;
+ params.use_sockets = arg_use_sockets;
+
+ LOG(VERBOSE) << "main: Starting PrefetcherDaemon: "
+ << "input_fd=" << params.input_fd
+ << ",output_fd=" << params.output_fd;
+ {
+ PrefetcherDaemon daemon;
+ // Blocks until receiving an exit command.
+ daemon.Main(std::move(params));
+ }
+ LOG(VERBOSE) << "main: Terminating";
+
+ // 0 -> successfully executed all commands.
+ // 1 -> failed along the way (#on_error and also see the error logs).
+ return return_code;
+}
+
+} // namespace iorap::prefetcher
+
+int main(int argc, char** argv) {
+ return ::iorap::prefetcher::Main(argc, argv);
+}
+
+#endif // IORAP_PREFETCHER_MAIN
diff --git a/src/prefetcher/main_client.cc b/src/prefetcher/main_client.cc
new file mode 100644
index 0000000..ff7ee6d
--- /dev/null
+++ b/src/prefetcher/main_client.cc
@@ -0,0 +1,160 @@
+// Copyright (C) 2019 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
+//
+// http://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 "common/debug.h"
+#include "prefetcher/read_ahead.h"
+#include "prefetcher/task_id.h"
+
+#include <android-base/parseint.h>
+#include <android-base/logging.h>
+
+#include <iostream>
+#include <optional>
+#include <string_view>
+#include <string>
+#include <vector>
+
+#include <signal.h>
+#include <unistd.h>
+
+
+namespace iorap::prefetcher {
+
+static void UsageClient(char** argv) {
+ std::cerr << "UsageClient: " << argv[0] << " <path-to-compiled-trace.pb> [... pathN]" << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Run the readahead daemon which can prefetch files given a command." << std::endl;
+ std::cerr << "" << std::endl;
+ std::cerr << " Optional flags:" << std::endl;
+ std::cerr << " --help,-h Print this UsageClient." << std::endl;
+ std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl;
+ std::cerr << " --task-duration-ms,-tdm Set task duration (default: 0ms)." << std::endl;
+ std::cerr << " --use-sockets,-us Use AF_UNIX sockets (default: off)" << std::endl;
+ std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl;
+ exit(1);
+}
+
+int MainClient(int argc, char** argv) {
+ android::base::InitLogging(argv);
+ android::base::SetLogger(android::base::StderrLogger);
+
+ bool wait_for_keystroke = false;
+ bool enable_verbose = false;
+
+ bool command_format_text = false; // false = binary.
+
+ unsigned int arg_task_duration_ms = 10000;
+ std::vector<std::string> arg_input_filenames;
+ bool arg_use_sockets = false;
+
+ LOG(VERBOSE) << "argparse: argc=" << argc;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+ bool has_arg_next = (arg+1)<argc;
+ std::string arg_next = has_arg_next ? argv[arg+1] : "";
+
+ LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr;
+
+ if (argstr == "--help" || argstr == "-h") {
+ UsageClient(argv);
+ } else if (argstr == "--use-sockets" || argstr == "-us") {
+ arg_use_sockets = true;
+ } else if (argstr == "--verbose" || argstr == "-v") {
+ enable_verbose = true;
+ } else if (argstr == "--wait" || argstr == "-w") {
+ wait_for_keystroke = true;
+ } else if (argstr == "--task-duration-ms" || argstr == "-tdm") {
+ if (!has_arg_next) {
+ LOG(ERROR) << "--task-duration-ms: requires uint parameter";
+ UsageClient(argv);
+ } else if (!::android::base::ParseUint(arg_next, &arg_task_duration_ms)) {
+ LOG(ERROR) << "--task-duration-ms: requires non-negative parameter";
+ UsageClient(argv);
+ }
+ } else {
+ arg_input_filenames.push_back(argstr);
+ }
+ }
+
+ if (enable_verbose) {
+ android::base::SetMinimumLogSeverity(android::base::VERBOSE);
+
+ LOG(VERBOSE) << "Verbose check";
+ LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild;
+ } else {
+ android::base::SetMinimumLogSeverity(android::base::DEBUG);
+ }
+
+ LOG(VERBOSE) << "argparse: argc=" << argc;
+
+ for (int arg = 1; arg < argc; ++arg) {
+ std::string argstr = argv[arg];
+
+ LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr;
+ }
+
+ // Useful to attach a debugger...
+ // 1) $> iorap.cmd.readahead -w <args>
+ // 2) $> gdbclient <pid>
+ if (wait_for_keystroke) {
+ LOG(INFO) << "Self pid: " << getpid();
+
+ raise(SIGSTOP);
+ // LOG(INFO) << "Press any key to continue...";
+ // std::cin >> wait_for_keystroke;
+ }
+
+ // auto system_call = std::make_unique<SystemCallImpl>();
+ // TODO: mock readahead calls?
+ //
+ // Uncomment this if we want to leave the process around to inspect it from adb shell.
+ // sleep(100000);
+
+ int return_code = 0;
+
+ LOG(VERBOSE) << "Hello world";
+
+ ReadAhead read_ahead{arg_use_sockets}; // Don't count the time it takes to fork+exec.
+
+ size_t task_id_counter = 0;
+ for (const std::string& compiled_trace_path : arg_input_filenames) {
+ TaskId task_id{task_id_counter++, compiled_trace_path};
+
+ LOG(DEBUG) << "main: ReadAhead BeginTask: "
+ << "task_duration_ms=" << arg_task_duration_ms << ","
+ << task_id;
+
+ read_ahead.BeginTask(task_id);
+ usleep(arg_task_duration_ms*1000);
+
+ LOG(DEBUG) << "main: ReadAhead FinishTask: " << task_id;
+
+ read_ahead.FinishTask(task_id);
+ }
+ LOG(VERBOSE) << "main: Terminating";
+
+ // 0 -> successfully executed all commands.
+ // 1 -> failed along the way (#on_error and also see the error logs).
+ return return_code;
+}
+
+} // namespace iorap::prefetcher
+
+#if defined(IORAP_PREFETCHER_MAIN_CLIENT)
+int main(int argc, char** argv) {
+ return ::iorap::prefetcher::MainClient(argc, argv);
+}
+
+#endif // IORAP_PREFETCHER_MAIN_CLIENT
diff --git a/src/prefetcher/minijail.cc b/src/prefetcher/minijail.cc
new file mode 100644
index 0000000..df4b11b
--- /dev/null
+++ b/src/prefetcher/minijail.cc
@@ -0,0 +1,49 @@
+// Copyright (C) 2019 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
+//
+// http://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 "prefetcher/minijail.h"
+
+#include <android-base/logging.h>
+#include <libminijail.h>
+
+namespace iorap::prefetcher {
+
+static const char kSeccompFilePath[] = "/system/etc/seccomp_policy/iorap.prefetcherd.policy";
+
+bool MiniJail() {
+ /* no seccomp policy for this architecture */
+ if (access(kSeccompFilePath, R_OK) == -1) {
+ LOG(WARNING) << "No seccomp filter defined for this architecture.";
+ return true;
+ }
+
+ struct minijail* jail = minijail_new();
+ if (jail == NULL) {
+ LOG(WARNING) << "Failed to create minijail.";
+ return false;
+ }
+
+ minijail_no_new_privs(jail);
+ minijail_log_seccomp_filter_failures(jail);
+ minijail_use_seccomp_filter(jail);
+ minijail_parse_seccomp_filters(jail, kSeccompFilePath);
+ minijail_enter(jail);
+ minijail_destroy(jail);
+
+ LOG(DEBUG) << "minijail installed.";
+
+ return true;
+}
+
+}
diff --git a/src/prefetcher/minijail.h b/src/prefetcher/minijail.h
new file mode 100644
index 0000000..9caefe6
--- /dev/null
+++ b/src/prefetcher/minijail.h
@@ -0,0 +1,23 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef SRC_PREFETCHER_MINIJAIL_H
+#define SRC_PREFETCHER_MINIJAIL_H
+
+namespace iorap::prefetcher {
+// Install a minijail using seccomp_policy/prefetcherd.{ARCH}.policy file.
+bool MiniJail();
+}
+
+#endif // SRC_PREFETCHER_MINIJAIL_H
diff --git a/src/prefetcher/prefetcher_daemon.cc b/src/prefetcher/prefetcher_daemon.cc
new file mode 100644
index 0000000..f4b9087
--- /dev/null
+++ b/src/prefetcher/prefetcher_daemon.cc
@@ -0,0 +1,1367 @@
+// Copyright (C) 2019 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
+//
+// http://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 "prefetcher/minijail.h"
+#include "common/cmd_utils.h"
+#include "prefetcher/prefetcher_daemon.h"
+#include "prefetcher/session_manager.h"
+#include "prefetcher/session.h"
+
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+
+#include <deque>
+#include <iomanip>
+#include <string>
+#include <sstream>
+#include <vector>
+
+#include <fcntl.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/un.h>
+#include <unistd.h>
+
+namespace iorap::prefetcher {
+
+// Gate super-spammy IPC logging behind a property.
+// This is beyond merely annoying, enabling this logging causes prefetching to be about 1000x slower.
+static bool LogVerboseIpc() {
+ static bool initialized = false;
+ static bool verbose_ipc;
+
+ if (initialized == false) {
+ initialized = true;
+
+ verbose_ipc =
+ ::android::base::GetBoolProperty("iorapd.readahead.verbose_ipc", /*default*/false);
+ }
+
+ return verbose_ipc;
+}
+
+static const bool kInstallMiniJail =
+ ::android::base::GetBoolProperty("iorapd.readahead.minijail", /*default*/true);
+
+static constexpr const char kCommandFileName[] = "/system/bin/iorap.prefetcherd";
+
+static constexpr size_t kPipeBufferSize = 1024 * 1024; // matches /proc/sys/fs/pipe-max-size
+
+using ArgString = const char*;
+
+std::ostream& operator<<(std::ostream& os, ReadAheadKind ps) {
+ switch (ps) {
+ case ReadAheadKind::kFadvise:
+ os << "fadvise";
+ break;
+ case ReadAheadKind::kMmapLocked:
+ os << "mmap";
+ break;
+ case ReadAheadKind::kMlock:
+ os << "mlock";
+ break;
+ default:
+ os << "<invalid>";
+ }
+ return os;
+}
+
+std::ostream& operator<<(std::ostream& os, CommandChoice choice) {
+ switch (choice) {
+ case CommandChoice::kRegisterFilePath:
+ os << "kRegisterFilePath";
+ break;
+ case CommandChoice::kUnregisterFilePath:
+ os << "kUnregisterFilePath";
+ break;
+ case CommandChoice::kReadAhead:
+ os << "kReadAhead";
+ break;
+ case CommandChoice::kExit:
+ os << "kExit";
+ break;
+ case CommandChoice::kCreateSession:
+ os << "kCreateSession";
+ break;
+ case CommandChoice::kDestroySession:
+ os << "kDestroySession";
+ break;
+ case CommandChoice::kDumpSession:
+ os << "kDumpSession";
+ break;
+ case CommandChoice::kDumpEverything:
+ os << "kDumpEverything";
+ break;
+ case CommandChoice::kCreateFdSession:
+ os << "kCreateFdSession";
+ break;
+ default:
+ CHECK(false) << "forgot to handle this choice";
+ break;
+ }
+ return os;
+}
+
+std::ostream& operator<<(std::ostream& os, const Command& command) {
+ os << "Command{";
+ os << "choice=" << command.choice << ",";
+
+ bool has_session_id = true;
+ bool has_id = true;
+ switch (command.choice) {
+ case CommandChoice::kDumpEverything:
+ case CommandChoice::kExit:
+ has_session_id = false;
+ FALLTHROUGH_INTENDED;
+ case CommandChoice::kCreateFdSession:
+ case CommandChoice::kCreateSession:
+ case CommandChoice::kDestroySession:
+ case CommandChoice::kDumpSession:
+ has_id = false;
+ break;
+ default:
+ break;
+ }
+
+ if (has_session_id) {
+ os << "sid=" << command.session_id << ",";
+ }
+
+ if (has_id) {
+ os << "id=" << command.id << ",";
+ }
+
+ switch (command.choice) {
+ case CommandChoice::kRegisterFilePath:
+ os << "file_path=";
+
+ if (command.file_path) {
+ os << *(command.file_path);
+ } else {
+ os << "(nullopt)";
+ }
+ break;
+ case CommandChoice::kUnregisterFilePath:
+ break;
+ case CommandChoice::kReadAhead:
+ os << "read_ahead_kind=" << command.read_ahead_kind << ",";
+ os << "length=" << command.length << ",";
+ os << "offset=" << command.offset << ",";
+ break;
+ case CommandChoice::kExit:
+ break;
+ case CommandChoice::kCreateFdSession:
+ os << "fd=";
+ if (command.fd.has_value()) {
+ os << command.fd.value();
+ } else {
+ os << "(nullopt)";
+ }
+ os << ",";
+ FALLTHROUGH_INTENDED;
+ case CommandChoice::kCreateSession:
+ os << "description=";
+ if (command.file_path) {
+ os << "'" << *(command.file_path) << "'";
+ } else {
+ os << "(nullopt)";
+ }
+ break;
+ case CommandChoice::kDestroySession:
+ break;
+ case CommandChoice::kDumpSession:
+ break;
+ case CommandChoice::kDumpEverything:
+ break;
+ default:
+ CHECK(false) << "forgot to handle this choice";
+ break;
+ }
+
+ os << "}";
+
+ return os;
+}
+
+template <typename T>
+struct ParseResult {
+ T value;
+ char* next_token;
+ size_t stream_size;
+
+ ParseResult() : value{}, next_token{nullptr}, stream_size{} {
+ }
+
+ constexpr operator bool() const {
+ return next_token != nullptr;
+ }
+};
+
+// Very spammy: Keep it off by default. Set to true if changing this code.
+static constexpr bool kDebugParsingRead = false;
+
+#define DEBUG_PREAD if (kDebugParsingRead) LOG(VERBOSE) << "ParsingRead "
+
+
+
+// Parse a strong type T from a buffer stream.
+// If there's insufficient space left to parse the value, an empty ParseResult is returned.
+template <typename T>
+ParseResult<T> ParsingRead(char* stream, size_t stream_size) {
+ if (stream == nullptr) {
+ DEBUG_PREAD << "stream was null";
+ return {};
+ }
+
+ if constexpr (std::is_same_v<T, std::string>) {
+ ParseResult<uint32_t> length = ParsingRead<uint32_t>(stream, stream_size);
+
+ if (!length) {
+ DEBUG_PREAD << "could not find length";
+ // Not enough bytes left?
+ return {};
+ }
+
+ ParseResult<std::string> string_result;
+ string_result.value.reserve(length);
+
+ stream = length.next_token;
+ stream_size = length.stream_size;
+
+ for (size_t i = 0; i < length.value; ++i) {
+ ParseResult<char> char_result = ParsingRead<char>(stream, stream_size);
+
+ stream = char_result.next_token;
+ stream_size = char_result.stream_size;
+
+ if (!char_result) {
+ DEBUG_PREAD << "too few chars in stream, expected length: " << length.value;
+ // Not enough bytes left?
+ return {};
+ }
+
+ string_result.value += char_result.value;
+
+ DEBUG_PREAD << "string preliminary is : " << string_result.value;
+ }
+
+ DEBUG_PREAD << "parsed string to: " << string_result.value;
+ string_result.next_token = stream;
+ return string_result;
+ } else {
+ if (sizeof(T) > stream_size) {
+ return {};
+ }
+
+ ParseResult<T> result;
+ result.next_token = stream + sizeof(T);
+ result.stream_size = stream_size - sizeof(T);
+
+ memcpy(&result.value, stream, sizeof(T));
+
+ return result;
+ }
+}
+
+// Convenience overload to chain multiple ParsingRead together.
+template <typename T, typename U>
+ParseResult<T> ParsingRead(ParseResult<U> result) {
+ return ParsingRead<T>(result.next_token, result.stream_size);
+}
+
+class CommandParser {
+ public:
+ CommandParser(PrefetcherForkParameters params) {
+ params_ = params;
+ }
+
+ std::vector<Command> ParseSocketCommands(bool& eof) {
+ eof = false;
+
+ std::vector<Command> commands_vec;
+
+ std::vector<char> buf_vector;
+ buf_vector.resize(1024*1024); // 1MB.
+ char* buf = &buf_vector[0];
+
+ // Binary only parsing. The higher level code can parse text
+ // with ifstream if it really wants to.
+ char* stream = &buf[0];
+ size_t stream_size = buf_vector.size();
+
+ while (true) {
+ if (stream_size == 0) {
+ // TODO: reply with an overflow command.
+ LOG(WARNING) << "prefetcher_daemon command overflow, dropping all commands.";
+ stream = &buf[0];
+ stream_size = buf_vector.size();
+ memset(&buf[0], /*c*/0, buf_vector.size());
+ }
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon block recvmsg for commands (fd=" << params_.input_fd << ")";
+ }
+
+ ssize_t count;
+ struct msghdr hdr;
+ memset(&hdr, 0, sizeof(hdr));
+
+ {
+ union {
+ struct cmsghdr cmh;
+ char control[CMSG_SPACE(sizeof(int))];
+ } control_un;
+ memset(&control_un, 0, sizeof(control_un));
+
+ /* Set 'control_un' to describe ancillary data that we want to receive */
+ control_un.cmh.cmsg_len = CMSG_LEN(sizeof(int)); /* fd is sizeof(int) */
+ control_un.cmh.cmsg_level = SOL_SOCKET;
+ control_un.cmh.cmsg_type = SCM_CREDENTIALS;
+
+ // the regular message data will be read into stream
+ struct iovec iov;
+ memset(&iov, 0, sizeof(iov));
+ iov.iov_base = stream;
+ iov.iov_len = stream_size;
+
+ /* Set hdr fields to describe 'control_un' */
+ hdr.msg_control = control_un.control;
+ hdr.msg_controllen = sizeof(control_un.control);
+ hdr.msg_iov = &iov;
+ hdr.msg_iovlen = 1;
+ hdr.msg_name = nullptr; /* no peer address */
+ hdr.msg_namelen = 0;
+
+ count = TEMP_FAILURE_RETRY(recvmsg(params_.input_fd, &hdr, /*flags*/0));
+ }
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon recvmsg " << count << " for stream size:" << stream_size;
+ }
+
+ if (count < 0) {
+ PLOG(ERROR) << "failed to recvmsg from input fd";
+ break;
+ // TODO: let the daemon be restarted by higher level code?
+ } else if (count == 0) {
+ LOG(WARNING) << "prefetcher_daemon input_fd end-of-file; terminating";
+ eof = true;
+ break;
+ // TODO: let the daemon be restarted by higher level code?
+ }
+
+ {
+ /* Extract fd from ancillary data if present */
+ struct cmsghdr* hp;
+ hp = CMSG_FIRSTHDR(&hdr);
+ if (hp &&
+ // FIXME: hp->cmsg_len returns an absurdly large value. is it overflowing?
+ // (hp->cmsg_len == CMSG_LEN(sizeof(int))) &&
+ (hp->cmsg_level == SOL_SOCKET) &&
+ (hp->cmsg_type == SCM_RIGHTS)) {
+
+ int passed_fd = *(int*) CMSG_DATA(hp);
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon received FD " << passed_fd;
+ }
+
+ // tack the FD into our dequeue.
+ // we assume the FDs are sent in-order same as the regular iov are sent in-order.
+ longbuf_fds_.insert(longbuf_fds_.end(), passed_fd);
+ } else if (hp != nullptr) {
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon::read got CMSG but it wasn't matching SCM_RIGHTS,"
+ << "cmsg_len=" << hp->cmsg_len << ","
+ << "cmsg_level=" << hp->cmsg_level << ","
+ << "cmsg_type=" << hp->cmsg_type;
+ }
+ }
+ }
+
+ longbuf_.insert(longbuf_.end(), stream, stream + count);
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon updated longbuf size: " << longbuf_.size();
+ }
+
+ // reconstruct a stream of [iov_Command chdr_fd?]* back into [Command]*
+ {
+ if (longbuf_.size() == 0) {
+ break;
+ }
+
+ std::vector<char> v(longbuf_.begin(),
+ longbuf_.end());
+
+ std::vector<int> v_fds{longbuf_fds_.begin(), longbuf_fds_.end()};
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon longbuf_ size: " << v.size();
+ if (WOULD_LOG(VERBOSE)) {
+ std::stringstream dump;
+ dump << std::hex << std::setfill('0');
+ for (size_t i = 0; i < v.size(); ++i) {
+ dump << std::setw(2) << static_cast<unsigned>(v[i]);
+ }
+
+ LOG(VERBOSE) << "PrefetcherDaemon longbuf_ dump: " << dump.str();
+ }
+ LOG(VERBOSE) << "PrefetcherDaemon longbuf_fds_ size: " << v_fds.size();
+ if (WOULD_LOG(VERBOSE)) {
+ std::stringstream dump;
+ for (size_t i = 0; i < v_fds.size(); ++i) {
+ dump << v_fds[i] << ", ";
+ }
+
+ LOG(VERBOSE) << "PrefetcherDaemon longbuf_fds_ dump: " << dump.str();
+ }
+
+ }
+
+ size_t v_fds_off = 0;
+ size_t consumed_fds_total = 0;
+
+ size_t v_off = 0;
+ size_t consumed_bytes = std::numeric_limits<size_t>::max();
+ size_t consumed_total = 0;
+
+ while (true) {
+ std::optional<Command> maybe_command;
+ maybe_command = Command::Read(&v[v_off], v.size() - v_off, &consumed_bytes);
+ consumed_total += consumed_bytes;
+ // Normal every time we get to the end of a buffer.
+ if (!maybe_command) {
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "failed to read command, v_off=" << v_off << ",v_size:" << v.size();
+ }
+ break;
+ }
+
+ if (maybe_command->RequiresFd()) {
+ if (v_fds_off < v_fds.size()) {
+ maybe_command->fd = v_fds[v_fds_off++];
+ consumed_fds_total++;
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "Append the FD to " << *maybe_command;
+ }
+ } else {
+ LOG(WARNING) << "Failed to acquire FD for " << *maybe_command;
+ }
+ }
+
+ // in the next pass ignore what we already consumed.
+ v_off += consumed_bytes;
+
+ // true as long we don't hit the 'break' above.
+ DCHECK_EQ(v_off, consumed_total);
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "success to read command, v_off=" << v_off << ",v_size:" << v.size()
+ << "," << *maybe_command;
+
+ // Pretty-print a single command for debugging/testing.
+ LOG(VERBOSE) << *maybe_command;
+ }
+
+ // add to the commands we parsed.
+ commands_vec.push_back(*maybe_command);
+ }
+
+ // erase however many were consumed
+ longbuf_.erase(longbuf_.begin(), longbuf_.begin() + consumed_total);
+
+ // erase however many FDs were consumed.
+ longbuf_fds_.erase(longbuf_fds_.begin(), longbuf_fds_.begin() + consumed_fds_total);
+ }
+ break;
+ }
+
+ return commands_vec;
+ }
+
+ std::vector<Command> ParseCommands(bool& eof) {
+ eof = false;
+
+ std::vector<Command> commands_vec;
+
+ std::vector<char> buf_vector;
+ buf_vector.resize(kPipeBufferSize);
+ char* buf = &buf_vector[0];
+
+ // Binary only parsing. The higher level code can parse text
+ // with ifstream if it really wants to.
+ char* stream = &buf[0];
+ size_t stream_size = buf_vector.size();
+
+ while (true) {
+ if (stream_size == 0) {
+ // TODO: reply with an overflow command.
+ LOG(WARNING) << "prefetcher_daemon command overflow, dropping all commands.";
+ stream = &buf[0];
+ stream_size = buf_vector.size();
+ memset(&buf[0], /*c*/0, buf_vector.size());
+ }
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon block read for commands (fd=" << params_.input_fd << ")";
+ }
+ ssize_t count = TEMP_FAILURE_RETRY(read(params_.input_fd, stream, stream_size));
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon::read " << count << " for stream size:" << stream_size;
+ }
+
+ if (count < 0) {
+ PLOG(ERROR) << "failed to read from input fd";
+ break;
+ // TODO: let the daemon be restarted by higher level code?
+ } else if (count == 0) {
+ LOG(WARNING) << "prefetcher_daemon input_fd end-of-file; terminating";
+ eof = true;
+ break;
+ // TODO: let the daemon be restarted by higher level code?
+ }
+
+ longbuf_.insert(longbuf_.end(), stream, stream + count);
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon updated longbuf size: " << longbuf_.size();
+ }
+
+ std::optional<Command> maybe_command;
+ {
+ if (longbuf_.size() == 0) {
+ break;
+ }
+
+ std::vector<char> v(longbuf_.begin(),
+ longbuf_.end());
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon longbuf_ size: " << v.size();
+ if (WOULD_LOG(VERBOSE)) {
+ std::stringstream dump;
+ dump << std::hex << std::setfill('0');
+ for (size_t i = 0; i < v.size(); ++i) {
+ dump << std::setw(2) << static_cast<unsigned>(v[i]);
+ }
+
+ LOG(VERBOSE) << "PrefetcherDaemon longbuf_ dump: " << dump.str();
+ }
+ }
+
+ size_t v_off = 0;
+ size_t consumed_bytes = std::numeric_limits<size_t>::max();
+ size_t consumed_total = 0;
+
+ while (true) {
+ maybe_command = Command::Read(&v[v_off], v.size() - v_off, &consumed_bytes);
+ consumed_total += consumed_bytes;
+ // Normal every time we get to the end of a buffer.
+ if (!maybe_command) {
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "failed to read command, v_off=" << v_off << ",v_size:" << v.size();
+ }
+ break;
+ }
+
+ // in the next pass ignore what we already consumed.
+ v_off += consumed_bytes;
+
+ // true as long we don't hit the 'break' above.
+ DCHECK_EQ(v_off, consumed_total);
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "success to read command, v_off=" << v_off << ",v_size:" << v.size()
+ << "," << *maybe_command;
+
+ // Pretty-print a single command for debugging/testing.
+ LOG(VERBOSE) << *maybe_command;
+ }
+
+ // add to the commands we parsed.
+ commands_vec.push_back(*maybe_command);
+ }
+
+ // erase however many were consumed
+ longbuf_.erase(longbuf_.begin(), longbuf_.begin() + consumed_total);
+ }
+ break;
+ }
+
+ return commands_vec;
+ }
+
+ private:
+ bool IsTextMode() const {
+ return params_.format_text;
+ }
+
+ PrefetcherForkParameters params_;
+
+ // A buffer long enough to contain a lot of buffers.
+ // This handles reads that only contain a partial command.
+ std::deque<char> longbuf_;
+
+ // File descriptor buffers.
+ std::deque<int> longbuf_fds_;
+};
+
+static constexpr bool kDebugCommandRead = true;
+
+#define DEBUG_READ if (kDebugCommandRead) LOG(VERBOSE) << "Command::Read "
+
+std::optional<Command> Command::Read(char* buf, size_t buf_size, /*out*/size_t* consumed_bytes) {
+ *consumed_bytes = 0;
+ if (buf == nullptr) {
+ return std::nullopt;
+ }
+
+ Command cmd{}; // zero-initialize any unused fields
+ ParseResult<CommandChoice> parsed_choice = ParsingRead<CommandChoice>(buf, buf_size);
+ cmd.choice = parsed_choice.value;
+
+ if (!parsed_choice) {
+ DEBUG_READ << "no choice";
+ return std::nullopt;
+ }
+
+ switch (parsed_choice.value) {
+ case CommandChoice::kRegisterFilePath: {
+ ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice);
+ if (!parsed_session_id) {
+ DEBUG_READ << "no parsed session id";
+ return std::nullopt;
+ }
+
+ ParseResult<uint32_t> parsed_id = ParsingRead<uint32_t>(parsed_session_id);
+ if (!parsed_id) {
+ DEBUG_READ << "no parsed id";
+ return std::nullopt;
+ }
+
+ ParseResult<std::string> parsed_file_path = ParsingRead<std::string>(parsed_id);
+
+ if (!parsed_file_path) {
+ DEBUG_READ << "no file path";
+ return std::nullopt;
+ }
+ *consumed_bytes = parsed_file_path.next_token - buf;
+
+ cmd.session_id = parsed_session_id.value;
+ cmd.id = parsed_id.value;
+ cmd.file_path = parsed_file_path.value;
+
+ break;
+ }
+ case CommandChoice::kUnregisterFilePath: {
+ ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice);
+ if (!parsed_session_id) {
+ DEBUG_READ << "no parsed session id";
+ return std::nullopt;
+ }
+
+ ParseResult<uint32_t> parsed_id = ParsingRead<uint32_t>(parsed_session_id);
+ if (!parsed_id) {
+ DEBUG_READ << "no parsed id";
+ return std::nullopt;
+ }
+ *consumed_bytes = parsed_id.next_token - buf;
+
+ cmd.session_id = parsed_session_id.value;
+ cmd.id = parsed_id.value;
+
+ break;
+ }
+ case CommandChoice::kReadAhead: {
+ ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice);
+ if (!parsed_session_id) {
+ DEBUG_READ << "no parsed session id";
+ return std::nullopt;
+ }
+
+ ParseResult<uint32_t> parsed_id = ParsingRead<uint32_t>(parsed_session_id);
+ if (!parsed_id) {
+ DEBUG_READ << "no parsed id";
+ return std::nullopt;
+ }
+
+ ParseResult<ReadAheadKind> parsed_kind = ParsingRead<ReadAheadKind>(parsed_id);
+ if (!parsed_kind) {
+ DEBUG_READ << "no parsed kind";
+ return std::nullopt;
+ }
+ ParseResult<uint64_t> parsed_length = ParsingRead<uint64_t>(parsed_kind);
+ if (!parsed_length) {
+ DEBUG_READ << "no parsed length";
+ return std::nullopt;
+ }
+ ParseResult<uint64_t> parsed_offset = ParsingRead<uint64_t>(parsed_length);
+ if (!parsed_offset) {
+ DEBUG_READ << "no parsed offset";
+ return std::nullopt;
+ }
+ *consumed_bytes = parsed_offset.next_token - buf;
+
+ cmd.session_id = parsed_session_id.value;
+ cmd.id = parsed_id.value;
+ cmd.read_ahead_kind = parsed_kind.value;
+ cmd.length = parsed_length.value;
+ cmd.offset = parsed_offset.value;
+
+ break;
+ }
+ case CommandChoice::kCreateSession:
+ case CommandChoice::kCreateFdSession: {
+ ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice);
+ if (!parsed_session_id) {
+ DEBUG_READ << "no parsed session id";
+ return std::nullopt;
+ }
+
+ ParseResult<std::string> parsed_description = ParsingRead<std::string>(parsed_session_id);
+
+ if (!parsed_description) {
+ DEBUG_READ << "no description";
+ return std::nullopt;
+ }
+ *consumed_bytes = parsed_description.next_token - buf;
+
+ cmd.session_id = parsed_session_id.value;
+ cmd.file_path = parsed_description.value;
+
+ break;
+ }
+ case CommandChoice::kDestroySession:
+ case CommandChoice::kDumpSession: {
+ ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice);
+ if (!parsed_session_id) {
+ DEBUG_READ << "no parsed session id";
+ return std::nullopt;
+ }
+
+ *consumed_bytes = parsed_session_id.next_token - buf;
+
+ cmd.session_id = parsed_session_id.value;
+
+ break;
+ }
+ case CommandChoice::kExit:
+ case CommandChoice::kDumpEverything:
+ *consumed_bytes = parsed_choice.next_token - buf;
+ // Only need to parse the choice.
+ break;
+ default:
+ LOG(FATAL) << "unrecognized command number " << static_cast<uint32_t>(parsed_choice.value);
+ break;
+ }
+
+ return cmd;
+}
+
+bool Command::Write(char* buf, size_t buf_size, /*out*/size_t* produced_bytes) const {
+ *produced_bytes = 0;
+ if (buf == nullptr) {
+ LOG(WARNING) << "null buf, is this expected?";
+ return false;
+ }
+
+ bool has_enough_space = false;
+ size_t space_requirement = std::numeric_limits<size_t>::max();
+
+ space_requirement = sizeof(choice);
+
+ switch (choice) {
+ case CommandChoice::kRegisterFilePath:
+ space_requirement += sizeof(session_id);
+ space_requirement += sizeof(id);
+ space_requirement += sizeof(uint32_t); // string length
+
+ if (!file_path) {
+ LOG(WARNING) << "Missing file path for kRegisterFilePath";
+ return false;
+ }
+
+ space_requirement += file_path->size(); // string contents
+ break;
+ case CommandChoice::kUnregisterFilePath:
+ space_requirement += sizeof(session_id);
+ space_requirement += sizeof(id);
+ break;
+ case CommandChoice::kReadAhead:
+ space_requirement += sizeof(session_id);
+ space_requirement += sizeof(id);
+ space_requirement += sizeof(read_ahead_kind);
+ space_requirement += sizeof(length);
+ space_requirement += sizeof(offset);
+ break;
+ case CommandChoice::kCreateSession:
+ case CommandChoice::kCreateFdSession:
+ space_requirement += sizeof(session_id);
+ space_requirement += sizeof(uint32_t); // string length
+
+ if (!file_path) {
+ LOG(WARNING) << "Missing file path for kCreateSession";
+ return false;
+ }
+
+ space_requirement += file_path->size(); // string contents
+ break;
+ case CommandChoice::kDestroySession:
+ case CommandChoice::kDumpSession:
+ space_requirement += sizeof(session_id);
+ break;
+ case CommandChoice::kExit:
+ case CommandChoice::kDumpEverything:
+ // Only need space for the choice.
+ break;
+ default:
+ LOG(FATAL) << "unrecognized command number " << static_cast<uint32_t>(choice);
+ break;
+ }
+
+ if (buf_size < space_requirement) {
+ return false;
+ }
+
+ *produced_bytes = space_requirement;
+
+ // Always write out the choice.
+ size_t buf_offset = 0;
+
+ memcpy(&buf[buf_offset], &choice, sizeof(choice));
+ buf_offset += sizeof(choice);
+
+ switch (choice) {
+ case CommandChoice::kRegisterFilePath:
+ memcpy(&buf[buf_offset], &session_id, sizeof(session_id));
+ buf_offset += sizeof(session_id);
+ memcpy(&buf[buf_offset], &id, sizeof(id));
+ buf_offset += sizeof(id);
+
+ {
+ uint32_t string_length = static_cast<uint32_t>(file_path->size());
+ memcpy(&buf[buf_offset], &string_length, sizeof(string_length));
+ buf_offset += sizeof(string_length);
+ }
+
+ DCHECK(file_path.has_value());
+
+ memcpy(&buf[buf_offset], file_path->c_str(), file_path->size());
+ buf_offset += file_path->size();
+ break;
+ case CommandChoice::kUnregisterFilePath:
+ memcpy(&buf[buf_offset], &session_id, sizeof(session_id));
+ buf_offset += sizeof(session_id);
+ memcpy(&buf[buf_offset], &id, sizeof(id));
+ buf_offset += sizeof(id);
+ break;
+ case CommandChoice::kReadAhead:
+ memcpy(&buf[buf_offset], &session_id, sizeof(session_id));
+ buf_offset += sizeof(session_id);
+ memcpy(&buf[buf_offset], &id, sizeof(id));
+ buf_offset += sizeof(id);
+ memcpy(&buf[buf_offset], &read_ahead_kind, sizeof(read_ahead_kind));
+ buf_offset += sizeof(read_ahead_kind);
+ memcpy(&buf[buf_offset], &length, sizeof(length));
+ buf_offset += sizeof(length);
+ memcpy(&buf[buf_offset], &offset, sizeof(offset));
+ buf_offset += sizeof(offset);
+ break;
+ case CommandChoice::kCreateSession:
+ case CommandChoice::kCreateFdSession:
+ memcpy(&buf[buf_offset], &session_id, sizeof(session_id));
+ buf_offset += sizeof(session_id);
+
+ {
+ uint32_t string_length = static_cast<uint32_t>(file_path->size());
+ memcpy(&buf[buf_offset], &string_length, sizeof(string_length));
+ buf_offset += sizeof(string_length);
+ }
+
+ DCHECK(file_path.has_value());
+
+ memcpy(&buf[buf_offset], file_path->c_str(), file_path->size());
+ buf_offset += file_path->size();
+
+ DCHECK_EQ(buf_offset, space_requirement) << *this << ",file_path_size:" << file_path->size();
+ DCHECK_EQ(buf_offset, *produced_bytes) << *this;
+
+ break;
+ case CommandChoice::kDestroySession:
+ case CommandChoice::kDumpSession:
+ memcpy(&buf[buf_offset], &session_id, sizeof(session_id));
+ buf_offset += sizeof(session_id);
+ break;
+ case CommandChoice::kExit:
+ case CommandChoice::kDumpEverything:
+ // Only need to write out the choice.
+ break;
+ default:
+ LOG(FATAL) << "should have fallen out in the above switch"
+ << static_cast<uint32_t>(choice);
+ break;
+ }
+
+ DCHECK_EQ(buf_offset, space_requirement) << *this;
+ DCHECK_EQ(buf_offset, *produced_bytes) << *this;
+
+ return true;
+}
+
+class PrefetcherDaemon::Impl {
+ public:
+ std::optional<PrefetcherForkParameters> StartPipesViaFork() {
+ int pipefds[2];
+ if (pipe(&pipefds[0]) != 0) {
+ PLOG(FATAL) << "Failed to create read/write pipes";
+ }
+
+ if (WOULD_LOG(VERBOSE)) {
+ long pipe_size = static_cast<long>(fcntl(pipefds[0], F_GETPIPE_SZ));
+ if (pipe_size < 0) {
+ PLOG(ERROR) << "Failed to F_GETPIPE_SZ:";
+ }
+ LOG(VERBOSE) << "StartPipesViaFork: default pipe size: " << pipe_size;
+ }
+
+ for (int i = 0; i < 2; ++i) {
+ // Default pipe size is usually 64KB.
+ // Increase to 1MB so that iorapd has to rarely run during prefetching.
+ if (fcntl(pipefds[i], F_SETPIPE_SZ, kPipeBufferSize) < 0) {
+ PLOG(FATAL) << "Failed to increase pipe size to max";
+ }
+ }
+
+ pipefd_read_ = pipefds[0];
+ pipefd_write_ = pipefds[1];
+
+ PrefetcherForkParameters params;
+ params.input_fd = pipefd_read_;
+ params.output_fd = pipefd_write_;
+ params.format_text = false;
+ params.use_sockets = false;
+
+ bool res = StartViaFork(params);
+ if (res) {
+ return params;
+ } else {
+ return std::nullopt;
+ }
+ }
+
+std::optional<PrefetcherForkParameters> StartSocketViaFork() {
+ int socket_fds[2];
+ if (socketpair(AF_UNIX, SOCK_STREAM, /*protocol*/0, &socket_fds[0]) != 0) {
+ PLOG(FATAL) << "Failed to create read/write socketpair";
+ }
+
+ pipefd_read_ = socket_fds[0]; // iorapd writer, iorap.prefetcherd reader
+ pipefd_write_ = socket_fds[1]; // iorapd reader, iorap.prefetcherd writer
+
+ PrefetcherForkParameters params;
+ params.input_fd = pipefd_read_;
+ params.output_fd = pipefd_write_;
+ params.format_text = false;
+ params.use_sockets = true;
+
+ bool res = StartViaFork(params);
+ if (res) {
+ return params;
+ } else {
+ return std::nullopt;
+ }
+ }
+
+ bool StartViaFork(PrefetcherForkParameters params) {
+ params_ = params;
+
+ forked_ = true;
+ child_ = fork();
+
+ if (child_ == -1) {
+ LOG(FATAL) << "Failed to fork PrefetcherDaemon";
+ } else if (child_ > 0) { // we are the caller of this function
+ LOG(DEBUG) << "forked into iorap.prefetcherd, pid = " << child_;
+
+ return true;
+ } else {
+ // we are the child that was forked.
+ std::stringstream argv; // for logging
+ std::vector<std::string> argv_vec;
+
+ {
+ std::stringstream s;
+ s << "--input-fd";
+ argv_vec.push_back(s.str());
+
+ std::stringstream s2;
+ s2 << params.input_fd;
+ argv_vec.push_back(s2.str());
+
+ argv << " --input-fd" << " " << params.input_fd;
+ }
+
+ {
+ std::stringstream s;
+ s << "--output-fd";
+ argv_vec.push_back(s.str());
+
+ std::stringstream s2;
+ s2 << params.output_fd;
+ argv_vec.push_back(s2.str());
+
+ argv << " --output-fd" << " " << params.output_fd;
+ }
+
+
+ if (params.use_sockets) {
+ std::stringstream s;
+ s << "--use-sockets";
+ argv_vec.push_back(s.str());
+
+ argv << " --use-sockets";
+ }
+
+ if (WOULD_LOG(VERBOSE)) {
+ std::stringstream s;
+ s << "--verbose";
+ argv_vec.push_back(s.str());
+
+ argv << " --verbose";
+ }
+
+ std::unique_ptr<ArgString[]> argv_ptr = common::VecToArgv(kCommandFileName, argv_vec);
+
+ LOG(DEBUG) << "fork+exec: " << kCommandFileName << " "
+ << argv.str();
+ execve(kCommandFileName, (char **)argv_ptr.get(), /*envp*/nullptr);
+ // This should never return.
+ _exit(EXIT_FAILURE);
+ }
+
+ DCHECK(false);
+ return false;
+ }
+
+ // TODO: Not very useful since this can never return 'true'
+ // -> in the child we would've already execd which loses all this code.
+ bool IsDaemon() {
+ // In the child the pid is always 0.
+ return child_ > 0;
+ }
+
+ bool Main(PrefetcherForkParameters params) {
+ LOG(VERBOSE) << "PrefetcherDaemon::Main " << params;
+
+ CommandParser command_parser{params};
+
+ Command next_command{};
+
+ std::vector<Command> many_commands;
+
+ // Ensure alogd is pre-initialized before installing minijail.
+ LOG(DEBUG) << "Installing minijail";
+
+ // Install seccomp filter using libminijail.
+ if (kInstallMiniJail) {
+ MiniJail();
+ }
+
+ while (true) {
+ bool eof = false;
+
+ if (params.use_sockets) {
+ // use recvmsg(2). supports receiving FDs.
+ many_commands = command_parser.ParseSocketCommands(/*out*/eof);
+ } else {
+ // use read(2). does not support receiving FDs.
+ many_commands = command_parser.ParseCommands(/*out*/eof);
+ }
+
+ if (eof) {
+ LOG(WARNING) << "PrefetcherDaemon got EOF, terminating";
+ return true;
+ }
+
+ for (auto& command : many_commands) {
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "PrefetcherDaemon got command: " << command;
+ }
+
+ if (command.choice == CommandChoice::kExit) {
+ LOG(DEBUG) << "PrefetcherDaemon got kExit command, terminating";
+ return true;
+ }
+
+ if (!ReceiveCommand(command)) {
+ // LOG(WARNING) << "PrefetcherDaemon command processing failure: " << command;
+ }
+
+ // ReceiveCommand should dup to keep the FD. Avoid leaks.
+ if (command.fd.has_value()) {
+ close(*command.fd);
+ }
+ }
+ }
+
+ LOG(VERBOSE) << "PrefetcherDaemon::Main got exit, terminating";
+
+ return true;
+ // Terminate.
+ }
+
+ Impl(PrefetcherDaemon* daemon) {
+ session_manager_ = SessionManager::CreateManager(SessionKind::kInProcessDirect);
+ DCHECK(session_manager_ != nullptr);
+ };
+
+ ~Impl() {
+ // Don't do anything if we never called 'StartViaFork'
+ if (forked_) {
+ if (!IsDaemon()) {
+ int status;
+ waitpid(child_, /*out*/&status, /*options*/0);
+ } else {
+ LOG(WARNING) << "execve should have avoided this path";
+ // DCHECK(false) << "not possible because the execve would avoid this path";
+ }
+ }
+ }
+
+ bool SendCommand(const Command& command) {
+ // Only parent is the sender.
+ DCHECK(forked_);
+ //DCHECK(!IsDaemon());
+
+ char buf[1024];
+ size_t stream_size;
+ if (!command.Write(buf, sizeof(buf), /*out*/&stream_size)) {
+ PLOG(ERROR) << "Failed to serialize command: " << command;
+ return false;
+ }
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "pre-write(fd=" << pipefd_write_ << ", buf=" << buf
+ << ", size=" << stream_size<< ")";
+ }
+
+ if (params_.use_sockets) {
+ /* iov contains the normal message (Command) */
+ struct iovec iov;
+ memset(&iov, 0, sizeof(iov));
+ iov.iov_base = &buf[0];
+ iov.iov_len = stream_size;
+
+ struct msghdr msg;
+ memset(&msg, 0, sizeof(msg));
+
+ /* point to iov to transmit */
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+
+ /* no dest address; socket is connected */
+ msg.msg_name = nullptr;
+ msg.msg_namelen = 0;
+
+ // append a CMSG with SCM_RIGHTS if we have an FD.
+ if (command.fd.has_value()) {
+ union {
+ struct cmsghdr cmh;
+ char control[CMSG_SPACE(sizeof(int))]; /* sized to hold an fd (int) */
+ } control_un;
+ memset(&control_un, 0, sizeof(control_un));
+
+ msg.msg_control = &control_un.control[0];
+ msg.msg_controllen = sizeof(control_un.control);
+
+ struct cmsghdr *hp;
+ hp = CMSG_FIRSTHDR(&msg);
+ hp->cmsg_len = CMSG_LEN(sizeof(int));
+ hp->cmsg_level = SOL_SOCKET;
+ hp->cmsg_type = SCM_RIGHTS;
+ *((int *) CMSG_DATA(hp)) = *(command.fd);
+
+ DCHECK(command.RequiresFd()) << command;
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "append FD to sendmsg: " << *(command.fd);
+ }
+ }
+
+ // TODO: add CMSG for the FD passage.
+
+ if (TEMP_FAILURE_RETRY(sendmsg(pipefd_write_, &msg, /*flags*/0)) < 0) {
+ PLOG(ERROR) << "Failed to sendmsg command: " << command;
+ return false;
+ }
+ } else {
+ if (TEMP_FAILURE_RETRY(write(pipefd_write_, buf, stream_size)) < 0) {
+ PLOG(ERROR) << "Failed to write command: " << command;
+ return false;
+ }
+ }
+
+ if (LogVerboseIpc()) {
+ LOG(VERBOSE) << "write(fd=" << pipefd_write_ << ", buf=" << buf
+ << ", size=" << stream_size<< ")";
+ }
+
+ // TODO: also read the reply?
+ return true;
+ }
+
+ bool ReceiveCommand(const Command& command) {
+ // Only child is the command receiver.
+ // DCHECK(IsDaemon());
+
+ switch (command.choice) {
+ case CommandChoice::kRegisterFilePath: {
+ std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id);
+
+ if (!session) {
+ LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command;
+ return false;
+ }
+
+ CHECK(command.file_path.has_value()) << command;
+ return session->RegisterFilePath(command.id, *command.file_path);
+ }
+ case CommandChoice::kUnregisterFilePath: {
+ std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id);
+
+ if (!session) {
+ LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command;
+ return false;
+ }
+
+ return session->UnregisterFilePath(command.id);
+ }
+ case CommandChoice::kReadAhead: {
+ std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id);
+
+ if (!session) {
+ LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command;
+ return false;
+ }
+
+ return session->ReadAhead(command.id, command.read_ahead_kind, command.length, command.offset);
+ }
+ // TODO: unreadahead
+ case CommandChoice::kExit: {
+ LOG(WARNING) << "kExit should be handled earlier.";
+ return true;
+ }
+ case CommandChoice::kCreateSession: {
+ std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id);
+ if (session != nullptr) {
+ LOG(ERROR) << "ReceiveCommand: session for ID already exists: " << command;
+ return false;
+ }
+ CHECK(command.file_path.has_value()) << command;
+ if (session_manager_->CreateSession(command.session_id, /*description*/*command.file_path)
+ == nullptr) {
+ LOG(ERROR) << "ReceiveCommand: Failure to kCreateSession: " << command;
+ return false;
+ }
+ return true;
+ }
+ case CommandChoice::kDestroySession: {
+ if (!session_manager_->DestroySession(command.session_id)) {
+ LOG(ERROR) << "ReceiveCommand: Failure to kDestroySession: " << command;
+ return false;
+ }
+ return true;
+ }
+ case CommandChoice::kDumpSession: {
+ std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id);
+
+ if (!session) {
+ LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command;
+ return false;
+ }
+
+ // TODO: Consider doing dumpsys support somehow?
+ session->Dump(LOG_STREAM(DEBUG), /*multiline*/true);
+ return true;
+ }
+ case CommandChoice::kDumpEverything: {
+ session_manager_->Dump(LOG_STREAM(DEBUG), /*multiline*/true);
+ break;
+ }
+ case CommandChoice::kCreateFdSession: {
+ std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id);
+ if (session != nullptr) {
+ LOG(ERROR) << "ReceiveCommand: session for ID already exists: " << command;
+ return false;
+ }
+ CHECK(command.file_path.has_value()) << command;
+ CHECK(command.fd.has_value()) << command;
+
+ LOG(VERBOSE) << "ReceiveCommand: kCreateFdSession fd=" << *(command.fd);
+
+ // TODO: Maybe use CreateFdSession instead?
+ session =
+ session_manager_->CreateSession(command.session_id,
+ /*description*/*command.file_path,
+ command.fd.value());
+ if (session == nullptr) {
+ LOG(ERROR) << "ReceiveCommand: Failure to kCreateFdSession: " << command;
+ return false;
+ }
+
+ return session->ProcessFd(*command.fd);
+ }
+ }
+
+ return true;
+ }
+
+ pid_t child_;
+ bool forked_;
+ int pipefd_read_;
+ int pipefd_write_;
+ PrefetcherForkParameters params_;
+ // do not ever use an indirect session manager here, as it would cause a lifetime cycle.
+ std::unique_ptr<SessionManager> session_manager_; // direct only.
+};
+
+PrefetcherDaemon::PrefetcherDaemon()
+ : impl_{new Impl{this}} {
+ LOG(VERBOSE) << "PrefetcherDaemon() constructor";
+}
+
+bool PrefetcherDaemon::StartViaFork(PrefetcherForkParameters params) {
+ return impl_->StartViaFork(std::move(params));
+}
+
+
+std::optional<PrefetcherForkParameters> PrefetcherDaemon::StartPipesViaFork() {
+ return impl_->StartPipesViaFork();
+}
+
+std::optional<PrefetcherForkParameters> PrefetcherDaemon::StartSocketViaFork() {
+ return impl_->StartSocketViaFork();
+}
+
+bool PrefetcherDaemon::Main(PrefetcherForkParameters params) {
+ return impl_->Main(params);
+}
+
+bool PrefetcherDaemon::SendCommand(const Command& command) {
+ return impl_->SendCommand(command);
+}
+
+PrefetcherDaemon::~PrefetcherDaemon() {
+ // required for unique_ptr for incomplete types.
+}
+
+} // namespace iorap::prefetcher
diff --git a/src/prefetcher/prefetcher_daemon.h b/src/prefetcher/prefetcher_daemon.h
new file mode 100644
index 0000000..693f871
--- /dev/null
+++ b/src/prefetcher/prefetcher_daemon.h
@@ -0,0 +1,130 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef PREFETCHER_DAEMON_H_
+#define PREFETCHER_DAEMON_H_
+
+#include "prefetcher/session_manager.h"
+
+#include <memory>
+#include <optional>
+#include <ostream>
+
+namespace iorap {
+namespace prefetcher {
+
+struct PrefetcherForkParameters {
+ int input_fd;
+ int output_fd;
+ bool use_sockets; // use the socket path instead of simpler read/write path.
+ bool format_text; // true=>text, false=>binary
+};
+
+inline std::ostream& operator<<(std::ostream& os, const PrefetcherForkParameters& p) {
+ os << "PrefetcherForkParameters{";
+ os << "input_fd=" << p.input_fd << ",";
+ os << "output_fd=" << p.output_fd << ",";
+ os << "format_text=" << p.format_text << ",";
+ os << "use_sockets=" << p.use_sockets << ",";
+ os << "}";
+ return os;
+}
+
+
+#ifndef READ_AHEAD_KIND
+enum class ReadAheadKind : uint32_t {
+ kFadvise = 0,
+ kMmapLocked = 1,
+ kMlock = 2,
+};
+#define READ_AHEAD_KIND 1
+#endif
+
+std::ostream& operator<<(std::ostream& os, ReadAheadKind k);
+
+enum class CommandChoice : uint32_t {
+ kRegisterFilePath, // kRegisterFilePath <sid:uint32> <id:uint32> <path:c-string>
+ kUnregisterFilePath, // kUnregisterFilePath <sid:uint32> <id:uint32>
+ kReadAhead, // kReadAhead <sid:uint32> <id:uint32> <kind:uint32_t> <length:uint64> <offset:uint64>
+ kExit, // kExit
+ kCreateSession, // kCreateSession <sid:uint32> <description:c-string>
+ kDestroySession, // kDestroySession <sid:uint32>
+ kDumpSession, // kDumpSession <sid:uint32>
+ kDumpEverything, // kDumpEverything
+ kCreateFdSession, // kCreateFdSession $CMSG{<fd:int>} <sid:uint32> <description:c-string>
+};
+
+struct Command {
+ CommandChoice choice;
+ uint32_t session_id;
+ uint32_t id; // file_path_id
+ std::optional<std::string> file_path; // required for choice=kRegisterFilePath.
+ // also serves as the description for choice=kCreateSession
+
+ // choice=kReadAhead
+ ReadAheadKind read_ahead_kind;
+ uint64_t length;
+ uint64_t offset;
+
+ std::optional<int> fd; // only valid in kCreateFdSession.
+
+ // Deserialize from a char buffer.
+ // This can only fail if buf_size is too small.
+ static std::optional<Command> Read(char* buf, size_t buf_size, /*out*/size_t* consumed_bytes);
+ // Serialize to a char buffer.
+ // This can only fail if the buf_size is too small.
+ bool Write(char* buf, size_t buf_size, /*out*/size_t* produced_bytes) const;
+
+ bool RequiresFd() const {
+ return choice == CommandChoice::kCreateFdSession;
+ }
+};
+
+std::ostream& operator<<(std::ostream& os, const Command& command);
+
+class PrefetcherDaemon {
+ public:
+ PrefetcherDaemon();
+ ~PrefetcherDaemon();
+
+ // Asynchronously launch a new fork.
+ //
+ // The destructor will waitpid automatically on the child process.
+ bool StartViaFork(PrefetcherForkParameters params);
+
+ // Launch a new fork , returning the pipes as input/output fds.
+ std::optional<PrefetcherForkParameters> StartPipesViaFork();
+
+ // Launch a new fork , returning the socket pair as input/output fds.
+ std::optional<PrefetcherForkParameters> StartSocketViaFork();
+
+ // Execute the main code in-process.
+ //
+ // Intended as the execve target.
+ bool Main(PrefetcherForkParameters params);
+
+ // Send a command via IPC.
+ // The caller must be the parent process after using StartViaFork.
+ bool SendCommand(const Command& command);
+
+ private:
+ class Impl;
+ std::unique_ptr<PrefetcherDaemon::Impl> impl_;
+};
+
+} // namespace prefetcher
+} // namespace iorap
+
+#endif
+
diff --git a/src/prefetcher/read_ahead.cc b/src/prefetcher/read_ahead.cc
new file mode 100644
index 0000000..164f2ff
--- /dev/null
+++ b/src/prefetcher/read_ahead.cc
@@ -0,0 +1,435 @@
+// Copyright (C) 2017 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
+//
+// http://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 "read_ahead.h"
+
+#include "common/trace.h"
+#include "prefetcher/session_manager.h"
+#include "prefetcher/session.h"
+#include "prefetcher/task_id.h"
+#include "serialize/arena_ptr.h"
+#include "serialize/protobuf_io.h"
+
+#include <android-base/chrono_utils.h>
+#include <android-base/logging.h>
+#include <android-base/scopeguard.h>
+#include <android-base/properties.h>
+#include <android-base/unique_fd.h>
+#include <cutils/trace.h>
+#include <deque>
+#include <fcntl.h>
+#include <functional>
+#include <stdint.h>
+#include <sys/mman.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unordered_map>
+#include <utils/Printer.h>
+
+namespace iorap {
+namespace prefetcher {
+
+enum class PrefetchStrategy {
+ kFadvise = 0,
+ kMmapLocked = 1,
+ kMlock = 2,
+};
+
+std::ostream& operator<<(std::ostream& os, PrefetchStrategy ps) {
+ switch (ps) {
+ case PrefetchStrategy::kFadvise:
+ os << "fadvise";
+ break;
+ case PrefetchStrategy::kMmapLocked:
+ os << "mmap";
+ break;
+ case PrefetchStrategy::kMlock:
+ os << "mlock";
+ break;
+ default:
+ os << "<invalid>";
+ }
+ return os;
+}
+
+static constexpr PrefetchStrategy kPrefetchStrategy = PrefetchStrategy::kFadvise;
+
+static PrefetchStrategy GetPrefetchStrategy() {
+ PrefetchStrategy strat = PrefetchStrategy::kFadvise;
+
+ std::string prefetch_env =
+ ::android::base::GetProperty("iorapd.readahead.strategy", /*default*/"");
+
+ if (prefetch_env == "") {
+ LOG(VERBOSE)
+ << "ReadAhead strategy defaulted. Did you want to set iorapd.readahead.strategy ?";
+ } else if (prefetch_env == "mmap") {
+ strat = PrefetchStrategy::kMmapLocked;
+ LOG(VERBOSE) << "ReadAhead strategy: kMmapLocked";
+ } else if (prefetch_env == "mlock") {
+ strat = PrefetchStrategy::kMlock;
+ LOG(VERBOSE) << "ReadAhead strategy: kMlock";
+ } else if (prefetch_env == "fadvise") {
+ strat = PrefetchStrategy::kFadvise;
+ LOG(VERBOSE) << "ReadAhead strategy: kFadvise";
+ } else {
+ LOG(WARNING) << "Unknown iorapd.readahead.strategy: " << prefetch_env << ", ignoring";
+ }
+
+ return strat;
+}
+
+struct TaskData {
+ TaskId task_id; // also the session ID.
+
+ size_t SessionId() const {
+ if (session != nullptr) {
+ DCHECK_EQ(session->SessionId(), task_id.id);
+ }
+
+ // good enough to be used as the session ID. Task IDs are always monotonically increasing.
+ return task_id.id;
+ }
+
+ std::shared_ptr<Session> session;
+ int32_t trace_cookie; // async trace cookie in BeginTask/FinishTask.
+};
+
+// Remember the last 5 files being prefetched.
+static constexpr size_t kRecentDataCount = 5;
+
+struct RecentData {
+ TaskId task_id;
+ size_t file_lengths_sum;
+};
+
+struct RecentDataKeeper {
+ std::deque<RecentData> recents_;
+ std::mutex mutex_;
+
+ void RecordRecent(TaskId task_id, size_t file_lengths_sum) {
+ std::lock_guard<std::mutex> guard{mutex_};
+
+ while (recents_.size() > kRecentDataCount) {
+ recents_.pop_front();
+ }
+ recents_.push_back(RecentData{std::move(task_id), file_lengths_sum});
+ }
+
+ void Dump(/*borrow*/::android::Printer& printer) {
+ bool locked = mutex_.try_lock();
+
+ printer.printFormatLine("Recent prefetches:");
+ if (!locked) {
+ printer.printLine(""""" (possible deadlock)");
+ }
+
+ for (const RecentData& data : recents_) {
+ printer.printFormatLine(" %s", data.task_id.path.c_str());
+ printer.printFormatLine(" Task ID: %zu", data.task_id.id);
+ printer.printFormatLine(" Bytes count: %zu", data.file_lengths_sum);
+ }
+
+ if (recents_.empty()) {
+ printer.printFormatLine(" (None)");
+ }
+
+ printer.printLine("");
+
+ if (locked) {
+ mutex_.unlock();
+ }
+ }
+};
+
+struct ReadAhead::Impl {
+ Impl(bool use_sockets) {
+ // Flip this property to test in-process vs out-of-process for the prefetcher code.
+ bool out_of_process =
+ ::android::base::GetBoolProperty("iorapd.readahead.out_of_process", /*default*/true);
+
+ SessionKind session_kind =
+ out_of_process ? SessionKind::kOutOfProcessIpc : SessionKind::kInProcessDirect;
+
+ if (use_sockets) {
+ session_kind = SessionKind::kOutOfProcessSocket;
+ }
+
+ session_manager_ = SessionManager::CreateManager(session_kind);
+ session_kind_ = session_kind;
+ }
+
+ std::unique_ptr<SessionManager> session_manager_;
+ SessionKind session_kind_;
+ std::unordered_map<size_t /*task index*/, TaskData> read_ahead_file_map_;
+ static RecentDataKeeper recent_data_keeper_;
+ int32_t trace_cookie_{0};
+
+ bool UseSockets() const {
+ return session_kind_ == SessionKind::kOutOfProcessSocket;
+ }
+};
+
+RecentDataKeeper ReadAhead::Impl::recent_data_keeper_{};
+
+ReadAhead::ReadAhead() : ReadAhead(/*use_sockets*/false) {
+}
+
+ReadAhead::ReadAhead(bool use_sockets) : impl_(new Impl(use_sockets)) {
+}
+
+ReadAhead::~ReadAhead() {}
+
+static bool PerformReadAhead(std::shared_ptr<Session> session, size_t path_id, ReadAheadKind kind, size_t length, size_t offset) {
+ return session->ReadAhead(path_id, kind, length, offset);
+}
+
+void ReadAhead::FinishTask(const TaskId& id) {
+ auto it = impl_->read_ahead_file_map_.find(id.id);
+ if (it == impl_->read_ahead_file_map_.end()) {
+ LOG(DEBUG) << "Could not find any TaskData for " << id;
+ return;
+ }
+
+ TaskData& task_data = it->second;
+ atrace_async_end(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ReadAhead Task Scope (for File Descriptors)",
+ task_data.trace_cookie);
+
+ auto deleter = [&]() {
+ impl_->read_ahead_file_map_.erase(it);
+ };
+ auto scope_guard = android::base::make_scope_guard(deleter);
+ (void)scope_guard;
+
+ LOG(VERBOSE) << "ReadAhead (Finish)";
+
+ if (!impl_->session_manager_->DestroySession(task_data.SessionId())) {
+ LOG(WARNING) << "ReadAhead: Failed to destroy Session " << task_data.SessionId();
+ }
+}
+
+void ReadAhead::BeginTaskForSockets(const TaskId& id, int32_t trace_cookie) {
+ LOG(VERBOSE) << "BeginTaskForSockets: " << id;
+
+ // TODO: atrace.
+ android::base::Timer timer{};
+ android::base::Timer open_timer{};
+
+ int trace_file_fd_raw =
+ TEMP_FAILURE_RETRY(open(id.path.c_str(), /*flags*/O_RDONLY));
+
+ android::base::unique_fd trace_file_fd{trace_file_fd_raw};
+
+ if (!trace_file_fd.ok()) {
+ PLOG(ERROR) << "ReadAhead failed to open trace file: " << id.path;
+ return;
+ }
+
+ TaskData task_data;
+ task_data.task_id = id;
+ task_data.trace_cookie = trace_cookie;
+
+ std::shared_ptr<Session> session =
+ impl_->session_manager_->CreateSession(task_data.SessionId(),
+ /*description*/id.path,
+ trace_file_fd.get());
+ task_data.session = session;
+ CHECK(session != nullptr);
+
+ task_data.trace_cookie = ++trace_cookie;
+
+ // TODO: maybe getprop and a single line by default?
+ session->Dump(LOG_STREAM(INFO), /*multiline*/true);
+
+ impl_->read_ahead_file_map_[id.id] = std::move(task_data);
+ // FinishTask is identical, as it just destroys the session.
+}
+
+void ReadAhead::BeginTask(const TaskId& id) {
+ {
+ struct timeval now;
+ gettimeofday(&now, nullptr);
+
+ uint64_t now_usec = (now.tv_sec * 1000000LL + now.tv_usec);
+ LOG(DEBUG) << "BeginTask: beginning usec: " << now_usec;
+ }
+
+ int32_t trace_cookie = ++impl_->trace_cookie_;
+ atrace_async_begin(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ReadAhead Task Scope (for File Descriptors)",
+ trace_cookie);
+
+ if (impl_->UseSockets()) {
+ BeginTaskForSockets(id, trace_cookie);
+ return;
+ }
+
+ LOG(VERBOSE) << "BeginTask: " << id;
+
+ // TODO: atrace.
+ android::base::Timer timer{};
+
+ // TODO: refactor this code with SessionDirect::ProcessFd ?
+ TaskData task_data;
+ task_data.task_id = id;
+ task_data.trace_cookie = trace_cookie;
+
+ ScopedFormatTrace atrace_begin_task(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ReadAhead::BeginTask %s",
+ id.path.c_str());
+
+ // Include CreateSession above the Protobuf deserialization so that we can include
+ // the 'total_duration' as part of the Session dump (relevant when we use IPC mode only).
+ std::shared_ptr<Session> session =
+ impl_->session_manager_->CreateSession(task_data.SessionId(),
+ /*description*/id.path);
+
+ android::base::Timer open_timer{};
+
+ // XX: Should we rename all the 'Create' to 'Make', or rename the 'Make' to 'Create' ?
+ // Unfortunately make_unique, make_shared, etc is the standard C++ terminology.
+ serialize::ArenaPtr<serialize::proto::TraceFile> trace_file_ptr =
+ serialize::ProtobufIO::Open(id.path);
+
+ if (trace_file_ptr == nullptr) {
+ // TODO: distinguish between missing trace (this is OK, most apps wont have one)
+ // and a bad error.
+ LOG(DEBUG) << "ReadAhead could not start, missing trace file? " << id.path;
+ return;
+ }
+
+ task_data.session = session;
+ CHECK(session != nullptr);
+
+ ReadAheadKind kind = static_cast<ReadAheadKind>(GetPrefetchStrategy());
+
+ // TODO: The "Task[Id]" should probably be the one owning the trace file.
+ // When the task is fully complete, the task can be deleted and the
+ // associated arenas can go with them.
+
+ // TODO: we should probably have the file entries all be relative
+ // to the package path?
+
+ // Open every file in the trace index.
+ const serialize::proto::TraceFileIndex& index = trace_file_ptr->index();
+
+ size_t count_entries = 0;
+ {
+ ScopedFormatTrace atrace_register_file_paths(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ReadAhead::RegisterFilePaths %s",
+ id.path.c_str());
+ for (const serialize::proto::TraceFileIndexEntry& index_entry : index.entries()) {
+ LOG(VERBOSE) << "ReadAhead: found file entry: " << index_entry.file_name();
+
+ if (index_entry.id() < 0) {
+ LOG(WARNING) << "ReadAhead: Skip bad TraceFileIndexEntry, negative ID not allowed: "
+ << index_entry.id();
+ continue;
+ }
+
+ size_t path_id = index_entry.id();
+ const auto& path_file_name = index_entry.file_name();
+
+ if (!session->RegisterFilePath(path_id, path_file_name)) {
+ LOG(WARNING) << "ReadAhead: Failed to register file path: " << path_file_name;
+ } else {
+ ++count_entries;
+ }
+ }
+ }
+ LOG(VERBOSE) << "ReadAhead: Registered " << count_entries << " file paths";
+ std::chrono::milliseconds open_duration_ms = open_timer.duration();
+
+ LOG(DEBUG) << "ReadAhead: Opened file&headers in " << open_duration_ms.count() << "ms";
+
+ size_t length_sum = 0;
+ size_t entry_offset = 0;
+ {
+ ScopedFormatTrace atrace_perform_read_ahead(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ReadAhead::PerformReadAhead entries=%zu, path=%s",
+ count_entries,
+ id.path.c_str());
+
+ // Go through every trace entry and readahead every (file,offset,len) tuple.
+ const serialize::proto::TraceFileList& file_list = trace_file_ptr->list();
+ for (const serialize::proto::TraceFileEntry& file_entry : file_list.entries()) {
+ ++entry_offset;
+
+ if (file_entry.file_length() < 0 || file_entry.file_offset() < 0) {
+ LOG(WARNING) << "ReadAhead entry negative file length or offset, illegal: "
+ << "index_id=" << file_entry.index_id() << ", skipping";
+ continue;
+ }
+
+ // Attempt to perform readahead. This can generate more warnings dynamically.
+ if (!PerformReadAhead(session, file_entry.index_id(), kind, file_entry.file_length(), file_entry.file_offset())) {
+ // TODO: Do we need below at all? The always-on Dump already prints a % of failed entries.
+ // LOG(WARNING) << "Failed readahead, bad file length/offset in entry @ " << (entry_offset - 1);
+ }
+
+ length_sum += static_cast<size_t>(file_entry.file_length());
+ }
+ }
+
+ {
+ ScopedFormatTrace atrace_session_dump(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ReadAhead Session Dump entries=%zu",
+ entry_offset);
+ // TODO: maybe getprop and a single line by default?
+ session->Dump(LOG_STREAM(INFO), /*multiline*/true);
+ }
+
+ atrace_int(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ReadAhead Bytes Length",
+ static_cast<int32_t>(length_sum));
+
+ impl_->read_ahead_file_map_[id.id] = std::move(task_data);
+
+ ReadAhead::Impl::recent_data_keeper_.RecordRecent(id, length_sum);
+}
+
+void ReadAhead::Dump(::android::Printer& printer) {
+ ReadAhead::Impl::recent_data_keeper_.Dump(printer);
+}
+
+std::optional<size_t> ReadAhead::PrefetchSizeInBytes(const std::string& file_path) {
+ serialize::ArenaPtr<serialize::proto::TraceFile> trace_file_ptr =
+ serialize::ProtobufIO::Open(file_path);
+
+ if (trace_file_ptr == nullptr) {
+ LOG(WARNING) << "PrefetchSizeInBytes: bad file at " << file_path;
+ return std::nullopt;
+ }
+
+ size_t length_sum = 0;
+ const serialize::proto::TraceFileList& file_list = trace_file_ptr->list();
+ for (const serialize::proto::TraceFileEntry& file_entry : file_list.entries()) {
+
+ if (file_entry.file_length() < 0 || file_entry.file_offset() < 0) {
+ LOG(WARNING) << "ReadAhead entry negative file length or offset, illegal: "
+ << "index_id=" << file_entry.index_id() << ", skipping";
+ continue;
+ }
+
+ length_sum += static_cast<size_t>(file_entry.file_length());
+ }
+
+ return length_sum;
+}
+
+} // namespace prefetcher
+} // namespace iorap
+
diff --git a/src/prefetcher/read_ahead.h b/src/prefetcher/read_ahead.h
new file mode 100644
index 0000000..afc6ec8
--- /dev/null
+++ b/src/prefetcher/read_ahead.h
@@ -0,0 +1,63 @@
+// Copyright (C) 2017 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
+//
+// http://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.
+
+#ifndef PREFETCHER_READAHEAD_H_
+#define PREFETCHER_READAHEAD_H_
+
+#include <memory>
+#include <optional>
+
+namespace android {
+class Printer;
+} // namespace android
+
+namespace iorap {
+namespace prefetcher {
+
+struct TaskId;
+struct ReadAheadFileEntry;
+
+// Manage I/O readahead for a task.
+class ReadAhead {
+ struct Impl;
+ public:
+ // Process a task *now*. Currently will block until all readaheads have been
+ // issued for all entries in that task.
+ //
+ // Any memory mapped or file descriptors opened as a side effect must be
+ // cleaned up with #FinishTask.
+ void BeginTask(const TaskId& id);
+ // Complete a task, releasing any memory/file descriptors associated with it.
+ void FinishTask(const TaskId& id);
+
+ static void Dump(/*borrow*/::android::Printer& printer);
+
+ // Calculate the sum of file_lengths. Returns nullopt if the file path does not
+ // point to a valid compiled TraceFile.
+ static std::optional<size_t> PrefetchSizeInBytes(const std::string& file_path);
+
+ ReadAhead(bool use_sockets);
+
+ ReadAhead();
+ ~ReadAhead();
+ private:
+ void BeginTaskForSockets(const TaskId& id, int32_t trace_cookie);
+ std::unique_ptr<Impl> impl_;
+};
+
+} // namespace prefetcher
+} // namespace iorap
+
+#endif
+
diff --git a/src/prefetcher/session.cc b/src/prefetcher/session.cc
new file mode 100644
index 0000000..e998580
--- /dev/null
+++ b/src/prefetcher/session.cc
@@ -0,0 +1,724 @@
+// Copyright (C) 2019 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
+//
+// http://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 "session.h"
+
+#include "prefetcher/prefetcher_daemon.h"
+#include "prefetcher/task_id.h"
+#include "serialize/arena_ptr.h"
+#include "serialize/protobuf_io.h"
+
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+#include <android-base/unique_fd.h>
+#include <fcntl.h>
+#include <functional>
+#include <stdint.h>
+#include <sys/mman.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unordered_map>
+
+namespace iorap {
+namespace prefetcher {
+
+// Print per-entry details even if successful. Default-off, too spammy.
+static constexpr bool kLogVerboseReadAhead = false;
+
+std::ostream& operator<<(std::ostream& os, const Session& session) {
+ session.Dump(os, /*multiline*/false);
+ return os;
+}
+
+Session::Session() {
+}
+
+void SessionBase::Dump(std::ostream& os, bool multiline) const {
+ if (!multiline) {
+ os << "Session{";
+ os << "session_id=" << SessionId();
+ os << "}";
+ return;
+ } else {
+ os << "Session (id=" << SessionId() << ")" << std::endl;
+ return;
+ }
+}
+
+SessionBase::SessionBase(size_t session_id, std::string description)
+ : session_id_{session_id}, description_{description} {
+}
+
+std::optional<std::string_view> SessionBase::GetFilePath(size_t path_id) const {
+ auto it = path_map_.find(path_id);
+ if (it != path_map_.end()) {
+ return {it->second};
+ } else {
+ return std::nullopt;
+ }
+}
+
+bool SessionBase::RemoveFilePath(size_t path_id) {
+ auto it = path_map_.find(path_id);
+ if (it != path_map_.end()) {
+ path_map_.erase(it);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool SessionBase::InsertFilePath(size_t path_id, std::string file_path) {
+ path_map_.insert({path_id, std::move(file_path)});
+ return true;
+}
+
+bool SessionBase::ProcessFd(int fd) {
+ // Only SessionDirect has an implementation of this.
+ // TODO: Maybe add a CommandChoice::kProcessFd ? instead of kCreateFdSession?
+ LOG(FATAL) << "SessionBase::ProcessFd is not implemented";
+
+ return false;
+}
+
+//
+// Direct
+//
+
+std::ostream& operator<<(std::ostream& os, const SessionDirect::Entry& entry) {
+ os << "Entry{";
+ os << "path_id=" << entry.path_id << ",";
+ os << "kind=" << static_cast<int>(entry.kind) << ",";
+ os << "length=" << entry.length << ",";
+ os << "offset=" << entry.offset << ",";
+ os << "}";
+
+ return os;
+}
+
+// Just in case the failures are slowing down performance, turn them off.
+// static constexpr bool kLogFailures = true;
+static constexpr bool kLogFailures = false;
+
+bool SessionDirect::RegisterFilePath(size_t path_id, std::string_view file_path) {
+ std::string file_path_str{file_path}; // no c_str for string_view.
+
+ auto fd = TEMP_FAILURE_RETRY(open(file_path_str.c_str(), O_RDONLY));
+ if (fd < 0) {
+ if (kLogFailures) {
+ PLOG(ERROR) << "Failed to register file path: " << file_path << ", id=" << path_id
+ << ", open(2) failed: ";
+ }
+ fd = android::base::unique_fd{}; // mark as 'bad' descriptor.
+ }
+
+ LOG(VERBOSE) << "RegisterFilePath path_id=" << path_id << ", file_path=" << file_path_str;
+
+ if (!InsertFilePath(path_id, std::move(file_path_str))) {
+ return false;
+ }
+
+ path_fd_map_.insert(std::make_pair(path_id, std::move(fd)));
+ DCHECK(entry_list_map_[path_id].empty());
+
+ return true;
+}
+
+
+bool SessionDirect::UnregisterFilePath(size_t path_id) {
+ if (!RemoveFilePath(path_id)) {
+ return false;
+ }
+
+ { // Scoped FD reference lifetime.
+ auto maybe_fd = GetFdForPath(path_id);
+
+ DCHECK(*maybe_fd != nullptr);
+ const android::base::unique_fd& entry_fd = **maybe_fd;
+
+ auto list = entry_list_map_[path_id];
+
+ for (const EntryMapping& entry_mapping : list) {
+ ReadAheadKind kind = entry_mapping.entry.kind;
+
+ switch (kind) {
+ case ReadAheadKind::kFadvise:
+ // Nothing to do.
+ break;
+ case ReadAheadKind::kMmapLocked:
+ FALLTHROUGH_INTENDED;
+ case ReadAheadKind::kMlock:
+ // Don't do any erases in the unregister file path to avoid paying O(n^2) erase cost.
+ UnmapWithoutErase(entry_mapping);
+ break;
+ }
+ }
+ }
+
+ auto it = entry_list_map_.find(path_id);
+ auto end = entry_list_map_.end();
+ DCHECK(it != end);
+ entry_list_map_.erase(it);
+
+ // Close the FD for this file path.
+ auto fd_it = path_fd_map_.find(path_id);
+ DCHECK(fd_it != path_fd_map_.end());
+ path_fd_map_.erase(fd_it);
+
+ return true;
+}
+
+// Note: return a pointer because optional doesn't hold references directly.
+std::optional<android::base::unique_fd*> SessionDirect::GetFdForPath(size_t path_id) {
+ auto it = path_fd_map_.find(path_id);
+ if (it == path_fd_map_.end()) {
+ return std::nullopt;
+ } else {
+ return &it->second;
+ }
+}
+
+bool SessionDirect::ReadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset) {
+ // Take by-reference so we can mutate list at the end.
+ auto& list = entry_list_map_[path_id];
+
+ Entry entry{path_id, kind, length, offset};
+ EntryMapping entry_mapping{entry, /*address*/nullptr, /*success*/false};
+
+ bool success = true;
+
+ auto maybe_fd = GetFdForPath(path_id);
+ if (!maybe_fd) {
+ LOG(ERROR) << "SessionDirect: Failed to find FD for path_id=" << path_id;
+ return false;
+ }
+
+ DCHECK(*maybe_fd != nullptr);
+ const android::base::unique_fd& entry_fd = **maybe_fd;
+
+ std::optional<std::string_view> file_name_opt = GetFilePath(path_id);
+ DCHECK(file_name_opt.has_value()); // if one map has it, all maps have it.
+ std::string_view file_name = *file_name_opt;
+
+ if (!entry_fd.ok()) {
+ LOG(VERBOSE) << "SessionDirect: No file descriptor for (path_id=" << path_id << ") "
+ << "path '" << file_name << "', failed to readahead entry.";
+ // Even failures get kept with success=false.
+ list.push_back(entry_mapping);
+ return false;
+ }
+
+ switch (kind) {
+ case ReadAheadKind::kFadvise:
+ if (posix_fadvise(entry_fd, offset, length, POSIX_FADV_WILLNEED) < 0) {
+ PLOG(ERROR) << "SessionDirect: Failed to fadvise entry " << file_name
+ << ", offset=" << offset << ", length=" << length;
+ success = false;
+ }
+ break;
+ case ReadAheadKind::kMmapLocked:
+ FALLTHROUGH_INTENDED;
+ case ReadAheadKind::kMlock: {
+ const bool need_mlock = kind == ReadAheadKind::kMlock;
+
+ int flags = MAP_SHARED;
+ if (!need_mlock) {
+ // MAP_LOCKED is a best-effort to lock the page. it could still be
+ // paged in later at a fault.
+ flags |= MAP_LOCKED;
+ }
+
+ entry_mapping.address =
+ mmap(/*addr*/nullptr, length, PROT_READ, flags, entry_fd, offset);
+
+ if (entry_mapping.address == nullptr) {
+ PLOG(ERROR) << "SessionDirect: Failed to mmap entry " << file_name
+ << ", offset=" << offset << ", length=" << length;
+ success = false;
+ break;
+ }
+
+ // Strong guarantee that page will be locked if mlock returns successfully.
+ if (need_mlock && mlock(entry_mapping.address, length) < 0) {
+ PLOG(ERROR) << "SessionDirect: Failed to mlock entry " << file_name
+ << ", offset=" << offset << ", length=" << length;
+ // We already have a mapping address, so we should add it to the list.
+ // However this didn't succeed 100% because the lock failed, so return false later.
+ success = false;
+ }
+ }
+ }
+
+ // Keep track of success so we know in Dump() what the number of failed entry mappings were.
+ entry_mapping.success = success;
+
+ // Keep track of this so that we can clean it up later in UnreadAhead.
+ list.push_back(entry_mapping);
+
+ if (entry_mapping.success) {
+ if (kLogVerboseReadAhead) {
+ LOG(VERBOSE) << "SessionDirect: ReadAhead for " << entry_mapping.entry;
+ }
+ } // else one of the errors above already did print.
+
+ return success;
+}
+
+bool SessionDirect::UnreadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset) {
+ Entry entry{path_id, kind, length, offset};
+
+ auto list = entry_list_map_[path_id];
+ if (list.empty()) {
+ return false;
+ }
+
+ std::optional<EntryMapping> entry_mapping;
+ size_t idx = 0;
+
+ for (size_t i = 0; i < list.size(); ++i) {
+ if (entry == list[i].entry) {
+ entry_mapping = list[i];
+ idx = 0;
+ break;
+ }
+ }
+
+ if (!entry_mapping) {
+ return false;
+ }
+
+ switch (kind) {
+ case ReadAheadKind::kFadvise:
+ // Nothing to do.
+ // TODO: maybe fadvise(RANDOM)?
+ return true;
+ case ReadAheadKind::kMmapLocked:
+ FALLTHROUGH_INTENDED;
+ case ReadAheadKind::kMlock:
+ UnmapWithoutErase(*entry_mapping);
+ return true;
+ }
+
+ list.erase(list.begin() + idx);
+
+ // FDs close only with UnregisterFilePath.
+ return true;
+}
+
+void SessionDirect::UnmapWithoutErase(const EntryMapping& entry_mapping) {
+ void* address = entry_mapping.address;
+ size_t length = entry_mapping.entry.length;
+
+ // munmap also unlocks. Do not need explicit munlock.
+ if (munmap(address, length) < 0) {
+ PLOG(WARNING) << "ReadAhead (Finish): Failed to munmap address: "
+ << address << ", length: " << length;
+ }
+
+}
+
+bool SessionDirect::ProcessFd(int fd) {
+ // TODO: the path is advisory, but it would still be cleaner to pass it separately
+ const char* fd_path = SessionDescription().c_str();
+
+ android::base::Timer open_timer{};
+ android::base::Timer total_timer{};
+
+ serialize::ArenaPtr<serialize::proto::TraceFile> trace_file_ptr =
+ serialize::ProtobufIO::Open(fd, fd_path);
+
+ if (trace_file_ptr == nullptr) {
+ LOG(ERROR) << "SessionDirect::ProcessFd failed, corrupted protobuf format? " << fd_path;
+ return false;
+ }
+
+ // TODO: maybe make it part of a kProcessFd type of command?
+ ReadAheadKind kind = ReadAheadKind::kFadvise;
+
+ // TODO: The "Task[Id]" should probably be the one owning the trace file.
+ // When the task is fully complete, the task can be deleted and the
+ // associated arenas can go with them.
+
+ // TODO: we should probably have the file entries all be relative
+ // to the package path?
+
+ // Open every file in the trace index.
+ const serialize::proto::TraceFileIndex& index = trace_file_ptr->index();
+
+ size_t count_entries = 0;
+ for (const serialize::proto::TraceFileIndexEntry& index_entry : index.entries()) {
+ LOG(VERBOSE) << "ReadAhead: found file entry: " << index_entry.file_name();
+
+ if (index_entry.id() < 0) {
+ LOG(WARNING) << "ReadAhead: Skip bad TraceFileIndexEntry, negative ID not allowed: "
+ << index_entry.id();
+ continue;
+ }
+
+ size_t path_id = index_entry.id();
+ const auto& path_file_name = index_entry.file_name();
+
+ if (!this->RegisterFilePath(path_id, path_file_name)) {
+ LOG(WARNING) << "ReadAhead: Failed to register file path: " << path_file_name;
+ ++count_entries;
+ }
+ }
+ LOG(VERBOSE) << "ReadAhead: Registered " << count_entries << " file paths";
+ std::chrono::milliseconds open_duration_ms = open_timer.duration();
+
+ LOG(DEBUG) << "ProcessFd: open+parsed headers in " << open_duration_ms.count() << "ms";
+
+ // Go through every trace entry and readahead every (file,offset,len) tuple.
+ size_t entry_offset = 0;
+ const serialize::proto::TraceFileList& file_list = trace_file_ptr->list();
+ for (const serialize::proto::TraceFileEntry& file_entry : file_list.entries()) {
+ ++entry_offset;
+
+ if (file_entry.file_length() < 0 || file_entry.file_offset() < 0) {
+ LOG(WARNING) << "ProcessFd entry negative file length or offset, illegal: "
+ << "index_id=" << file_entry.index_id() << ", skipping";
+ continue;
+ }
+
+ // Attempt to perform readahead. This can generate more warnings dynamically.
+ if (!this->ReadAhead(file_entry.index_id(),
+ kind,
+ file_entry.file_length(),
+ file_entry.file_offset())) {
+ if (kLogFailures) {
+ LOG(WARNING) << "Failed readahead, bad file length/offset in entry @ "
+ << (entry_offset - 1);
+ }
+ }
+ }
+
+ std::chrono::milliseconds total_duration_ms = total_timer.duration();
+ LOG(DEBUG) << "ProcessFd: total duration " << total_duration_ms.count() << "ms";
+
+ {
+ struct timeval now;
+ gettimeofday(&now, nullptr);
+
+ uint64_t now_usec = (now.tv_sec * 1000000LL + now.tv_usec);
+ LOG(DEBUG) << "ProcessFd: finishing usec: " << now_usec;
+ }
+
+ return true;
+}
+
+
+static bool IsDumpEveryEntry() {
+ // Set to 'true' to dump every single entry for debugging (multiline).
+ // Otherwise it only prints per-file-path summaries.
+ return ::android::base::GetBoolProperty("iorapd.readahead.dump_all", /*default*/false);
+}
+
+static bool IsDumpEveryPath() {
+ // Dump per-file-path (entry) stats. Defaults to on if the above property is on.
+ return ::android::base::GetBoolProperty("iorapd.readahead.dump_paths", /*default*/false);
+}
+
+void SessionDirect::Dump(std::ostream& os, bool multiline) const {
+ {
+ struct timeval now;
+ gettimeofday(&now, nullptr);
+
+ uint64_t now_usec = (now.tv_sec * 1000000LL + now.tv_usec);
+ LOG(DEBUG) << "SessionDirect::Dump: beginning usec: " << now_usec;
+ }
+
+ size_t path_count = entry_list_map_.size();
+
+ size_t read_ahead_entries = 0;
+ size_t read_ahead_bytes = 0;
+
+ size_t overall_entry_count = 0;
+ size_t overall_byte_count = 0;
+ for (auto it = entry_list_map_.begin(); it != entry_list_map_.end(); ++it) {
+ const auto& entry_mapping_list = it->second;
+
+ for (size_t j = 0; j < entry_mapping_list.size(); ++j) {
+ const EntryMapping& entry_mapping = entry_mapping_list[j];
+ const Entry& entry = entry_mapping.entry;
+
+ ++overall_entry_count;
+ overall_byte_count += entry.length;
+
+ if (entry_mapping.success) {
+ ++read_ahead_entries;
+ read_ahead_bytes += entry.length;
+ }
+ }
+ }
+
+ double overall_success_entry_rate =
+ read_ahead_entries * 100.0 / overall_entry_count;
+ double overall_success_byte_rate =
+ read_ahead_bytes * 100.0 / overall_byte_count;
+
+ size_t fd_count = path_fd_map_.size();
+ size_t good_fd_count = 0;
+ for (auto it = path_fd_map_.begin(); it != path_fd_map_.end(); ++it) {
+ if (it->second.ok()) {
+ ++good_fd_count;
+ }
+ }
+ double good_fd_rate = good_fd_count * 100.0 / fd_count;
+ // double bad_fd_rate = (fd_count - good_fd_count) * 1.0 / fd_count;
+
+ if (!multiline) {
+ os << "SessionDirect{";
+ os << "session_id=" << SessionId() << ",";
+
+ os << "file_paths=" << path_count << " (good: " << good_fd_rate << "),";
+ os << "read_ahead_entries=" << read_ahead_entries;
+ os << "(" << overall_success_entry_rate << "%),";
+ os << "read_ahead_bytes=" << read_ahead_bytes << "";
+ os << "(" << overall_success_byte_rate << "%),";
+ os << "timer=" << timer_.duration().count() << ",";
+
+ os << "}";
+ return;
+ } else {
+ // Always try to pay attention to these stats below.
+ // They can be signs of potential performance problems.
+ os << "Session Direct (id=" << SessionId() << ")" << std::endl;
+
+ os << " Summary: " << std::endl;
+ os << " Description = " << SessionDescription() << std::endl;
+ os << " Duration = " << timer_.duration().count() << "ms" << std::endl;
+ os << " Total File Paths=" << path_count << " (good: " << good_fd_rate << "%)" << std::endl;
+ os << " Total Entries=" << overall_entry_count;
+ os << " (good: " << overall_success_entry_rate << "%)" << std::endl;
+ os << " Total Bytes=" << overall_byte_count << "";
+ os << " (good: " << overall_success_byte_rate << "%)" << std::endl;
+ os << std::endl;
+
+ // Probably too spammy, but they could narrow down the issue for a problem in above stats.
+ if (!IsDumpEveryPath() && !IsDumpEveryEntry()) {
+ return;
+ }
+
+ for (auto it = entry_list_map_.begin(); it != entry_list_map_.end(); ++it) {
+ size_t path_id = it->first;
+ const auto& entry_mapping_list = it->second;
+
+ std::optional<std::string_view> file_path = GetFilePath(path_id);
+ os << " File Path (id=" << path_id << "): ";
+ if (file_path.has_value()) {
+ os << "'" << *file_path << "'";
+ } else {
+ os << "(nullopt)";
+ }
+
+ auto fd_it = path_fd_map_.find(path_id);
+ os << ", FD=";
+ if (fd_it != path_fd_map_.end()) {
+ const android::base::unique_fd& fd = fd_it->second;
+ os << fd.get(); // -1 for failed fd.
+ } else {
+ os << "(none)";
+ }
+ os << std::endl;
+
+ size_t total_entries = entry_mapping_list.size();
+ size_t total_bytes = 0;
+
+ size_t local_read_ahead_entries = 0;
+ size_t local_read_ahead_bytes = 0;
+ for (size_t j = 0; j < entry_mapping_list.size(); ++j) {
+ const EntryMapping& entry_mapping = entry_mapping_list[j];
+ const Entry& entry = entry_mapping.entry;
+
+ total_bytes += entry.length;
+
+ // Sidenote: Bad FDs will have 100% failed mappings.
+ // Good FDs may sometimes have failed mappings.
+ if (entry_mapping.success) {
+ ++local_read_ahead_entries;
+ local_read_ahead_bytes += entry.length;
+ }
+
+ if (IsDumpEveryEntry()) {
+ os << " Entry " << j << " details:" << std::endl;
+ os << " " << entry << std::endl;
+ os << " Mapping " << (entry_mapping.success ? "Succeeded" : "Failed")
+ << ", Address " << entry_mapping.address << std::endl;
+ }
+ }
+
+ double entry_success_rate = local_read_ahead_entries * 100.0 / total_entries;
+ double bytes_success_rate = local_read_ahead_bytes * 100.0 / total_bytes;
+
+ double entry_failure_rate = (total_entries - local_read_ahead_entries) * 100.0 / total_entries;
+ double bytes_failure_rate = (total_bytes - local_read_ahead_bytes) * 100.0 / total_bytes;
+
+ os << " Successful: Entries=" << local_read_ahead_entries
+ << " (" << entry_success_rate << "%)"
+ << ", Bytes=" << local_read_ahead_bytes
+ << " (" << bytes_success_rate << "%)"
+ << std::endl;
+ os << " Failed: Entries=" << (total_entries - local_read_ahead_entries)
+ << " (" << entry_failure_rate << "%)"
+ << ", Bytes=" << (total_bytes - local_read_ahead_bytes)
+ << " (" << bytes_failure_rate << "%)"
+ << std::endl;
+ os << " Total: Entries=" << total_entries
+ << ", Bytes=" << total_bytes
+ << std::endl;
+ }
+
+ return;
+ }
+}
+
+SessionDirect::~SessionDirect() {
+ for (auto it = entry_list_map_.begin(); it != entry_list_map_.end();) {
+ size_t path_id = it->first;
+
+ ++it; // the iterator is removed in the following Unregister method.
+ UnregisterFilePath(path_id);
+ }
+}
+
+//
+// Indirect
+//
+
+SessionIndirect::SessionIndirect(size_t session_id,
+ std::string description,
+ std::shared_ptr<PrefetcherDaemon> daemon,
+ bool send_command)
+ : SessionBase{session_id, description},
+ daemon_{daemon} {
+ // Don't do anything in e.g. subclasses.
+ if (!send_command) {
+ return;
+ }
+
+ Command cmd{};
+ cmd.choice = CommandChoice::kCreateSession;
+ cmd.session_id = session_id;
+ cmd.file_path = description;
+
+ LOG(VERBOSE) << "SessionIndirect: " << cmd;
+
+ if (!daemon_->SendCommand(cmd)) {
+ LOG(FATAL) << "SessionIndirect: Failure to create session " << session_id
+ << ", description: " << description;
+ }
+}
+
+SessionIndirect::~SessionIndirect() {
+ Command cmd{};
+ cmd.choice = CommandChoice::kDestroySession;
+ cmd.session_id = SessionId();
+
+ if (!daemon_->SendCommand(cmd)) {
+ LOG(WARNING) << "SessionIndirect: Failure to destroy session " << SessionId()
+ << ", description: " << SessionDescription();
+ }
+}
+
+void SessionIndirect::Dump(std::ostream& os, bool multiline) const {
+ // SessionBase::Dump(os, multiline);
+ // TODO: does having the local dump do anything for us?
+
+ Command cmd{};
+ cmd.choice = CommandChoice::kDumpSession;
+ cmd.session_id = SessionId();
+
+ daemon_->SendCommand(cmd);
+}
+
+bool SessionIndirect::RegisterFilePath(size_t path_id, std::string_view file_path) {
+ Command cmd{};
+ cmd.choice = CommandChoice::kRegisterFilePath;
+ cmd.session_id = SessionId();
+ cmd.id = path_id;
+ cmd.file_path = file_path;
+
+ return daemon_->SendCommand(cmd);
+}
+
+bool SessionIndirect::UnregisterFilePath(size_t path_id) {
+ Command cmd{};
+ cmd.choice = CommandChoice::kUnregisterFilePath;
+ cmd.session_id = SessionId();
+ cmd.id = path_id;
+
+ return daemon_->SendCommand(cmd);
+}
+bool SessionIndirect::ReadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset) {
+ Command cmd{};
+ cmd.choice = CommandChoice::kReadAhead;
+ cmd.session_id = SessionId();
+ cmd.id = path_id;
+ cmd.read_ahead_kind = kind;
+ cmd.length = length;
+ cmd.offset = offset;
+
+ return daemon_->SendCommand(cmd);
+}
+
+bool SessionIndirect::UnreadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset) {
+ LOG(WARNING) << "UnreadAhead: command not implemented yet";
+ return true;
+}
+
+//
+// IndirectSocket
+//
+
+SessionIndirectSocket::SessionIndirectSocket(size_t session_id,
+ int fd,
+ std::string description,
+ std::shared_ptr<PrefetcherDaemon> daemon)
+ : SessionIndirect{session_id, description, daemon, /*send_command*/false} {
+ // TODO: all of the WriteCommand etc in the daemon.
+ Command cmd{};
+ cmd.choice = CommandChoice::kCreateFdSession;
+ cmd.fd = fd;
+ cmd.session_id = session_id;
+ cmd.file_path = description;
+
+ LOG(VERBOSE) << "SessionIndirectSocket: " << cmd;
+
+ if (!daemon_->SendCommand(cmd)) {
+ LOG(FATAL) << "SessionIndirectSocket: Failure to create session " << session_id
+ << ", description: " << description;
+ }
+
+ // This goes into the SessionDirect ctor + SessionDirect::ProcessFd
+ // as implemented in PrefetcherDaemon::ReceiveCommand
+}
+
+SessionIndirectSocket::~SessionIndirectSocket() {
+}
+
+} // namespace prefetcher
+} // namespace iorap
diff --git a/src/prefetcher/session.h b/src/prefetcher/session.h
new file mode 100644
index 0000000..a4a9e6b
--- /dev/null
+++ b/src/prefetcher/session.h
@@ -0,0 +1,236 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef PREFETCHER_SESSION_H_
+#define PREFETCHER_SESSION_H_
+
+#include <android-base/chrono_utils.h>
+#include <android-base/unique_fd.h>
+
+#include <optional>
+#include <memory>
+#include <string>
+#include <string_view>
+#include <unordered_map>
+#include <vector>
+
+namespace iorap {
+namespace prefetcher {
+
+#ifndef READ_AHEAD_KIND
+#define READ_AHEAD_KIND 1
+enum class ReadAheadKind : uint32_t {
+ kFadvise = 0,
+ kMmapLocked = 1,
+ kMlock = 2,
+};
+#endif
+
+class Session {
+ public:
+ virtual bool RegisterFilePath(size_t path_id, std::string_view file_path) = 0;
+ virtual bool UnregisterFilePath(size_t path_id) = 0;
+
+ // Immediately perform a readahead now.
+ // Fadvise: the readahead will have been queued by the kernel.
+ // MmapLocked/Mlock: the memory is pinned by the requested process.
+ virtual bool ReadAhead(size_t path_id, ReadAheadKind kind, size_t length, size_t offset) = 0;
+
+ // Cancels a readahead previously done.
+ // The length/offset should match the call of ReadAhead.
+ virtual bool UnreadAhead(size_t path_id, ReadAheadKind kind, size_t length, size_t offset) = 0;
+
+ // Multi-line detailed dump, e.g. for dumpsys.
+ // Single-line summary dump, e.g. for logcat.
+ virtual void Dump(std::ostream& os, bool multiline) const = 0;
+
+ // Process the FD for kCreateFdSession.
+ // Assumes there's a compiled_trace.pb at the fd, calling this function
+ // will immediately process it and execute any read-aheads.
+ //
+ // FD is borrowed only for the duration of the function call.
+ virtual bool ProcessFd(int fd) = 0;
+
+ // Get the session ID associated with this session.
+ // Session IDs are distinct, they are not used for new sessions.
+ virtual size_t SessionId() const = 0;
+
+ // Get this session's description.
+ // Only useful for logging/dumping.
+ virtual const std::string& SessionDescription() const = 0;
+
+ // Implicitly unregister any remaining file paths.
+ // All read-aheads are also cancelled.
+ virtual ~Session() {}
+
+ protected:
+ Session();
+};
+
+// Single-line summary dump of Session.
+std::ostream& operator<<(std::ostream&os, const Session& session);
+
+class SessionBase : public Session {
+ public:
+ virtual void Dump(std::ostream& os, bool multiline) const override;
+ virtual ~SessionBase() {}
+
+ virtual size_t SessionId() const override {
+ return session_id_;
+ }
+
+ virtual const std::string& SessionDescription() const override {
+ return description_;
+ }
+
+ virtual bool ProcessFd(int fd) override;
+
+ protected:
+ SessionBase(size_t session_id, std::string description);
+ std::optional<std::string_view> GetFilePath(size_t path_id) const;
+ bool RemoveFilePath(size_t path_id);
+ bool InsertFilePath(size_t path_id, std::string file_path);
+
+ android::base::Timer timer_{};
+ private:
+ // Note: Store filename for easier debugging and for dumping.
+ std::unordered_map</*path_id*/size_t, std::string> path_map_;
+ size_t session_id_;
+ std::string description_;
+};
+
+// In-process session.
+class SessionDirect : public SessionBase {
+ public:
+ virtual bool RegisterFilePath(size_t path_id, std::string_view file_path) override;
+
+ virtual bool UnregisterFilePath(size_t path_id) override;
+ virtual bool ReadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset);
+
+ virtual bool UnreadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset) override;
+
+ virtual bool ProcessFd(int fd) override;
+
+ virtual void Dump(std::ostream& os, bool multiline) const override;
+
+ virtual ~SessionDirect();
+
+ SessionDirect(size_t session_id, std::string description)
+ : SessionBase{session_id, std::move(description)} {
+ }
+ protected:
+ struct Entry {
+ size_t path_id;
+ ReadAheadKind kind;
+ size_t length;
+ size_t offset;
+
+ constexpr bool operator==(const Entry& other) const {
+ return path_id == other.path_id &&
+ kind == other.kind &&
+ length == other.length &&
+ offset == other.offset;
+ }
+ constexpr bool operator!=(const Entry& other) const {
+ return !(*this == other);
+ }
+
+ friend std::ostream& operator<<(std::ostream& os, const Entry& entry);
+ };
+
+ struct EntryMapping {
+ Entry entry;
+ void* address;
+ bool success;
+ };
+
+ // bool EntryReadAhead(const Entry& entry) const;
+ // bool EntryUnReadAhead(const Entry& entry) const;
+
+ void UnmapWithoutErase(const EntryMapping& entry_mapping);
+ std::optional<android::base::unique_fd*> GetFdForPath(size_t path_id);
+
+ private:
+ std::unordered_map</*path_id*/size_t, std::vector<EntryMapping>> entry_list_map_;
+ std::unordered_map</*path_id*/size_t, android::base::unique_fd> path_fd_map_;
+
+ public:
+ friend std::ostream& operator<<(std::ostream& os, const SessionDirect::Entry& entry);
+};
+
+std::ostream& operator<<(std::ostream& os, const SessionDirect::Entry& entry);
+
+class PrefetcherDaemon;
+
+// Out-of-process session. Requires prefetcher daemon.
+class SessionIndirect : public SessionBase {
+ public:
+ virtual bool RegisterFilePath(size_t path_id, std::string_view file_path) override;
+
+ virtual bool UnregisterFilePath(size_t path_id) override;
+ virtual bool ReadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset) override;
+
+ virtual bool UnreadAhead(size_t path_id,
+ ReadAheadKind kind,
+ size_t length,
+ size_t offset) override;
+
+ virtual void Dump(std::ostream& os, bool multiline) const override;
+
+ // Creates a new session indirectly.
+ // Writes to daemon the new session command.
+ SessionIndirect(size_t session_id,
+ std::string description,
+ std::shared_ptr<PrefetcherDaemon> daemon,
+ bool send_command = true);
+
+ // Destroys the current session.
+ // Writes to daemon that the session is to be destroyed.
+ virtual ~SessionIndirect();
+
+ protected:
+ std::shared_ptr<PrefetcherDaemon> daemon_;
+};
+
+// Out-of-process session. Requires prefetcher daemon.
+class SessionIndirectSocket : public SessionIndirect {
+ public:
+ // Creates a new session indirectly.
+ // Writes to daemon the new session command.
+ SessionIndirectSocket(size_t session_id,
+ int fd,
+ std::string description,
+ std::shared_ptr<PrefetcherDaemon> daemon);
+ // Destroys the current session.
+ // Writes to daemon that the session is to be destroyed.
+ virtual ~SessionIndirectSocket();
+
+ private:
+};
+
+
+} // namespace prefetcher
+} // namespace iorap
+
+#endif
+
diff --git a/src/prefetcher/session_manager.cc b/src/prefetcher/session_manager.cc
new file mode 100644
index 0000000..d6fab1f
--- /dev/null
+++ b/src/prefetcher/session_manager.cc
@@ -0,0 +1,281 @@
+// Copyright (C) 2019 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
+//
+// http://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 "session_manager.h"
+
+#include "prefetcher/prefetcher_daemon.h"
+#include "prefetcher/session.h"
+#include "prefetcher/task_id.h"
+#include "serialize/arena_ptr.h"
+#include "serialize/protobuf_io.h"
+
+#include <android-base/logging.h>
+#include <android-base/chrono_utils.h>
+#include <android-base/unique_fd.h>
+#include <fcntl.h>
+#include <functional>
+#include <stdint.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unordered_map>
+
+namespace iorap {
+namespace prefetcher {
+
+std::ostream& operator<<(std::ostream& os, const SessionManager& manager) {
+ manager.Dump(os, /*multiline*/false);
+ return os;
+}
+
+SessionManager::SessionManager() {
+}
+
+class SessionManagerBase : public SessionManager {
+ public:
+ virtual void Dump(std::ostream& os, bool multiline) const {
+ if (!multiline) {
+ os << "SessionManager{";
+
+ os << "sessions=[";
+ for (auto it = sessions_map_.begin();
+ it != sessions_map_.end();
+ ++it) {
+ os << "(" << it->second.description << ") ";
+ it->second.session->Dump(os, /*multiline*/false);
+ }
+ os << "]";
+ return;
+ }
+
+ os << "SessionManager (session count = " << sessions_map_.size() << "):" << std::endl;
+ os << std::endl;
+
+ for (auto it = sessions_map_.begin();
+ it != sessions_map_.end();
+ ++it) {
+ os << "Description: " << it->second.description << std::endl;
+ it->second.session->Dump(os, /*multiline*/true);
+ }
+
+ // TODO: indentations? Use this pseudo line break for the time being.
+ os << "--------------------------------" << std::endl;
+ }
+
+ virtual ~SessionManagerBase() {}
+
+ virtual std::shared_ptr<Session> FindSession(size_t session_id) const override {
+ auto it = sessions_map_.find(session_id);
+ if (it != sessions_map_.end()) {
+ DCHECK_EQ(session_id, it->second.SessionId());
+ return it->second.session;
+ } else {
+ return nullptr;
+ }
+ }
+
+ virtual bool DestroySession(size_t session_id) override {
+ auto it = sessions_map_.find(session_id);
+ if (it != sessions_map_.end()) {
+ sessions_map_.erase(it);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ protected:
+ void InsertNewSession(std::shared_ptr<Session> session, std::string description) {
+ DCHECK(!FindSession(session->SessionId())) << "session cannot already exist";
+
+ size_t session_id = session->SessionId();
+
+ SessionData data;
+ data.session = std::move(session);
+ data.description = std::move(description);
+
+ sessions_map_.insert({session_id, std::move(data)});
+ }
+
+ private:
+ struct SessionData {
+ std::shared_ptr<Session> session;
+ std::string description;
+
+ size_t SessionId() const {
+ return session->SessionId();
+ }
+ };
+
+ std::unordered_map</*session_id*/size_t, SessionData> sessions_map_;
+};
+
+class SessionManagerDirect : public SessionManagerBase {
+ public:
+ virtual std::shared_ptr<Session> CreateSession(size_t session_id,
+ std::string description) override {
+ LOG(VERBOSE) << "CreateSessionDirect id=" << session_id << ", description=" << description;
+
+ std::shared_ptr<Session> session =
+ std::static_pointer_cast<Session>(std::make_shared<SessionDirect>(session_id,
+ description));
+ DCHECK(FindSession(session_id) == nullptr);
+ InsertNewSession(session, std::move(description));
+ return session;
+ }
+
+ SessionManagerDirect() {
+ // Intentionally left empty.
+ }
+
+ private:
+};
+
+
+class SessionManagerIndirect : public SessionManagerBase {
+ public:
+ virtual std::shared_ptr<Session> CreateSession(size_t session_id,
+ std::string description) override {
+ LOG(VERBOSE) << "CreateSessionIndirect id=" << session_id << ", description=" << description;
+
+ std::shared_ptr<Session> session =
+ std::static_pointer_cast<Session>(std::make_shared<SessionIndirect>(session_id,
+ description,
+ daemon_));
+ InsertNewSession(session, description);
+ return session;
+ }
+
+ SessionManagerIndirect() : daemon_{std::make_shared<PrefetcherDaemon>()} {
+ //StartViaFork etc.
+ // TODO: also expose a 'MainLoop(...) -> daemon::Main(..)' somehow in the base interface.
+ auto params = daemon_->StartPipesViaFork();
+ if (!params) {
+ LOG(FATAL) << "Failed to fork+exec iorap.prefetcherd";
+ }
+ }
+
+ virtual ~SessionManagerIndirect() {
+ Command cmd{};
+ cmd.choice = CommandChoice::kExit;
+
+ if (!daemon_->SendCommand(cmd)) {
+ LOG(FATAL) << "Failed to nicely exit iorap.prefetcherd";
+ }
+ }
+
+ virtual void Dump(std::ostream& os, bool multiline) const override {
+ Command cmd{};
+ cmd.choice = CommandChoice::kDumpEverything;
+
+ if (!daemon_->SendCommand(cmd)) {
+ LOG(ERROR) << "Failed to transmit kDumpEverything to iorap.prefetcherd";
+ }
+ }
+
+
+ private:
+ // No lifetime cycle: PrefetcherDaemon only has a SessionManagerDirect in it.
+ std::shared_ptr<PrefetcherDaemon> daemon_;
+};
+
+class SessionManagerIndirectSocket : public SessionManagerBase {
+ public:
+ virtual std::shared_ptr<Session> CreateSession(size_t session_id,
+ std::string description) override {
+ DCHECK(false) << "not supposed to create a regular session for Socket";
+
+ LOG(VERBOSE) << "CreateSessionIndirect id=" << session_id << ", description=" << description;
+
+ std::shared_ptr<Session> session =
+ std::static_pointer_cast<Session>(std::make_shared<SessionIndirect>(session_id,
+ description,
+ daemon_));
+ InsertNewSession(session, description);
+ return session;
+ }
+
+ virtual std::shared_ptr<Session> CreateSession(size_t session_id,
+ std::string description,
+ std::optional<int> fd) override {
+ CHECK(fd.has_value());
+ LOG(VERBOSE) << "CreateSessionIndirectSocket id=" << session_id
+ << ", description=" << description
+ << ", fd=" << *fd;
+
+ std::shared_ptr<Session> session =
+ std::static_pointer_cast<Session>(std::make_shared<SessionIndirectSocket>(session_id,
+ *fd,
+ description,
+ daemon_));
+ InsertNewSession(session, description);
+ return session;
+ }
+
+ SessionManagerIndirectSocket() : daemon_{std::make_shared<PrefetcherDaemon>()} {
+ auto params = daemon_->StartSocketViaFork();
+ if (!params) {
+ LOG(FATAL) << "Failed to fork+exec iorap.prefetcherd";
+ }
+ }
+
+ virtual ~SessionManagerIndirectSocket() {
+ Command cmd{};
+ cmd.choice = CommandChoice::kExit;
+
+ if (!daemon_->SendCommand(cmd)) {
+ LOG(FATAL) << "Failed to nicely exit iorap.prefetcherd";
+ }
+ }
+
+ virtual void Dump(std::ostream& os, bool multiline) const override {
+ Command cmd{};
+ cmd.choice = CommandChoice::kDumpEverything;
+
+ if (!daemon_->SendCommand(cmd)) {
+ LOG(ERROR) << "Failed to transmit kDumpEverything to iorap.prefetcherd";
+ }
+ }
+
+
+ private:
+ // No lifetime cycle: PrefetcherDaemon only has a SessionManagerDirect in it.
+ std::shared_ptr<PrefetcherDaemon> daemon_;
+};
+
+std::unique_ptr<SessionManager> SessionManager::CreateManager(SessionKind kind) {
+ LOG(VERBOSE) << "SessionManager::CreateManager kind=" << kind;
+
+ switch (kind) {
+ case SessionKind::kInProcessDirect: {
+ SessionManager* ptr = new SessionManagerDirect();
+ return std::unique_ptr<SessionManager>{ptr};
+ }
+ case SessionKind::kOutOfProcessIpc: {
+ SessionManager* ptr = new SessionManagerIndirect();
+ return std::unique_ptr<SessionManager>{ptr};
+ }
+ case SessionKind::kOutOfProcessSocket: {
+ SessionManager* ptr = new SessionManagerIndirectSocket();
+ return std::unique_ptr<SessionManager>{ptr};
+ }
+ default: {
+ LOG(FATAL) << "Invalid session kind: " << static_cast<int>(kind);
+ break;
+ }
+ }
+}
+
+} // namespace prefetcher
+} // namespace iorap
diff --git a/src/prefetcher/session_manager.h b/src/prefetcher/session_manager.h
new file mode 100644
index 0000000..45120d5
--- /dev/null
+++ b/src/prefetcher/session_manager.h
@@ -0,0 +1,91 @@
+// Copyright (C) 2019 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
+//
+// http://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.
+
+#ifndef PREFETCHER_SESSION_MANAGER_H_
+#define PREFETCHER_SESSION_MANAGER_H_
+
+#include <optional>
+#include <ostream>
+#include <memory>
+
+namespace iorap {
+namespace prefetcher {
+
+class Session;
+
+enum class SessionKind : uint32_t {
+ kInProcessDirect,
+ kOutOfProcessIpc,
+ kOutOfProcessSocket,
+};
+
+inline std::ostream& operator<<(std::ostream& os, SessionKind kind) {
+ if (kind == SessionKind::kInProcessDirect) {
+ os << "kInProcessDirect";
+ } else if (kind == SessionKind::kOutOfProcessIpc) {
+ os << "kOutOfProcessIpc";
+ } else if (kind == SessionKind::kOutOfProcessSocket) {
+ os << "kOutOfProcessSocket";
+ } else {
+ os << "(invalid)";
+ }
+ return os;
+}
+
+class SessionManager {
+ public:
+ static std::unique_ptr<SessionManager> CreateManager(SessionKind kind);
+
+ // Create a new session. The description is used by Dump.
+ // Manager maintains a strong ref to this session, so DestroySession must also
+ // be called prior to all refs dropping to 0.
+ virtual std::shared_ptr<Session> CreateSession(size_t session_id,
+ std::string description) = 0;
+
+ // Create a new session. The description is used by Dump.
+ // Manager maintains a strong ref to this session, so DestroySession must also
+ // be called prior to all refs dropping to 0.
+ virtual std::shared_ptr<Session> CreateSession(size_t session_id,
+ std::string description,
+ std::optional<int> fd) {
+ return CreateSession(session_id, description);
+ }
+
+ // Look up an existing session that was already created.
+ // Returns null if there is no such session.
+ virtual std::shared_ptr<Session> FindSession(size_t session_id) const = 0;
+
+ // Drop all manager references to an existing session.
+ // Returns false if the session does not exist already.
+ virtual bool DestroySession(size_t session_id) = 0;
+
+ // Multi-line detailed dump, e.g. for dumpsys.
+ // Single-line summary dump, e.g. for logcat.
+ virtual void Dump(std::ostream& os, bool multiline) const = 0;
+
+ // Note: session lifetime is tied to manager. The manager has strong pointers to sessions.
+ virtual ~SessionManager() {}
+
+ protected:
+ SessionManager();
+};
+
+// Single-line summary dump of Session.
+std::ostream& operator<<(std::ostream&os, const SessionManager& session);
+
+} // namespace prefetcher
+} // namespace iorap
+
+#endif
+
diff --git a/src/prefetcher/task_id.h b/src/prefetcher/task_id.h
new file mode 100644
index 0000000..dc26954
--- /dev/null
+++ b/src/prefetcher/task_id.h
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 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
+//
+// http://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.
+
+#ifndef PREFETCHER_TASK_ID_H_
+#define PREFETCHER_TASK_ID_H_
+
+#include <ostream>
+#include <string>
+
+namespace iorap {
+namespace prefetcher {
+
+struct TaskId {
+ size_t id; // Unique monotonically increasing ID.
+ std::string path; // File path to the trace file.
+
+ friend std::ostream& operator<<(std::ostream& os, const TaskId& task_id) {
+ os << "TaskId { id: " << task_id.id << ", path: " << task_id.path << "}";
+ return os;
+ }
+
+};
+
+} // namespace prefetcher
+} // namespace iorap
+
+#endif
+
diff --git a/src/serialize/TraceFile.proto b/src/serialize/TraceFile.proto
new file mode 100644
index 0000000..fc72d0d
--- /dev/null
+++ b/src/serialize/TraceFile.proto
@@ -0,0 +1,47 @@
+// Copyright (C) 2017 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
+//
+// http://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.
+
+syntax = "proto2"; // use required fields, which aren't in proto3.
+
+package iorap.serialize.proto; // C++ namespace iorap::serialize::proto
+option java_package = "com.google.android.iorap";
+option optimize_for = LITE_RUNTIME;
+
+// TODO: should these fields be 'packed' for "smaller encoding" ?
+
+message TraceFile {
+ required TraceFileIndex index = 1;
+ required TraceFileList list = 2;
+}
+
+message TraceFileIndex {
+ repeated TraceFileIndexEntry entries = 1;
+}
+
+message TraceFileIndexEntry {
+ required int64 id = 1;
+ required string file_name = 2;
+}
+
+message TraceFileList {
+ repeated TraceFileEntry entries = 1;
+}
+
+message TraceFileEntry {
+ required int64 index_id = 1;
+ required int64 file_offset = 2;
+ required int64 file_length = 3;
+}
+
+// XX: use nested messages? \ No newline at end of file
diff --git a/src/serialize/arena_ptr.h b/src/serialize/arena_ptr.h
new file mode 100644
index 0000000..d8bea26
--- /dev/null
+++ b/src/serialize/arena_ptr.h
@@ -0,0 +1,76 @@
+// Copyright (C) 2017 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
+//
+// http://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.
+
+#ifndef SERIALIZE_ARENA_PTR_H_
+#define SERIALIZE_ARENA_PTR_H_
+
+#include <google/protobuf/arena.h>
+#include <memory>
+
+namespace iorap {
+namespace serialize {
+
+/**
+ * @file
+ *
+ * Helpers for protobuf arena allocators. We use smart pointers
+ * with an arena embedded inside of them to avoid caring about the
+ * arena in other parts of libiorap.
+ */
+
+// Arena-managed objects must not be deleted manually.
+// When the Arena goes out of scope, it cleans everything up itself.
+template <typename T>
+void DoNotDelete(T*) {}
+
+template <typename T, typename Base = std::unique_ptr<T, decltype(&DoNotDelete<T>)>>
+struct ArenaPtr : public Base {
+ template <typename... Args>
+ static ArenaPtr<T> Make(Args&& ... args) {
+ ArenaPtr<T> arena_ptr(nullptr);
+ arena_ptr.reset(google::protobuf::Arena::Create<T>(arena_ptr.arena_.get(),
+ std::forward<Args>(args)...));
+ return arena_ptr;
+ }
+
+ ArenaPtr(std::nullptr_t) : Base(nullptr, &DoNotDelete<T>) {} // NOLINT explicit.
+
+ private:
+ // Use a unique_ptr because Arena doesn't support move semantics.
+ std::unique_ptr<google::protobuf::Arena> arena_{new google::protobuf::Arena{}};
+};
+
+template <typename T, typename Base = std::shared_ptr<T>>
+struct ArenaSharedPtr : public Base {
+ template <typename... Args>
+ static ArenaSharedPtr<T> Make(Args&& ... args) {
+ ArenaSharedPtr<T> arena_ptr(nullptr, &DoNotDelete<T>);
+ arena_ptr.reset(google::protobuf::Arena::Create<T>(arena_ptr.arena_.get(),
+ std::forward<Args>(args)...));
+ return arena_ptr;
+ }
+
+ ArenaSharedPtr() = default;
+ template <typename Deleter>
+ ArenaSharedPtr(std::nullptr_t, Deleter d) : Base(nullptr, d) {} // NOLINT explicit.
+
+ private:
+ std::shared_ptr<google::protobuf::Arena> arena_{new google::protobuf::Arena{}};
+};
+
+} // namespace serialize
+} // namespace iorap
+
+#endif
+
diff --git a/src/serialize/protobuf_io.cc b/src/serialize/protobuf_io.cc
new file mode 100644
index 0000000..1b6420f
--- /dev/null
+++ b/src/serialize/protobuf_io.cc
@@ -0,0 +1,173 @@
+// Copyright (C) 2017 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
+//
+// http://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 "protobuf_io.h"
+
+#include "common/trace.h"
+#include "serialize/arena_ptr.h"
+
+#include <android-base/chrono_utils.h>
+#include <android-base/logging.h>
+#include <android-base/unique_fd.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <utils/Trace.h>
+
+#include "google/protobuf/io/zero_copy_stream_impl_lite.h"
+#include "system/iorap/src/serialize/TraceFile.pb.h"
+
+namespace iorap {
+namespace serialize {
+
+ArenaPtr<proto::TraceFile> ProtobufIO::Open(std::string file_path) {
+ // TODO: file a bug about this.
+ // Note: can't use {} here, clang think it's narrowing from long->int.
+ android::base::unique_fd fd(TEMP_FAILURE_RETRY(::open(file_path.c_str(), O_RDONLY)));
+ if (fd.get() < 0) {
+ PLOG(DEBUG) << "ProtobufIO: open failed: " << file_path;
+ return nullptr;
+ }
+
+ return Open(fd.get(), file_path.c_str());
+}
+
+ArenaPtr<proto::TraceFile> ProtobufIO::Open(int fd, const char* file_path) {
+
+ ScopedFormatTrace atrace_protobuf_io_open(ATRACE_TAG_ACTIVITY_MANAGER,
+ "ProtobufIO::Open %s",
+ file_path);
+ android::base::Timer timer{};
+
+ struct stat buf;
+ if (fstat(fd, /*out*/&buf) < 0) {
+ PLOG(ERROR) << "ProtobufIO: open error, fstat failed: " << file_path;
+ return nullptr;
+ }
+ // XX: off64_t for stat::st_size ?
+
+ // Using the mmap appears to be the only way to do zero-copy with protobuf lite.
+ void* data = mmap(/*addr*/nullptr,
+ buf.st_size,
+ PROT_READ, MAP_SHARED | MAP_POPULATE,
+ fd,
+ /*offset*/0);
+ if (data == nullptr) {
+ PLOG(ERROR) << "ProtobufIO: open error, mmap failed: " << file_path;
+ return nullptr;
+ }
+
+ ArenaPtr<proto::TraceFile> protobuf_trace_file = ArenaPtr<proto::TraceFile>::Make();
+ if (protobuf_trace_file == nullptr) {
+ LOG(ERROR) << "ProtobufIO: open error, failed to create arena: " << file_path;
+ return nullptr;
+ }
+
+ google::protobuf::io::ArrayInputStream protobuf_input_stream{data, static_cast<int>(buf.st_size)};
+ if (!protobuf_trace_file->ParseFromZeroCopyStream(/*in*/&protobuf_input_stream)) {
+ // XX: Does protobuf on android already have the right LogHandler ?
+ LOG(ERROR) << "ProtobufIO: open error, protobuf parsing failed: " << file_path;
+ return nullptr;
+ }
+
+ if (munmap(data, buf.st_size) < 0) {
+ PLOG(WARNING) << "ProtobufIO: open problem, munmap failed, possibly memory leak? "
+ << file_path;
+ }
+
+ LOG(VERBOSE) << "ProtobufIO: open succeeded: " << file_path << ", duration: " << timer;
+ return protobuf_trace_file;
+}
+
+iorap::expected<size_t /*bytes written*/, int /*errno*/> ProtobufIO::WriteFully(
+ const ::google::protobuf::MessageLite& message,
+ std::string_view file_path) {
+
+ std::string str{file_path};
+ android::base::unique_fd fd(TEMP_FAILURE_RETRY(
+ ::open(str.c_str(),
+ O_CREAT | O_TRUNC | O_RDWR,
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP))); // ugo: rw-rw----
+ if (fd.get() < 0) {
+ int err = errno;
+ PLOG(ERROR) << "ProtobufIO: open failed: " << file_path;
+ return unexpected{err};
+ }
+
+ return WriteFully(message, fd.get(), file_path);
+}
+
+iorap::expected<size_t /*bytes written*/, int /*errno*/> ProtobufIO::WriteFully(
+ const ::google::protobuf::MessageLite& message,
+ int fd,
+ std::string_view file_path) {
+
+ int byte_size = message.ByteSize();
+ if (byte_size < 0) {
+ DCHECK(false) << "Invalid protobuf size: " << byte_size;
+ LOG(ERROR) << "ProtobufIO: Invalid protobuf size: " << byte_size;
+ return unexpected{EDOM};
+ }
+ size_t serialized_size = static_cast<size_t>(byte_size);
+
+ // Change the file to be exactly the length of the protobuf.
+ if (ftruncate(fd, static_cast<off_t>(serialized_size)) < 0) {
+ int err = errno;
+ PLOG(ERROR) << "ProtobufIO: ftruncate (size=" << serialized_size << ") failed";
+ return unexpected{err};
+ }
+
+ // Using the mmap appears to be the only way to do zero-copy with protobuf lite.
+ void* data = mmap(/*addr*/nullptr,
+ serialized_size,
+ PROT_WRITE,
+ MAP_SHARED,
+ fd,
+ /*offset*/0);
+ if (data == nullptr) {
+ int err = errno;
+ PLOG(ERROR) << "ProtobufIO: mmap failed: " << file_path;
+ return unexpected{err};
+ }
+
+ // Zero-copy write from protobuf to file via memory-map.
+ ::google::protobuf::io::ArrayOutputStream output_stream{data, byte_size};
+ if (!message.SerializeToZeroCopyStream(/*inout*/&output_stream)) {
+ // This should never happen since we pre-allocated the file and memory map to be large
+ // enough to store the full protobuf.
+ DCHECK(false) << "ProtobufIO:: SerializeToZeroCopyStream failed despite precalculating size";
+ LOG(ERROR) << "ProtobufIO: SerializeToZeroCopyStream failed";
+ return unexpected{EXFULL};
+ }
+
+ // Guarantee that changes are written back prior to munmap.
+ if (msync(data, static_cast<size_t>(serialized_size), MS_SYNC) < 0) {
+ int err = errno;
+ PLOG(ERROR) << "ProtobufIO: msync failed";
+ return unexpected{err};
+ }
+
+ if (munmap(data, serialized_size) < 0) {
+ PLOG(WARNING) << "ProtobufIO: munmap failed, possibly memory leak? "
+ << file_path;
+ }
+
+ return serialized_size;
+}
+
+} // namespace serialize
+} // namespace iorap
+
diff --git a/src/serialize/protobuf_io.h b/src/serialize/protobuf_io.h
new file mode 100644
index 0000000..1092fd7
--- /dev/null
+++ b/src/serialize/protobuf_io.h
@@ -0,0 +1,64 @@
+// Copyright (C) 2017 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
+//
+// http://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.
+
+#ifndef SERIALIZE_PROTOBUF_IO_H_
+#define SERIALIZE_PROTOBUF_IO_H_
+
+#include "common/expected.h"
+#include "serialize/arena_ptr.h"
+#include "system/iorap/src/serialize/TraceFile.pb.h"
+
+#include <string>
+#include <string_view>
+
+namespace iorap {
+namespace serialize {
+
+// XX: either the namespace should be called pb|proto[buf]
+// or we should hide the protobuf-ness from the names and call this class "IO" , "Reader", etc?
+// although an obvious name might be the "OpenFactory" or "ProtobufFacade" that reads too much
+// like a bad joke.
+
+// Helpers to read a TraceFile protobuf from a file [descriptor].
+class ProtobufIO {
+ public:
+ // XX: proto::TraceFile seems annoying, maybe just serialize::TraceFile ?
+
+ // Open the protobuf associated at the filepath. Returns null on failure.
+ static ArenaPtr<proto::TraceFile> Open(std::string file_path);
+ // Open the protobuf from the file descriptor. Returns null on failure.
+ static ArenaPtr<proto::TraceFile> Open(int fd, const char* file_path = "<unknown>");
+
+ // Save the protobuf by overwriting the file at file_path.
+ // The file state is indeterminate at failure.
+ // Returns # of bytes written out on success, otherwise the errno value.
+ static iorap::expected<size_t /*bytes written*/, int /*errno*/> WriteFully(
+ const ::google::protobuf::MessageLite& message,
+ std::string_view file_path);
+ // Save the protobuf by truncating the file already open at 'fd'.
+ // The file state is indeterminate at failure.
+ // Returns # of bytes written out on success, otherwise the errno value.
+ static iorap::expected<size_t /*bytes written*/, int /*errno*/> WriteFully(
+ const ::google::protobuf::MessageLite& message,
+ int fd,
+ std::string_view file_path = "<unknown>");
+
+ ProtobufIO() = delete;
+};
+
+} // namespace serialize
+} // namespace iorap
+
+#endif
+
diff --git a/tests/src/compiler/compiler_test.cc b/tests/src/compiler/compiler_test.cc
new file mode 100644
index 0000000..fb3e70b
--- /dev/null
+++ b/tests/src/compiler/compiler_test.cc
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2019 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
+ *
+ * http://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 "common/debug.h"
+#include "compiler/compiler.h"
+#include "inode2filename/inode_resolver.h"
+
+#include <cstdio>
+#include <fstream>
+#include <string>
+#include <vector>
+
+#include <android-base/file.h>
+#include <gtest/gtest.h>
+
+namespace iorap::compiler {
+
+static std::string GetTestDataPath(const std::string& fn) {
+ static std::string exec_dir = android::base::GetExecutableDirectory();
+ return exec_dir + "/tests/src/compiler/testdata/" + fn;
+}
+
+class CompilerTest: public ::testing::Test{
+ protected:
+ void SetUp() override {
+ ir_dependencies.data_source = inode2filename::DataSourceKind::kTextCache;
+ ir_dependencies.text_cache_filename = GetTestDataPath("common_textcache");
+ ir_dependencies.verify = inode2filename::VerifyKind::kNone; // required for determinism.
+ ir_dependencies.root_directories.push_back("/system");
+ ir_dependencies.root_directories.push_back("/apex");
+ ir_dependencies.root_directories.push_back("/data");
+ ir_dependencies.root_directories.push_back("/vendor");
+ ir_dependencies.root_directories.push_back("/product");
+ ir_dependencies.root_directories.push_back("/metadata");
+ }
+
+ inode2filename::InodeResolverDependencies ir_dependencies;
+};
+
+TEST_F(CompilerTest, SingleTraceDuration) {
+ std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb")};
+ std::vector<uint64_t> timestamp_limit_ns{260390390018596UL};
+ TemporaryFile tmp_file;
+ char* output_file_name = tmp_file.path;
+ bool output_proto = false;
+
+
+ std::vector<CompilationInput> perfetto_traces =
+ MakeCompilationInputs(input_file_names, timestamp_limit_ns);
+ bool result = PerformCompilation(perfetto_traces,
+ output_file_name,
+ output_proto,
+ /*blacklist_filter*/std::nullopt,
+ ir_dependencies);
+ std::ifstream ifs(output_file_name);
+
+ // The extra paren is needed to avoid compilation error:
+ // "parentheses were disambiguated as a function declaration".
+ std::string content{std::istreambuf_iterator<char>(ifs),
+ std::istreambuf_iterator<char>()};
+
+ EXPECT_EQ(result, true);
+ EXPECT_EQ(content, "{filename:\"/product/app/CalculatorGooglePrebuilt/"
+ "CalculatorGooglePrebuilt.apk\","
+ "timestamp:7641303,"
+ "add_to_page_cache:1,"
+ "index:540}\n");
+}
+
+TEST_F(CompilerTest, MultiTraceDuration) {
+ std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb"),
+ GetTestDataPath("common_perfetto_trace2.pb")};
+ std::vector<uint64_t> timestamp_limit_ns{260390390018596UL, 333215840452006UL};
+ TemporaryFile tmp_file;
+ char* output_file_name = tmp_file.path;
+ bool output_proto = false;
+
+ std::vector<CompilationInput> perfetto_traces =
+ MakeCompilationInputs(input_file_names, timestamp_limit_ns);
+ bool result = PerformCompilation(perfetto_traces,
+ output_file_name,
+ output_proto,
+ /*blacklist_filter*/std::nullopt,
+ ir_dependencies);
+ std::ifstream ifs(output_file_name);
+ std::string content{std::istreambuf_iterator<char>(ifs),
+ std::istreambuf_iterator<char>()};
+
+ EXPECT_EQ(result, true);
+ EXPECT_EQ(content, "{filename:\"/apex/com.android.art/lib64/libperfetto_hprof.so\","
+ "timestamp:4388958,"
+ "add_to_page_cache:1,"
+ "index:227}\n"
+ "{filename:\"/product/app/CalculatorGooglePrebuilt/"
+ "CalculatorGooglePrebuilt.apk\","
+ "timestamp:7641303,"
+ "add_to_page_cache:1,"
+ "index:540}\n");
+}
+
+TEST_F(CompilerTest, NoTraceDuration) {
+ std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb")};
+ TemporaryFile tmp_file;
+ char* output_file_name = tmp_file.path;
+ bool output_proto = false;
+
+ std::vector<CompilationInput> perfetto_traces =
+ MakeCompilationInputs(input_file_names, /* timestamp_limit_ns= */{});
+ bool result = PerformCompilation(perfetto_traces,
+ output_file_name,
+ output_proto,
+ /*blacklist_filter*/std::nullopt,
+ ir_dependencies);
+ std::ifstream ifs(output_file_name);
+ size_t line_num = std::count((std::istreambuf_iterator<char>(ifs)),
+ (std::istreambuf_iterator<char>()),
+ '\n');
+
+ EXPECT_EQ(result, true);
+ EXPECT_EQ(line_num, 1675UL);
+}
+
+TEST_F(CompilerTest, BlacklistFilterArtFiles) {
+ std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb")};
+ TemporaryFile tmp_file;
+ char* output_file_name = tmp_file.path;
+ bool output_proto = false;
+
+ std::string blacklist_filter = "[.](art|oat|odex|vdex|dex)$";
+
+ // iorap.cmd.compiler -op output.pb -it common_textcache -ot
+ // --blacklist-filter "[.](art|oat|odex|vdex|dex)$" common_perfetto_trace.pb
+
+ std::vector<CompilationInput> perfetto_traces =
+ MakeCompilationInputs(input_file_names, /* timestamp_limit_ns= */{});
+ bool result = PerformCompilation(perfetto_traces,
+ output_file_name,
+ output_proto,
+ blacklist_filter,
+ ir_dependencies);
+ std::ifstream ifs(output_file_name);
+ size_t line_num = std::count((std::istreambuf_iterator<char>(ifs)),
+ (std::istreambuf_iterator<char>()),
+ '\n');
+
+ EXPECT_EQ(result, true);
+ EXPECT_EQ(line_num, 1617UL);
+}
+} // namespace iorap::compiler
diff --git a/tests/src/compiler/testdata/common_perfetto_trace.pb b/tests/src/compiler/testdata/common_perfetto_trace.pb
new file mode 100644
index 0000000..e03bffa
--- /dev/null
+++ b/tests/src/compiler/testdata/common_perfetto_trace.pb
Binary files differ
diff --git a/tests/src/compiler/testdata/common_perfetto_trace2.pb b/tests/src/compiler/testdata/common_perfetto_trace2.pb
new file mode 100644
index 0000000..968de83
--- /dev/null
+++ b/tests/src/compiler/testdata/common_perfetto_trace2.pb
Binary files differ
diff --git a/tests/src/compiler/testdata/common_textcache b/tests/src/compiler/testdata/common_textcache
new file mode 100644
index 0000000..177b1d4
--- /dev/null
+++ b/tests/src/compiler/testdata/common_textcache
@@ -0,0 +1,14756 @@
+23 19549 -1 /system
+23 20138 -1 /system/usr
+1848 13 -1 /system/usr/icu
+23 1492539 -1 /system/usr/idc
+64768 3192 -1 /system/usr/idc/qwerty.idc
+64768 3193 -1 /system/usr/idc/qwerty2.idc
+64768 3191 -1 /system/usr/idc/AVRCP.idc
+23 1492543 -1 /system/usr/keylayout
+64768 3222 -1 /system/usr/keylayout/Vendor_054c_Product_0268_Version_8111.kl
+64768 3219 -1 /system/usr/keylayout/Vendor_054c_Product_0268.kl
+64768 3232 -1 /system/usr/keylayout/Vendor_054c_Product_0ba0_Version_8111.kl
+64768 3247 -1 /system/usr/keylayout/Vendor_1bad_Product_f016.kl
+64768 3226 -1 /system/usr/keylayout/Vendor_054c_Product_05c4_Version_8111.kl
+64768 3229 -1 /system/usr/keylayout/Vendor_054c_Product_09cc_Version_8100.kl
+64768 3241 -1 /system/usr/keylayout/Vendor_1689_Product_fd00.kl
+64768 3233 -1 /system/usr/keylayout/Vendor_057e_Product_2009.kl
+64768 3217 -1 /system/usr/keylayout/Vendor_046d_Product_c299.kl
+64768 3204 -1 /system/usr/keylayout/Vendor_045e_Product_028e.kl
+64768 3243 -1 /system/usr/keylayout/Vendor_1689_Product_fe00.kl
+64768 3252 -1 /system/usr/keylayout/Vendor_22b8_Product_093d.kl
+64768 3214 -1 /system/usr/keylayout/Vendor_046d_Product_c21d.kl
+64768 3218 -1 /system/usr/keylayout/Vendor_046d_Product_c532.kl
+64768 3231 -1 /system/usr/keylayout/Vendor_054c_Product_0ba0.kl
+64768 3253 -1 /system/usr/keylayout/Vendor_2378_Product_1008.kl
+64768 3251 -1 /system/usr/keylayout/Vendor_1d79_Product_0009.kl
+64768 3209 -1 /system/usr/keylayout/Vendor_045e_Product_02ea.kl
+64768 3205 -1 /system/usr/keylayout/Vendor_045e_Product_02d1.kl
+64768 3246 -1 /system/usr/keylayout/Vendor_1949_Product_0401.kl
+64768 3234 -1 /system/usr/keylayout/Vendor_0583_Product_2060.kl
+64768 3203 -1 /system/usr/keylayout/Vendor_0079_Product_0011.kl
+64768 3239 -1 /system/usr/keylayout/Vendor_12bd_Product_d015.kl
+64768 3206 -1 /system/usr/keylayout/Vendor_045e_Product_02dd.kl
+64768 3242 -1 /system/usr/keylayout/Vendor_1689_Product_fd01.kl
+64768 3208 -1 /system/usr/keylayout/Vendor_045e_Product_02e3.kl
+64768 3221 -1 /system/usr/keylayout/Vendor_054c_Product_0268_Version_8100.kl
+64768 3248 -1 /system/usr/keylayout/Vendor_1bad_Product_f023.kl
+64768 3213 -1 /system/usr/keylayout/Vendor_046d_Product_c219.kl
+64768 3220 -1 /system/usr/keylayout/Vendor_054c_Product_0268_Version_8000.kl
+64768 3227 -1 /system/usr/keylayout/Vendor_054c_Product_09cc.kl
+64768 3216 -1 /system/usr/keylayout/Vendor_046d_Product_c294.kl
+64768 3212 -1 /system/usr/keylayout/Vendor_046d_Product_c216.kl
+64768 3223 -1 /system/usr/keylayout/Vendor_054c_Product_05c4.kl
+64768 3249 -1 /system/usr/keylayout/Vendor_1bad_Product_f027.kl
+64768 3240 -1 /system/usr/keylayout/Vendor_1532_Product_0900.kl
+64768 3244 -1 /system/usr/keylayout/Vendor_18d1_Product_2c40.kl
+64768 3236 -1 /system/usr/keylayout/Vendor_0b05_Product_4500.kl
+64768 3224 -1 /system/usr/keylayout/Vendor_054c_Product_05c4_Version_8000.kl
+64768 3207 -1 /system/usr/keylayout/Vendor_045e_Product_02e0.kl
+64768 3238 -1 /system/usr/keylayout/Vendor_1038_Product_1412.kl
+64768 3202 -1 /system/usr/keylayout/Generic.kl
+64768 3215 -1 /system/usr/keylayout/Vendor_046d_Product_c21f.kl
+64768 3225 -1 /system/usr/keylayout/Vendor_054c_Product_05c4_Version_8100.kl
+64768 3255 -1 /system/usr/keylayout/qwerty.kl
+64768 3245 -1 /system/usr/keylayout/Vendor_18d1_Product_5018.kl
+64768 3210 -1 /system/usr/keylayout/Vendor_045e_Product_02fd.kl
+64768 3250 -1 /system/usr/keylayout/Vendor_1bad_Product_f036.kl
+64768 3230 -1 /system/usr/keylayout/Vendor_054c_Product_09cc_Version_8111.kl
+64768 3254 -1 /system/usr/keylayout/Vendor_2378_Product_100a.kl
+64768 3211 -1 /system/usr/keylayout/Vendor_046d_Product_b501.kl
+64768 3228 -1 /system/usr/keylayout/Vendor_054c_Product_09cc_Version_8000.kl
+64768 3201 -1 /system/usr/keylayout/AVRCP.kl
+64768 3237 -1 /system/usr/keylayout/Vendor_0e6f_Product_02a4.kl
+64768 3235 -1 /system/usr/keylayout/Vendor_05ac_Product_0239.kl
+23 1492599 -1 /system/usr/keychars
+64768 3199 -1 /system/usr/keychars/qwerty2.kcm
+64768 3198 -1 /system/usr/keychars/qwerty.kcm
+64768 3195 -1 /system/usr/keychars/Generic.kcm
+64768 3196 -1 /system/usr/keychars/Vendor_18d1_Product_5018.kcm
+64768 3197 -1 /system/usr/keychars/Virtual.kcm
+23 31566 -1 /system/usr/hyphen-data
+64768 3121 -1 /system/usr/hyphen-data/hyph-bn.hyb
+64768 3118 -1 /system/usr/hyphen-data/hyph-be.lic.txt
+64768 3187 -1 /system/usr/hyphen-data/hyph-und-ethi.hyb
+64768 3119 -1 /system/usr/hyphen-data/hyph-bg.hyb
+64768 3173 -1 /system/usr/hyphen-data/hyph-or.hyb
+64768 3148 -1 /system/usr/hyphen-data/hyph-ga.lic.txt
+64768 3115 -1 /system/usr/hyphen-data/hyph-as.hyb
+64768 3152 -1 /system/usr/hyphen-data/hyph-hi.lic.txt
+64768 3188 -1 /system/usr/hyphen-data/hyph-und-ethi.lic.txt
+64768 3141 -1 /system/usr/hyphen-data/hyph-et.hyb
+64768 3135 -1 /system/usr/hyphen-data/hyph-en-gb.hyb
+64768 3147 -1 /system/usr/hyphen-data/hyph-ga.hyb
+64768 3146 -1 /system/usr/hyphen-data/hyph-fr.lic.txt
+64768 3179 -1 /system/usr/hyphen-data/hyph-sl.hyb
+64768 3136 -1 /system/usr/hyphen-data/hyph-en-gb.lic.txt
+64768 3120 -1 /system/usr/hyphen-data/hyph-bg.lic.txt
+64768 3117 -1 /system/usr/hyphen-data/hyph-be.hyb
+64768 3129 -1 /system/usr/hyphen-data/hyph-de-1901.hyb
+64768 3144 -1 /system/usr/hyphen-data/hyph-eu.lic.txt
+64768 3181 -1 /system/usr/hyphen-data/hyph-ta.hyb
+64768 3164 -1 /system/usr/hyphen-data/hyph-ml.lic.txt
+64768 3183 -1 /system/usr/hyphen-data/hyph-te.hyb
+64768 3142 -1 /system/usr/hyphen-data/hyph-et.lic.txt
+64768 3157 -1 /system/usr/hyphen-data/hyph-hy.hyb
+64768 3175 -1 /system/usr/hyphen-data/hyph-pa.hyb
+64768 3116 -1 /system/usr/hyphen-data/hyph-as.lic.txt
+64768 3156 -1 /system/usr/hyphen-data/hyph-hu.lic.txt
+64768 3125 -1 /system/usr/hyphen-data/hyph-cy.hyb
+64768 3185 -1 /system/usr/hyphen-data/hyph-tk.hyb
+64768 3154 -1 /system/usr/hyphen-data/hyph-hr.lic.txt
+64768 3169 -1 /system/usr/hyphen-data/hyph-nb.hyb
+64768 3127 -1 /system/usr/hyphen-data/hyph-da.hyb
+64768 3171 -1 /system/usr/hyphen-data/hyph-nn.hyb
+64768 3158 -1 /system/usr/hyphen-data/hyph-hy.lic.txt
+64768 3145 -1 /system/usr/hyphen-data/hyph-fr.hyb
+64768 3165 -1 /system/usr/hyphen-data/hyph-mn-cyrl.hyb
+64768 3159 -1 /system/usr/hyphen-data/hyph-kn.hyb
+64768 3161 -1 /system/usr/hyphen-data/hyph-la.hyb
+64768 3155 -1 /system/usr/hyphen-data/hyph-hu.hyb
+64768 3166 -1 /system/usr/hyphen-data/hyph-mn-cyrl.lic.txt
+64768 3174 -1 /system/usr/hyphen-data/hyph-or.lic.txt
+64768 3172 -1 /system/usr/hyphen-data/hyph-nn.lic.txt
+64768 3149 -1 /system/usr/hyphen-data/hyph-gu.hyb
+64768 3137 -1 /system/usr/hyphen-data/hyph-en-us.hyb
+64768 3130 -1 /system/usr/hyphen-data/hyph-de-1901.lic.txt
+64768 3163 -1 /system/usr/hyphen-data/hyph-ml.hyb
+64768 3138 -1 /system/usr/hyphen-data/hyph-en-us.lic.txt
+64768 3150 -1 /system/usr/hyphen-data/hyph-gu.lic.txt
+64768 3170 -1 /system/usr/hyphen-data/hyph-nb.lic.txt
+64768 3131 -1 /system/usr/hyphen-data/hyph-de-1996.hyb
+64768 3140 -1 /system/usr/hyphen-data/hyph-es.lic.txt
+64768 3134 -1 /system/usr/hyphen-data/hyph-de-ch-1901.lic.txt
+64768 3184 -1 /system/usr/hyphen-data/hyph-te.lic.txt
+64768 3180 -1 /system/usr/hyphen-data/hyph-sl.lic.txt
+64768 3177 -1 /system/usr/hyphen-data/hyph-pt.hyb
+64768 3178 -1 /system/usr/hyphen-data/hyph-pt.lic.txt
+64768 3143 -1 /system/usr/hyphen-data/hyph-eu.hyb
+64768 3162 -1 /system/usr/hyphen-data/hyph-la.lic.txt
+64768 3132 -1 /system/usr/hyphen-data/hyph-de-1996.lic.txt
+64768 3186 -1 /system/usr/hyphen-data/hyph-tk.lic.txt
+64768 3128 -1 /system/usr/hyphen-data/hyph-da.lic.txt
+64768 3123 -1 /system/usr/hyphen-data/hyph-cu.hyb
+64768 3133 -1 /system/usr/hyphen-data/hyph-de-ch-1901.hyb
+64768 3124 -1 /system/usr/hyphen-data/hyph-cu.lic.txt
+64768 3168 -1 /system/usr/hyphen-data/hyph-mr.lic.txt
+64768 3126 -1 /system/usr/hyphen-data/hyph-cy.lic.txt
+64768 3139 -1 /system/usr/hyphen-data/hyph-es.hyb
+64768 3122 -1 /system/usr/hyphen-data/hyph-bn.lic.txt
+64768 3182 -1 /system/usr/hyphen-data/hyph-ta.lic.txt
+64768 3160 -1 /system/usr/hyphen-data/hyph-kn.lic.txt
+64768 3151 -1 /system/usr/hyphen-data/hyph-hi.hyb
+64768 3176 -1 /system/usr/hyphen-data/hyph-pa.lic.txt
+64768 3153 -1 /system/usr/hyphen-data/hyph-hr.hyb
+64768 3167 -1 /system/usr/hyphen-data/hyph-mr.hyb
+23 1448261 -1 /system/usr/share
+23 1492642 -1 /system/usr/share/bmd
+64768 3258 -1 /system/usr/share/bmd/RFFspeed_501.bmd
+64768 3259 -1 /system/usr/share/bmd/RFFstd_501.bmd
+23 1448262 -1 /system/usr/share/zoneinfo
+64768 3262 -1 /system/usr/share/zoneinfo/tzdata
+64768 3261 -1 /system/usr/share/zoneinfo/tz_version
+25 19553 -1 /system/vendor
+23 177181 -1 /system/app
+23 1492646 -1 /system/app/GooglePrintRecommendationService
+64768 107 -1 /system/app/GooglePrintRecommendationService/GooglePrintRecommendationService.apk
+23 1492648 -1 /system/app/OsuLogin
+64768 124 -1 /system/app/OsuLogin/OsuLogin.apk
+23 180674 -1 /system/app/RcsService
+64768 148 -1 /system/app/RcsService/RcsService.apk
+23 1492650 -1 /system/app/vzw_msdc_api
+64768 186 -1 /system/app/vzw_msdc_api/vzw_msdc_api.apk
+23 1492652 -1 /system/app/LiveWallpapersPicker
+64768 117 -1 /system/app/LiveWallpapersPicker/LiveWallpapersPicker.apk
+23 180572 -1 /system/app/Bluetooth
+64768 76 -1 /system/app/Bluetooth/Bluetooth.apk
+23 1492654 -1 /system/app/Bluetooth/lib
+23 1492655 -1 /system/app/Bluetooth/lib/arm64
+64768 2466 -1 /system/app/Bluetooth/lib/arm64/libbluetooth_jni.so
+23 1492657 -1 /system/app/CarrierDefaultApp
+64768 93 -1 /system/app/CarrierDefaultApp/CarrierDefaultApp.apk
+23 1492659 -1 /system/app/CtsShimPrebuilt
+64768 101 -1 /system/app/CtsShimPrebuilt/CtsShimPrebuilt.apk
+23 180635 -1 /system/app/PresencePolling
+64768 133 -1 /system/app/PresencePolling/PresencePolling.apk
+23 1492661 -1 /system/app/PrintSpooler
+64768 135 -1 /system/app/PrintSpooler/PrintSpooler.apk
+23 1492663 -1 /system/app/PrintSpooler/lib
+23 1492664 -1 /system/app/PrintSpooler/lib/arm64
+64768 2645 -1 /system/app/PrintSpooler/lib/arm64/libprintspooler_jni.so
+23 220731 -1 /system/app/datastatusnotification
+64768 168 -1 /system/app/datastatusnotification/datastatusnotification.apk
+23 180745 -1 /system/app/Stk
+64768 156 -1 /system/app/Stk/Stk.apk
+23 180747 -1 /system/app/NfcNci
+64768 119 -1 /system/app/NfcNci/NfcNci.apk
+23 1492667 -1 /system/app/NfcNci/lib
+23 1492668 -1 /system/app/NfcNci/lib/arm64
+64768 2632 -1 /system/app/NfcNci/lib/arm64/libnfc_nci_jni.so
+23 1492670 -1 /system/app/SafetyRegulatoryInfo
+64768 150 -1 /system/app/SafetyRegulatoryInfo/SafetyRegulatoryInfo.apk
+23 1492672 -1 /system/app/HTMLViewer
+64768 109 -1 /system/app/HTMLViewer/HTMLViewer.apk
+23 1492674 -1 /system/app/PartnerBookmarksProvider
+64768 131 -1 /system/app/PartnerBookmarksProvider/PartnerBookmarksProvider.apk
+23 1492676 -1 /system/app/QAS_DVC_MSP
+64768 140 -1 /system/app/QAS_DVC_MSP/QAS_DVC_MSP.apk
+23 1492678 -1 /system/app/BookmarkProvider
+64768 83 -1 /system/app/BookmarkProvider/BookmarkProvider.apk
+23 1492680 -1 /system/app/Traceur
+64768 158 -1 /system/app/Traceur/Traceur.apk
+23 1492682 -1 /system/app/CertInstaller
+64768 95 -1 /system/app/CertInstaller/CertInstaller.apk
+23 1492684 -1 /system/app/ConferenceDialer
+64768 99 -1 /system/app/ConferenceDialer/ConferenceDialer.apk
+23 1492686 -1 /system/app/embms
+64768 170 -1 /system/app/embms/embms.apk
+23 1492688 -1 /system/app/radioconfig
+64768 178 -1 /system/app/radioconfig/radioconfig.apk
+23 1492690 -1 /system/app/CompanionDeviceManager
+64768 97 -1 /system/app/CompanionDeviceManager/CompanionDeviceManager.apk
+23 1492692 -1 /system/app/KeyChain
+64768 111 -1 /system/app/KeyChain/KeyChain.apk
+23 1492694 -1 /system/app/KeyChain/oat
+23 1492695 -1 /system/app/KeyChain/oat/arm64
+64768 115 -1 /system/app/KeyChain/oat/arm64/KeyChain.vdex
+64768 114 -1 /system/app/KeyChain/oat/arm64/KeyChain.odex
+23 1492698 -1 /system/app/EasterEgg
+64768 103 -1 /system/app/EasterEgg/EasterEgg.apk
+23 180608 -1 /system/app/QTIDiagServices
+64768 144 -1 /system/app/QTIDiagServices/QTIDiagServices.apk
+23 1492700 -1 /system/app/PacProcessor
+64768 126 -1 /system/app/PacProcessor/PacProcessor.apk
+23 1492702 -1 /system/app/PacProcessor/lib
+23 1492703 -1 /system/app/PacProcessor/lib/arm64
+64768 2572 -1 /system/app/PacProcessor/lib/arm64/libjni_pacprocessor.so
+23 1492706 -1 /system/app/uimremoteserver
+64768 184 -1 /system/app/uimremoteserver/uimremoteserver.apk
+23 1492708 -1 /system/app/BuiltInPrintService
+23 1492709 -1 /system/app/BuiltInPrintService/lib
+23 1492710 -1 /system/app/BuiltInPrintService/lib/arm64
+64768 2497 -1 /system/app/BuiltInPrintService/lib/arm64/libcups.so
+64768 2722 -1 /system/app/BuiltInPrintService/lib/arm64/libwfds.so
+64768 85 -1 /system/app/BuiltInPrintService/BuiltInPrintService.apk
+23 1492716 -1 /system/app/SimAppDialog
+64768 154 -1 /system/app/SimAppDialog/SimAppDialog.apk
+23 180788 -1 /system/app/uceShimService
+64768 180 -1 /system/app/uceShimService/uceShimService.apk
+23 1492718 -1 /system/app/QAS_DVC_MSP_VZW
+64768 142 -1 /system/app/QAS_DVC_MSP_VZW/QAS_DVC_MSP_VZW.apk
+23 1492720 -1 /system/app/CaptivePortalLogin
+64768 91 -1 /system/app/CaptivePortalLogin/CaptivePortalLogin.apk
+23 180738 -1 /system/app/ims
+64768 172 -1 /system/app/ims/ims.apk
+23 1492722 -1 /system/app/ims/lib
+23 1492723 -1 /system/app/ims/lib/arm64
+64768 2562 -1 /system/app/ims/lib/arm64/libimsmedia_jni.so
+64768 2561 -1 /system/app/ims/lib/arm64/libimscamera_jni.so
+23 225345 -1 /system/app/atfwd
+64768 166 -1 /system/app/atfwd/atfwd.apk
+23 180707 -1 /system/app/SecureElement
+64768 152 -1 /system/app/SecureElement/SecureElement.apk
+23 1492727 -1 /system/app/WallpaperBackup
+23 1492728 -1 /system/app/WallpaperBackup/oat
+23 1492729 -1 /system/app/WallpaperBackup/oat/arm64
+64768 163 -1 /system/app/WallpaperBackup/oat/arm64/WallpaperBackup.odex
+64768 164 -1 /system/app/WallpaperBackup/oat/arm64/WallpaperBackup.vdex
+64768 160 -1 /system/app/WallpaperBackup/WallpaperBackup.apk
+23 180774 -1 /system/app/QtiTelephonyService
+64768 146 -1 /system/app/QtiTelephonyService/QtiTelephonyService.apk
+23 1492733 -1 /system/app/uimremoteclient
+64768 182 -1 /system/app/uimremoteclient/uimremoteclient.apk
+23 1492735 -1 /system/app/BasicDreams
+64768 74 -1 /system/app/BasicDreams/BasicDreams.apk
+23 1492737 -1 /system/app/GoogleExtShared
+64768 105 -1 /system/app/GoogleExtShared/GoogleExtShared.apk
+23 1492739 -1 /system/app/BluetoothMidiService
+64768 81 -1 /system/app/BluetoothMidiService/BluetoothMidiService.apk
+23 19562 -1 /system/lib64
+64768 2264 -1 /system/lib64/android.frameworks.bufferhub@1.0.so
+64768 2265 -1 /system/lib64/android.frameworks.displayservice@1.0.so
+64768 2266 -1 /system/lib64/android.frameworks.schedulerservice@1.0.so
+64768 2267 -1 /system/lib64/android.frameworks.sensorservice@1.0.so
+64768 2268 -1 /system/lib64/android.frameworks.stats@1.0.so
+64768 2269 -1 /system/lib64/android.frameworks.vr.composer@2.0.so
+64768 2270 -1 /system/lib64/android.hardware.atrace@1.0.so
+64768 2271 -1 /system/lib64/android.hardware.audio.common-util.so
+64768 2272 -1 /system/lib64/android.hardware.audio.common@2.0-util.so
+64768 2273 -1 /system/lib64/android.hardware.audio.common@2.0.so
+64768 2274 -1 /system/lib64/android.hardware.audio.common@4.0-util.so
+64768 2275 -1 /system/lib64/android.hardware.audio.common@4.0.so
+64768 2276 -1 /system/lib64/android.hardware.audio.common@5.0-util.so
+64768 2277 -1 /system/lib64/android.hardware.audio.common@5.0.so
+64768 2278 -1 /system/lib64/android.hardware.audio.effect@2.0.so
+64768 2279 -1 /system/lib64/android.hardware.audio.effect@4.0.so
+64768 2280 -1 /system/lib64/android.hardware.audio.effect@5.0.so
+64768 2281 -1 /system/lib64/android.hardware.audio@2.0.so
+64768 2282 -1 /system/lib64/android.hardware.audio@4.0.so
+64768 2283 -1 /system/lib64/android.hardware.audio@5.0.so
+64768 2284 -1 /system/lib64/android.hardware.biometrics.fingerprint@2.1.so
+64768 2285 -1 /system/lib64/android.hardware.bluetooth.a2dp@1.0.so
+64768 2286 -1 /system/lib64/android.hardware.bluetooth.audio@2.0.so
+64768 2287 -1 /system/lib64/android.hardware.bluetooth@1.0.so
+64768 2288 -1 /system/lib64/android.hardware.boot@1.0.so
+64768 2289 -1 /system/lib64/android.hardware.broadcastradio@1.0.so
+64768 2290 -1 /system/lib64/android.hardware.broadcastradio@1.1.so
+64768 2291 -1 /system/lib64/android.hardware.cas.native@1.0.so
+64768 2292 -1 /system/lib64/android.hardware.cas@1.0.so
+64768 2293 -1 /system/lib64/android.hardware.configstore-utils.so
+64768 2294 -1 /system/lib64/android.hardware.configstore@1.0.so
+64768 2295 -1 /system/lib64/android.hardware.configstore@1.1.so
+64768 2296 -1 /system/lib64/android.hardware.confirmationui@1.0.so
+64768 2297 -1 /system/lib64/android.hardware.contexthub@1.0.so
+64768 2298 -1 /system/lib64/android.hardware.drm@1.0.so
+64768 2299 -1 /system/lib64/android.hardware.drm@1.1.so
+64768 2300 -1 /system/lib64/android.hardware.drm@1.2.so
+64768 2301 -1 /system/lib64/android.hardware.dumpstate@1.0.so
+64768 2302 -1 /system/lib64/android.hardware.gatekeeper@1.0.so
+64768 2303 -1 /system/lib64/android.hardware.gnss.measurement_corrections@1.0.so
+64768 2304 -1 /system/lib64/android.hardware.gnss.visibility_control@1.0.so
+64768 2305 -1 /system/lib64/android.hardware.gnss@1.0.so
+64768 2306 -1 /system/lib64/android.hardware.gnss@1.1.so
+64768 2307 -1 /system/lib64/android.hardware.gnss@2.0.so
+64768 2308 -1 /system/lib64/android.hardware.graphics.allocator@2.0.so
+64768 2309 -1 /system/lib64/android.hardware.graphics.allocator@3.0.so
+64768 2310 -1 /system/lib64/android.hardware.graphics.allocator@4.0.so
+64768 2311 -1 /system/lib64/android.hardware.graphics.bufferqueue@1.0.so
+64768 2312 -1 /system/lib64/android.hardware.graphics.bufferqueue@2.0.so
+64768 2313 -1 /system/lib64/android.hardware.graphics.common@1.0.so
+64768 2314 -1 /system/lib64/android.hardware.graphics.common@1.1.so
+64768 2315 -1 /system/lib64/android.hardware.graphics.common@1.2.so
+64768 2316 -1 /system/lib64/android.hardware.graphics.composer@2.1.so
+64768 2317 -1 /system/lib64/android.hardware.graphics.composer@2.2.so
+64768 2318 -1 /system/lib64/android.hardware.graphics.composer@2.3.so
+64768 2319 -1 /system/lib64/android.hardware.graphics.composer@2.4.so
+64768 2320 -1 /system/lib64/android.hardware.graphics.mapper@2.0.so
+64768 2321 -1 /system/lib64/android.hardware.graphics.mapper@2.1.so
+64768 2322 -1 /system/lib64/android.hardware.graphics.mapper@3.0.so
+64768 2323 -1 /system/lib64/android.hardware.graphics.mapper@4.0.so
+64768 2324 -1 /system/lib64/android.hardware.health.storage@1.0.so
+64768 2325 -1 /system/lib64/android.hardware.health@1.0.so
+64768 2326 -1 /system/lib64/android.hardware.health@2.0.so
+64768 2327 -1 /system/lib64/android.hardware.input.classifier@1.0.so
+64768 2328 -1 /system/lib64/android.hardware.input.common@1.0.so
+64768 2329 -1 /system/lib64/android.hardware.ir@1.0.so
+64768 2330 -1 /system/lib64/android.hardware.keymaster@3.0.so
+64768 2331 -1 /system/lib64/android.hardware.keymaster@4.0.so
+64768 2332 -1 /system/lib64/android.hardware.light@2.0.so
+64768 2333 -1 /system/lib64/android.hardware.media.bufferpool@2.0.so
+64768 2334 -1 /system/lib64/android.hardware.media.c2@1.0.so
+64768 2335 -1 /system/lib64/android.hardware.media.omx@1.0.so
+64768 2336 -1 /system/lib64/android.hardware.media@1.0.so
+64768 2337 -1 /system/lib64/android.hardware.memtrack@1.0.so
+64768 2338 -1 /system/lib64/android.hardware.nfc@1.0.so
+64768 2339 -1 /system/lib64/android.hardware.nfc@1.1.so
+64768 2340 -1 /system/lib64/android.hardware.nfc@1.2.so
+64768 2341 -1 /system/lib64/android.hardware.power.stats@1.0.so
+64768 2342 -1 /system/lib64/android.hardware.power@1.0.so
+64768 2343 -1 /system/lib64/android.hardware.power@1.1.so
+64768 2344 -1 /system/lib64/android.hardware.power@1.2.so
+64768 2345 -1 /system/lib64/android.hardware.power@1.3.so
+64768 2346 -1 /system/lib64/android.hardware.radio.config@1.0.so
+64768 2347 -1 /system/lib64/android.hardware.radio.deprecated@1.0.so
+64768 2348 -1 /system/lib64/android.hardware.radio@1.0.so
+64768 2349 -1 /system/lib64/android.hardware.radio@1.1.so
+64768 2350 -1 /system/lib64/android.hardware.radio@1.2.so
+64768 2351 -1 /system/lib64/android.hardware.radio@1.3.so
+64768 2352 -1 /system/lib64/android.hardware.radio@1.4.so
+64768 2353 -1 /system/lib64/android.hardware.renderscript@1.0.so
+64768 2354 -1 /system/lib64/android.hardware.secure_element@1.0.so
+23 1492752 -1 /system/lib64/drm
+64768 2389 -1 /system/lib64/drm/libfwdlockengine.so
+64768 2355 -1 /system/lib64/android.hardware.sensors@1.0.so
+64768 2356 -1 /system/lib64/android.hardware.sensors@2.0.so
+64768 2357 -1 /system/lib64/android.hardware.soundtrigger@2.0.so
+64768 2358 -1 /system/lib64/android.hardware.soundtrigger@2.1.so
+64768 2359 -1 /system/lib64/android.hardware.soundtrigger@2.2.so
+64768 2360 -1 /system/lib64/android.hardware.tetheroffload.config@1.0.so
+64768 2361 -1 /system/lib64/android.hardware.thermal@1.0.so
+64768 2362 -1 /system/lib64/android.hardware.tv.cec@1.0.so
+64768 2363 -1 /system/lib64/android.hardware.tv.input@1.0.so
+64768 2364 -1 /system/lib64/android.hardware.usb.gadget@1.0.so
+64768 2365 -1 /system/lib64/android.hardware.vibrator@1.0.so
+64768 2366 -1 /system/lib64/android.hardware.vibrator@1.1.so
+64768 2367 -1 /system/lib64/android.hardware.vibrator@1.2.so
+64768 2368 -1 /system/lib64/android.hardware.vibrator@1.3.so
+64768 2369 -1 /system/lib64/android.hardware.vibrator@1.4.so
+64768 2370 -1 /system/lib64/android.hardware.vr@1.0.so
+64768 2371 -1 /system/lib64/android.hardware.wifi@1.0.so
+64768 2372 -1 /system/lib64/android.hidl.allocator@1.0.so
+64768 2373 -1 /system/lib64/android.hidl.memory.token@1.0.so
+64768 2374 -1 /system/lib64/android.hidl.memory@1.0.so
+64768 2375 -1 /system/lib64/android.hidl.safe_union@1.0.so
+64768 2376 -1 /system/lib64/android.hidl.token@1.0-utils.so
+64768 2377 -1 /system/lib64/android.hidl.token@1.0.so
+64768 2378 -1 /system/lib64/android.system.net.netd@1.0.so
+64768 2379 -1 /system/lib64/android.system.net.netd@1.1.so
+64768 2380 -1 /system/lib64/android.system.suspend@1.0.so
+64768 2381 -1 /system/lib64/android.system.wifi.keystore@1.0.so
+64768 2382 -1 /system/lib64/apex_aidl_interface-cpp.so
+23 19565 -1 /system/lib64/bootstrap
+64768 2384 -1 /system/lib64/bootstrap/libc.so
+64768 2385 -1 /system/lib64/bootstrap/libdl.so
+64768 2386 -1 /system/lib64/bootstrap/libm.so
+64768 2387 -1 /system/lib64/dnsresolver_aidl_interface-V2-cpp.so
+64768 2390 -1 /system/lib64/gsi_aidl_interface-cpp.so
+64768 2391 -1 /system/lib64/heapprofd_client.so
+23 33143 -1 /system/lib64/hw
+64768 2393 -1 /system/lib64/hw/android.hidl.memory@1.0-impl.so
+64768 2394 -1 /system/lib64/hw/audio.a2dp.default.so
+64768 2395 -1 /system/lib64/hw/audio.hearing_aid.default.so
+64768 2396 -1 /system/lib64/ld-android.so
+64768 2397 -1 /system/lib64/lib-imsvideocodec.so
+64768 2398 -1 /system/lib64/lib-imsvt.so
+64768 2399 -1 /system/lib64/lib-imsvtextutils.so
+64768 2400 -1 /system/lib64/lib-imsvtutils.so
+64768 2401 -1 /system/lib64/libEGL.so
+64768 2402 -1 /system/lib64/libETC1.so
+64768 2403 -1 /system/lib64/libFFTEm.so
+64768 2404 -1 /system/lib64/libGLESv1_CM.so
+64768 2405 -1 /system/lib64/libGLESv2.so
+64768 2406 -1 /system/lib64/libGLESv3.so
+64768 2407 -1 /system/lib64/libGPQTEEC_system.so
+64768 2408 -1 /system/lib64/libGPTEE_system.so
+64768 2409 -1 /system/lib64/libLLVM_android.so
+64768 2410 -1 /system/lib64/libOpenMAXAL.so
+64768 2411 -1 /system/lib64/libOpenSLES.so
+64768 2412 -1 /system/lib64/libQTEEConnector_system.so
+64768 2413 -1 /system/lib64/libRS.so
+64768 2414 -1 /system/lib64/libRSCacheDir.so
+64768 2415 -1 /system/lib64/libRSCpuRef.so
+64768 2416 -1 /system/lib64/libRSDriver.so
+64768 2417 -1 /system/lib64/libRS_internal.so
+64768 2418 -1 /system/lib64/libRScpp.so
+64768 2419 -1 /system/lib64/libSurfaceFlingerProp.so
+64768 2420 -1 /system/lib64/libaaudio.so
+64768 2421 -1 /system/lib64/libaaudio_internal.so
+64768 2422 -1 /system/lib64/libaaudioservice.so
+64768 2423 -1 /system/lib64/libadbd.so
+64768 2424 -1 /system/lib64/libadbd_services.so
+64768 2425 -1 /system/lib64/libamidi.so
+64768 2426 -1 /system/lib64/libandroid.so
+64768 2427 -1 /system/lib64/libandroid_net.so
+64768 2428 -1 /system/lib64/libandroid_runtime.so
+64768 2429 -1 /system/lib64/libandroid_runtime_lazy.so
+64768 2430 -1 /system/lib64/libandroid_servers.so
+64768 2431 -1 /system/lib64/libandroidfw.so
+64768 2432 -1 /system/lib64/libappfuse.so
+64768 2433 -1 /system/lib64/libartpalette-system.so
+64768 2434 -1 /system/lib64/libasyncio.so
+64768 2435 -1 /system/lib64/libaudio-resampler.so
+64768 2436 -1 /system/lib64/libaudioclient.so
+64768 2437 -1 /system/lib64/libaudioeffect_jni.so
+64768 2438 -1 /system/lib64/libaudioflinger.so
+64768 2439 -1 /system/lib64/libaudiofoundation.so
+64768 2440 -1 /system/lib64/libaudiohal.so
+64768 2441 -1 /system/lib64/libaudiohal@2.0.so
+64768 2442 -1 /system/lib64/libaudiohal@4.0.so
+64768 2443 -1 /system/lib64/libaudiohal@5.0.so
+64768 2444 -1 /system/lib64/libaudiohal_deathhandler.so
+64768 2445 -1 /system/lib64/libaudiomanager.so
+64768 2446 -1 /system/lib64/libaudiopolicy.so
+64768 2447 -1 /system/lib64/libaudiopolicyenginedefault.so
+64768 2448 -1 /system/lib64/libaudiopolicymanager.so
+64768 2449 -1 /system/lib64/libaudiopolicymanagerdefault.so
+64768 2450 -1 /system/lib64/libaudiopolicyservice.so
+64768 2451 -1 /system/lib64/libaudioprocessing.so
+64768 2452 -1 /system/lib64/libaudiospdif.so
+64768 2453 -1 /system/lib64/libaudioutils.so
+64768 2454 -1 /system/lib64/libavservices_minijail.so
+64768 2455 -1 /system/lib64/libbacktrace.so
+64768 2456 -1 /system/lib64/libbase.so
+64768 2457 -1 /system/lib64/libbcc.so
+64768 2458 -1 /system/lib64/libbcinfo.so
+64768 2459 -1 /system/lib64/libbinder.so
+64768 2460 -1 /system/lib64/libbinder_ndk.so
+64768 2461 -1 /system/lib64/libbinderthreadstate.so
+64768 2462 -1 /system/lib64/libbinderwrapper.so
+64768 2463 -1 /system/lib64/libblas.so
+64768 2464 -1 /system/lib64/libbluetooth-binder.so
+64768 2465 -1 /system/lib64/libbluetooth.so
+64768 2466 -1 /system/lib64/libbluetooth_jni.so
+64768 2467 -1 /system/lib64/libbootanimation.so
+64768 2468 -1 /system/lib64/libbootloader_message.so
+64768 2469 -1 /system/lib64/libbpf.so
+64768 2470 -1 /system/lib64/libbpf_android.so
+64768 2471 -1 /system/lib64/libbrillo-binder.so
+64768 2472 -1 /system/lib64/libbrillo-stream.so
+64768 2473 -1 /system/lib64/libbrillo.so
+64768 2474 -1 /system/lib64/libbufferhub.so
+64768 2475 -1 /system/lib64/libbufferhubqueue.so
+64768 2476 -1 /system/lib64/libc++.so
+1888 34 -1 /system/lib64/libc.so
+64768 2478 -1 /system/lib64/libc_scudo.so
+64768 2479 -1 /system/lib64/libcamera2ndk.so
+64768 2480 -1 /system/lib64/libcamera_client.so
+64768 2481 -1 /system/lib64/libcamera_metadata.so
+64768 2482 -1 /system/lib64/libcap.so
+64768 2483 -1 /system/lib64/libcgrouprc.so
+64768 2484 -1 /system/lib64/libchrome.so
+64768 2485 -1 /system/lib64/libclang_rt.asan-aarch64-android.so
+64768 2486 -1 /system/lib64/libclcore.bc
+64768 2487 -1 /system/lib64/libclcore_debug.bc
+64768 2488 -1 /system/lib64/libclcore_debug_g.bc
+64768 2489 -1 /system/lib64/libclcore_g.bc
+64768 2490 -1 /system/lib64/libcodec2.so
+64768 2491 -1 /system/lib64/libcodec2_client.so
+64768 2492 -1 /system/lib64/libcodec2_hidl_client@1.0.so
+64768 2493 -1 /system/lib64/libcodec2_vndk.so
+64768 2494 -1 /system/lib64/libcompiler_rt.so
+64768 2495 -1 /system/lib64/libcrypto.so
+64768 2496 -1 /system/lib64/libcrypto_utils.so
+64768 2497 -1 /system/lib64/libcups.so
+64768 2498 -1 /system/lib64/libcurl.so
+64768 2499 -1 /system/lib64/libcutils.so
+64768 2500 -1 /system/lib64/libdatasource.so
+64768 2501 -1 /system/lib64/libdebuggerd_client.so
+64768 2502 -1 /system/lib64/libdepthphoto.so
+64768 2503 -1 /system/lib64/libdexfile_support.so
+64768 2504 -1 /system/lib64/libdiskconfig.so
+64768 2505 -1 /system/lib64/libdisplayservicehidl.so
+1888 35 -1 /system/lib64/libdl.so
+64768 2507 -1 /system/lib64/libdl_android.so
+64768 2508 -1 /system/lib64/libdng_sdk.so
+64768 2509 -1 /system/lib64/libdrm.so
+64768 2510 -1 /system/lib64/libdrmframework.so
+64768 2511 -1 /system/lib64/libdrmframework_jni.so
+64768 2512 -1 /system/lib64/libdumpstateaidl.so
+64768 2513 -1 /system/lib64/libdumpstateutil.so
+64768 2514 -1 /system/lib64/libdumputils.so
+64768 2515 -1 /system/lib64/libdynamic_depth.so
+64768 2516 -1 /system/lib64/libeffectsconfig.so
+64768 2517 -1 /system/lib64/libevent.so
+64768 2518 -1 /system/lib64/libexif.so
+64768 2519 -1 /system/lib64/libexpat.so
+64768 2520 -1 /system/lib64/libext2_blkid.so
+64768 2521 -1 /system/lib64/libext2_com_err.so
+64768 2522 -1 /system/lib64/libext2_e2p.so
+64768 2523 -1 /system/lib64/libext2_misc.so
+64768 2524 -1 /system/lib64/libext2_quota.so
+64768 2525 -1 /system/lib64/libext2_uuid.so
+64768 2526 -1 /system/lib64/libext2fs.so
+64768 2527 -1 /system/lib64/libext4_utils.so
+64768 2528 -1 /system/lib64/libf2fs_sparseblock.so
+64768 2529 -1 /system/lib64/libfec.so
+64768 2530 -1 /system/lib64/libfilterfw.so
+64768 2531 -1 /system/lib64/libfilterpack_imageproc.so
+64768 2532 -1 /system/lib64/libfmq.so
+64768 2533 -1 /system/lib64/libfruit.so
+64768 2534 -1 /system/lib64/libfs_mgr.so
+64768 2535 -1 /system/lib64/libfscrypt.so
+64768 2536 -1 /system/lib64/libft2.so
+64768 2537 -1 /system/lib64/libfuse.so
+64768 2538 -1 /system/lib64/libfuse_jni.so
+64768 2539 -1 /system/lib64/libgatekeeper.so
+64768 2540 -1 /system/lib64/libgatekeeper_aidl.so
+64768 2541 -1 /system/lib64/libgraphicsenv.so
+64768 2542 -1 /system/lib64/libgsi.so
+64768 2543 -1 /system/lib64/libgtest_prod.so
+64768 2544 -1 /system/lib64/libgui.so
+64768 2545 -1 /system/lib64/libhardware.so
+64768 2546 -1 /system/lib64/libhardware_legacy.so
+64768 2547 -1 /system/lib64/libharfbuzz_ng.so
+64768 2548 -1 /system/lib64/libheif.so
+64768 2549 -1 /system/lib64/libhidcommand_jni.so
+64768 2550 -1 /system/lib64/libhidl-gen-hash.so
+64768 2551 -1 /system/lib64/libhidl-gen-utils.so
+64768 2552 -1 /system/lib64/libhidlallocatorutils.so
+64768 2553 -1 /system/lib64/libhidlbase.so
+64768 2554 -1 /system/lib64/libhidlmemory.so
+64768 2555 -1 /system/lib64/libhidltransport.so
+64768 2556 -1 /system/lib64/libhwbinder.so
+64768 2557 -1 /system/lib64/libhwui.so
+64768 2558 -1 /system/lib64/libidmap2.so
+64768 2559 -1 /system/lib64/libimage_io.so
+64768 2560 -1 /system/lib64/libimg_utils.so
+64768 2561 -1 /system/lib64/libimscamera_jni.so
+64768 2562 -1 /system/lib64/libimsmedia_jni.so
+64768 2563 -1 /system/lib64/libincident.so
+64768 2564 -1 /system/lib64/libinput.so
+64768 2565 -1 /system/lib64/libinputflinger.so
+64768 2566 -1 /system/lib64/libinputflinger_base.so
+64768 2567 -1 /system/lib64/libinputreader.so
+64768 2568 -1 /system/lib64/libinputreporter.so
+64768 2569 -1 /system/lib64/libinputservice.so
+64768 2570 -1 /system/lib64/libion.so
+64768 2571 -1 /system/lib64/libiprouteutil.so
+64768 2572 -1 /system/lib64/libjni_pacprocessor.so
+64768 2573 -1 /system/lib64/libjnigraphics.so
+64768 2574 -1 /system/lib64/libjpeg.so
+64768 2575 -1 /system/lib64/libjsoncpp.so
+64768 2576 -1 /system/lib64/libkeymaster4support.so
+64768 2577 -1 /system/lib64/libkeymaster_messages.so
+64768 2578 -1 /system/lib64/libkeymaster_portable.so
+64768 2579 -1 /system/lib64/libkeystore-engine.so
+64768 2580 -1 /system/lib64/libkeystore_aidl.so
+64768 2581 -1 /system/lib64/libkeystore_binder.so
+64768 2582 -1 /system/lib64/libkeystore_parcelables.so
+64768 2583 -1 /system/lib64/libkeyutils.so
+64768 2584 -1 /system/lib64/liblayers_proto.so
+64768 2585 -1 /system/lib64/libldacBT_abr.so
+64768 2586 -1 /system/lib64/libldacBT_enc.so
+64768 2587 -1 /system/lib64/liblockagent.so
+64768 2588 -1 /system/lib64/liblog.so
+64768 2589 -1 /system/lib64/liblogwrap.so
+64768 2590 -1 /system/lib64/liblp.so
+64768 2591 -1 /system/lib64/liblpdump.so
+64768 2592 -1 /system/lib64/liblpdump_interface-cpp.so
+64768 2593 -1 /system/lib64/liblz4.so
+64768 2594 -1 /system/lib64/liblzma.so
+1888 36 -1 /system/lib64/libm.so
+64768 2596 -1 /system/lib64/libmdnssd.so
+64768 2597 -1 /system/lib64/libmedia.so
+64768 2598 -1 /system/lib64/libmedia_codeclist.so
+64768 2599 -1 /system/lib64/libmedia_helper.so
+64768 2600 -1 /system/lib64/libmedia_jni.so
+64768 2601 -1 /system/lib64/libmedia_jni_utils.so
+64768 2602 -1 /system/lib64/libmedia_omx.so
+64768 2603 -1 /system/lib64/libmedia_omx_client.so
+64768 2604 -1 /system/lib64/libmediadrm.so
+64768 2605 -1 /system/lib64/libmediadrmmetrics_lite.so
+64768 2606 -1 /system/lib64/libmediaextractorservice.so
+64768 2607 -1 /system/lib64/libmedialogservice.so
+64768 2608 -1 /system/lib64/libmediametrics.so
+64768 2609 -1 /system/lib64/libmediandk.so
+64768 2610 -1 /system/lib64/libmediandk_utils.so
+64768 2611 -1 /system/lib64/libmediautils.so
+64768 2612 -1 /system/lib64/libmeminfo.so
+64768 2613 -1 /system/lib64/libmemtrack.so
+64768 2614 -1 /system/lib64/libmemunreachable.so
+64768 2615 -1 /system/lib64/libmetricslogger.so
+64768 2616 -1 /system/lib64/libminijail.so
+64768 2617 -1 /system/lib64/libminikin.so
+64768 2618 -1 /system/lib64/libminui.so
+64768 2619 -1 /system/lib64/libmtp.so
+64768 2620 -1 /system/lib64/libnativebridge_lazy.so
+64768 2621 -1 /system/lib64/libnativeloader_lazy.so
+64768 2622 -1 /system/lib64/libnativewindow.so
+64768 2623 -1 /system/lib64/libnbaio.so
+64768 2624 -1 /system/lib64/libnblog.so
+64768 2625 -1 /system/lib64/libnetd_client.so
+64768 2626 -1 /system/lib64/libnetdbpf.so
+64768 2627 -1 /system/lib64/libnetdutils.so
+64768 2628 -1 /system/lib64/libnetlink.so
+64768 2629 -1 /system/lib64/libnetutils.so
+64768 2630 -1 /system/lib64/libneuralnetworks_packageinfo.so
+64768 2631 -1 /system/lib64/libnfc-nci.so
+64768 2632 -1 /system/lib64/libnfc_nci_jni.so
+64768 2633 -1 /system/lib64/libnl.so
+64768 2634 -1 /system/lib64/libpackagelistparser.so
+64768 2635 -1 /system/lib64/libpcap.so
+64768 2636 -1 /system/lib64/libpcre2.so
+64768 2637 -1 /system/lib64/libpdfium.so
+64768 2638 -1 /system/lib64/libpdx_default_transport.so
+64768 2639 -1 /system/lib64/libperfetto.so
+64768 2640 -1 /system/lib64/libperfetto_android_internal.so
+64768 2641 -1 /system/lib64/libpiex.so
+64768 2642 -1 /system/lib64/libpng.so
+64768 2643 -1 /system/lib64/libpower.so
+64768 2644 -1 /system/lib64/libpowermanager.so
+64768 2645 -1 /system/lib64/libprintspooler_jni.so
+64768 2646 -1 /system/lib64/libprocessgroup.so
+64768 2647 -1 /system/lib64/libprocessgroup_setup.so
+64768 2648 -1 /system/lib64/libprocinfo.so
+64768 2649 -1 /system/lib64/libprotobuf-cpp-full.so
+64768 2650 -1 /system/lib64/libprotobuf-cpp-lite.so
+64768 2651 -1 /system/lib64/libprotoutil.so
+64768 2652 -1 /system/lib64/libpsi.so
+64768 2653 -1 /system/lib64/libqcbor_system.so
+64768 2654 -1 /system/lib64/libqtaguid.so
+64768 2655 -1 /system/lib64/libradio_metadata.so
+64768 2656 -1 /system/lib64/librcc.so
+64768 2657 -1 /system/lib64/librs_jni.so
+64768 2658 -1 /system/lib64/librtp_jni.so
+64768 2659 -1 /system/lib64/libsanitizer-status.so
+64768 2660 -1 /system/lib64/libschedulerservicehidl.so
+64768 2661 -1 /system/lib64/libscudo_wrapper.so
+64768 2662 -1 /system/lib64/libsdm-disp-apis.so
+64768 2663 -1 /system/lib64/libseccam.so
+64768 2664 -1 /system/lib64/libsecureui_svcsock_system.so
+64768 2665 -1 /system/lib64/libselinux.so
+64768 2666 -1 /system/lib64/libsensor.so
+64768 2667 -1 /system/lib64/libsensorprivacy.so
+64768 2668 -1 /system/lib64/libsensorservice.so
+64768 2669 -1 /system/lib64/libsensorservicehidl.so
+64768 2670 -1 /system/lib64/libservices.so
+64768 2671 -1 /system/lib64/libsfplugin_ccodec.so
+64768 2672 -1 /system/lib64/libsfplugin_ccodec_utils.so
+64768 2673 -1 /system/lib64/libsmcinvokecred.so
+64768 2674 -1 /system/lib64/libsns_fastRPC_util.so
+64768 2675 -1 /system/lib64/libsoftkeymasterdevice.so
+64768 2676 -1 /system/lib64/libsonic.so
+64768 2677 -1 /system/lib64/libsonivox.so
+64768 2678 -1 /system/lib64/libsoundpool.so
+64768 2679 -1 /system/lib64/libsoundtrigger.so
+64768 2680 -1 /system/lib64/libsoundtriggerservice.so
+64768 2681 -1 /system/lib64/libsparse.so
+64768 2682 -1 /system/lib64/libspeexresampler.so
+64768 2683 -1 /system/lib64/libsqlite.so
+64768 2684 -1 /system/lib64/libsquashfs_utils.so
+64768 2685 -1 /system/lib64/libssl.so
+64768 2686 -1 /system/lib64/libstagefright.so
+64768 2687 -1 /system/lib64/libstagefright_amrnb_common.so
+64768 2688 -1 /system/lib64/libstagefright_bufferpool@2.0.1.so
+64768 2689 -1 /system/lib64/libstagefright_bufferqueue_helper.so
+64768 2690 -1 /system/lib64/libstagefright_codecbase.so
+64768 2691 -1 /system/lib64/libstagefright_foundation.so
+64768 2692 -1 /system/lib64/libstagefright_http_support.so
+64768 2693 -1 /system/lib64/libstagefright_omx.so
+64768 2694 -1 /system/lib64/libstagefright_omx_utils.so
+64768 2695 -1 /system/lib64/libstagefright_xmlparser.so
+64768 2696 -1 /system/lib64/libstatslog.so
+64768 2697 -1 /system/lib64/libstatssocket.so
+64768 2698 -1 /system/lib64/libstdc++.so
+64768 2699 -1 /system/lib64/libsurfaceflinger.so
+64768 2700 -1 /system/lib64/libsuspend.so
+64768 2701 -1 /system/lib64/libsync.so
+64768 2702 -1 /system/lib64/libsysutils.so
+64768 2703 -1 /system/lib64/libtextclassifier.so
+64768 2704 -1 /system/lib64/libtextclassifier_hash.so
+64768 2705 -1 /system/lib64/libtflite.so
+64768 2706 -1 /system/lib64/libtimestats_proto.so
+64768 2707 -1 /system/lib64/libtinyalsa.so
+64768 2708 -1 /system/lib64/libtinyxml2.so
+64768 2709 -1 /system/lib64/libtombstoned_client.so
+64768 2710 -1 /system/lib64/libtzcom.so
+64768 2711 -1 /system/lib64/libui.so
+64768 2712 -1 /system/lib64/libunwindstack.so
+64768 2713 -1 /system/lib64/libusbhost.so
+64768 2714 -1 /system/lib64/libutils.so
+64768 2715 -1 /system/lib64/libutilscallstack.so
+64768 2716 -1 /system/lib64/libvibrator.so
+64768 2717 -1 /system/lib64/libvintf.so
+64768 2718 -1 /system/lib64/libvndksupport.so
+64768 2719 -1 /system/lib64/libvulkan.so
+64768 2720 -1 /system/lib64/libwebviewchromium_loader.so
+64768 2721 -1 /system/lib64/libwebviewchromium_plat_support.so
+64768 2722 -1 /system/lib64/libwfds.so
+64768 2723 -1 /system/lib64/libwifi-jni.so
+64768 2724 -1 /system/lib64/libwifi-system-iface.so
+64768 2725 -1 /system/lib64/libwifikeystorehal.so
+64768 2726 -1 /system/lib64/libwilhelm.so
+64768 2727 -1 /system/lib64/libxml2.so
+64768 2728 -1 /system/lib64/libz.so
+64768 2729 -1 /system/lib64/libziparchive.so
+64768 2730 -1 /system/lib64/netd_aidl_interface-V2-cpp.so
+64768 2731 -1 /system/lib64/netd_aidl_interface-cpp.so
+64768 2732 -1 /system/lib64/netd_event_listener_interface-V1-cpp.so
+64768 2733 -1 /system/lib64/netd_event_listener_interface-cpp.so
+64768 2734 -1 /system/lib64/oemnetd_aidl_interface-cpp.so
+64768 2735 -1 /system/lib64/pppol2tp-android.so
+64768 2736 -1 /system/lib64/pppopptp-android.so
+64768 2737 -1 /system/lib64/server_configurable_flags.so
+64768 2738 -1 /system/lib64/slicer.so
+64768 2739 -1 /system/lib64/suspend_control_aidl_interface-cpp.so
+23 16903 -1 /system/lib64/vndk-R
+64768 2741 -1 /system/lib64/vndk-R/android.frameworks.cameraservice.common@2.0.so
+64768 2742 -1 /system/lib64/vndk-R/android.frameworks.cameraservice.device@2.0.so
+64768 2743 -1 /system/lib64/vndk-R/android.frameworks.cameraservice.service@2.0.so
+64768 2744 -1 /system/lib64/vndk-R/android.frameworks.displayservice@1.0.so
+64768 2745 -1 /system/lib64/vndk-R/android.frameworks.schedulerservice@1.0.so
+64768 2746 -1 /system/lib64/vndk-R/android.frameworks.sensorservice@1.0.so
+64768 2747 -1 /system/lib64/vndk-R/android.frameworks.stats@1.0.so
+64768 2748 -1 /system/lib64/vndk-R/android.hardware.atrace@1.0.so
+64768 2749 -1 /system/lib64/vndk-R/android.hardware.audio.common@2.0.so
+64768 2750 -1 /system/lib64/vndk-R/android.hardware.audio.common@4.0.so
+64768 2751 -1 /system/lib64/vndk-R/android.hardware.audio.common@5.0.so
+64768 2752 -1 /system/lib64/vndk-R/android.hardware.audio.effect@2.0.so
+64768 2753 -1 /system/lib64/vndk-R/android.hardware.audio.effect@4.0.so
+64768 2754 -1 /system/lib64/vndk-R/android.hardware.audio.effect@5.0.so
+64768 2755 -1 /system/lib64/vndk-R/android.hardware.audio@2.0.so
+64768 2756 -1 /system/lib64/vndk-R/android.hardware.audio@4.0.so
+64768 2757 -1 /system/lib64/vndk-R/android.hardware.audio@5.0.so
+64768 2758 -1 /system/lib64/vndk-R/android.hardware.authsecret@1.0.so
+64768 2759 -1 /system/lib64/vndk-R/android.hardware.automotive.audiocontrol@1.0.so
+64768 2760 -1 /system/lib64/vndk-R/android.hardware.automotive.can@1.0.so
+64768 2761 -1 /system/lib64/vndk-R/android.hardware.automotive.evs@1.0.so
+64768 2762 -1 /system/lib64/vndk-R/android.hardware.automotive.evs@1.1.so
+64768 2763 -1 /system/lib64/vndk-R/android.hardware.automotive.vehicle@2.0.so
+64768 2764 -1 /system/lib64/vndk-R/android.hardware.biometrics.face@1.0.so
+64768 2765 -1 /system/lib64/vndk-R/android.hardware.biometrics.fingerprint@2.1.so
+64768 2766 -1 /system/lib64/vndk-R/android.hardware.bluetooth.a2dp@1.0.so
+64768 2767 -1 /system/lib64/vndk-R/android.hardware.bluetooth.audio@2.0.so
+64768 2768 -1 /system/lib64/vndk-R/android.hardware.bluetooth@1.0.so
+64768 2769 -1 /system/lib64/vndk-R/android.hardware.boot@1.0.so
+64768 2770 -1 /system/lib64/vndk-R/android.hardware.boot@1.1.so
+64768 2771 -1 /system/lib64/vndk-R/android.hardware.broadcastradio@1.0.so
+64768 2772 -1 /system/lib64/vndk-R/android.hardware.broadcastradio@1.1.so
+64768 2773 -1 /system/lib64/vndk-R/android.hardware.broadcastradio@2.0.so
+64768 2774 -1 /system/lib64/vndk-R/android.hardware.camera.common@1.0.so
+64768 2775 -1 /system/lib64/vndk-R/android.hardware.camera.device@1.0.so
+64768 2776 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.2.so
+64768 2777 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.3.so
+64768 2778 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.4.so
+64768 2779 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.5.so
+64768 2780 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.2.so
+64768 2781 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.3.so
+64768 2782 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.4.so
+64768 2783 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.5.so
+64768 2784 -1 /system/lib64/vndk-R/android.hardware.camera.provider@2.4.so
+64768 2785 -1 /system/lib64/vndk-R/android.hardware.camera.provider@2.5.so
+64768 2786 -1 /system/lib64/vndk-R/android.hardware.cas.native@1.0.so
+64768 2787 -1 /system/lib64/vndk-R/android.hardware.cas@1.0.so
+64768 2788 -1 /system/lib64/vndk-R/android.hardware.cas@1.1.so
+64768 2789 -1 /system/lib64/vndk-R/android.hardware.configstore-utils.so
+64768 2790 -1 /system/lib64/vndk-R/android.hardware.configstore@1.0.so
+64768 2791 -1 /system/lib64/vndk-R/android.hardware.configstore@1.1.so
+64768 2792 -1 /system/lib64/vndk-R/android.hardware.confirmationui-support-lib.so
+64768 2793 -1 /system/lib64/vndk-R/android.hardware.confirmationui@1.0.so
+64768 2794 -1 /system/lib64/vndk-R/android.hardware.contexthub@1.0.so
+64768 2795 -1 /system/lib64/vndk-R/android.hardware.drm@1.0.so
+64768 2796 -1 /system/lib64/vndk-R/android.hardware.drm@1.1.so
+64768 2797 -1 /system/lib64/vndk-R/android.hardware.drm@1.2.so
+64768 2798 -1 /system/lib64/vndk-R/android.hardware.dumpstate@1.0.so
+64768 2799 -1 /system/lib64/vndk-R/android.hardware.fastboot@1.0.so
+64768 2800 -1 /system/lib64/vndk-R/android.hardware.gatekeeper@1.0.so
+64768 2801 -1 /system/lib64/vndk-R/android.hardware.gnss.measurement_corrections@1.0.so
+64768 2802 -1 /system/lib64/vndk-R/android.hardware.gnss.visibility_control@1.0.so
+64768 2803 -1 /system/lib64/vndk-R/android.hardware.gnss@1.0.so
+64768 2804 -1 /system/lib64/vndk-R/android.hardware.gnss@1.1.so
+64768 2805 -1 /system/lib64/vndk-R/android.hardware.gnss@2.0.so
+64768 2806 -1 /system/lib64/vndk-R/android.hardware.graphics.allocator@2.0.so
+64768 2807 -1 /system/lib64/vndk-R/android.hardware.graphics.allocator@3.0.so
+64768 2808 -1 /system/lib64/vndk-R/android.hardware.graphics.allocator@4.0.so
+64768 2809 -1 /system/lib64/vndk-R/android.hardware.graphics.bufferqueue@1.0.so
+64768 2810 -1 /system/lib64/vndk-R/android.hardware.graphics.bufferqueue@2.0.so
+64768 2811 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.1.so
+64768 2812 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.2.so
+64768 2813 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.3.so
+64768 2814 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.4.so
+64768 2815 -1 /system/lib64/vndk-R/android.hardware.health.storage@1.0.so
+64768 2816 -1 /system/lib64/vndk-R/android.hardware.health@1.0.so
+64768 2817 -1 /system/lib64/vndk-R/android.hardware.health@2.0.so
+64768 2818 -1 /system/lib64/vndk-R/android.hardware.input.classifier@1.0.so
+64768 2819 -1 /system/lib64/vndk-R/android.hardware.input.common@1.0.so
+64768 2820 -1 /system/lib64/vndk-R/android.hardware.ir@1.0.so
+64768 2821 -1 /system/lib64/vndk-R/android.hardware.keymaster@3.0.so
+64768 2822 -1 /system/lib64/vndk-R/android.hardware.keymaster@4.0.so
+64768 2823 -1 /system/lib64/vndk-R/android.hardware.light@2.0.so
+64768 2824 -1 /system/lib64/vndk-R/android.hardware.media.bufferpool@1.0.so
+64768 2825 -1 /system/lib64/vndk-R/android.hardware.media.bufferpool@2.0.so
+64768 2826 -1 /system/lib64/vndk-R/android.hardware.media.c2@1.0.so
+64768 2827 -1 /system/lib64/vndk-R/android.hardware.media.omx@1.0.so
+64768 2828 -1 /system/lib64/vndk-R/android.hardware.media@1.0.so
+64768 2900 -1 /system/lib64/vndk-R/libadf.so
+64768 2829 -1 /system/lib64/vndk-R/android.hardware.memtrack@1.0.so
+64768 2830 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.0.so
+64768 2831 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.1.so
+64768 2832 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.2.so
+64768 2833 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.3.so
+64768 2834 -1 /system/lib64/vndk-R/android.hardware.nfc@1.0.so
+64768 2835 -1 /system/lib64/vndk-R/android.hardware.nfc@1.1.so
+64768 2836 -1 /system/lib64/vndk-R/android.hardware.nfc@1.2.so
+64768 2837 -1 /system/lib64/vndk-R/android.hardware.oemlock@1.0.so
+64768 2838 -1 /system/lib64/vndk-R/android.hardware.power.stats@1.0.so
+64768 2839 -1 /system/lib64/vndk-R/android.hardware.power@1.0.so
+64768 2840 -1 /system/lib64/vndk-R/android.hardware.power@1.1.so
+64768 2841 -1 /system/lib64/vndk-R/android.hardware.power@1.2.so
+64768 2842 -1 /system/lib64/vndk-R/android.hardware.power@1.3.so
+64768 2843 -1 /system/lib64/vndk-R/android.hardware.radio.config@1.0.so
+64768 2844 -1 /system/lib64/vndk-R/android.hardware.radio.config@1.1.so
+64768 2845 -1 /system/lib64/vndk-R/android.hardware.radio.config@1.2.so
+64768 2846 -1 /system/lib64/vndk-R/android.hardware.radio.deprecated@1.0.so
+64768 2847 -1 /system/lib64/vndk-R/android.hardware.radio@1.0.so
+64768 2848 -1 /system/lib64/vndk-R/android.hardware.radio@1.1.so
+64768 2849 -1 /system/lib64/vndk-R/android.hardware.radio@1.2.so
+64768 2850 -1 /system/lib64/vndk-R/android.hardware.radio@1.3.so
+64768 2851 -1 /system/lib64/vndk-R/android.hardware.radio@1.4.so
+64768 2852 -1 /system/lib64/vndk-R/android.hardware.secure_element@1.0.so
+64768 2853 -1 /system/lib64/vndk-R/android.hardware.secure_element@1.1.so
+64768 2854 -1 /system/lib64/vndk-R/android.hardware.sensors@1.0.so
+64768 2855 -1 /system/lib64/vndk-R/android.hardware.sensors@2.0.so
+64768 2856 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.0-core.so
+64768 2857 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.0.so
+64768 2858 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.1.so
+64768 2859 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.2.so
+64768 2860 -1 /system/lib64/vndk-R/android.hardware.tetheroffload.config@1.0.so
+64768 2861 -1 /system/lib64/vndk-R/android.hardware.tetheroffload.control@1.0.so
+64768 2862 -1 /system/lib64/vndk-R/android.hardware.thermal@1.0.so
+64768 2863 -1 /system/lib64/vndk-R/android.hardware.thermal@1.1.so
+64768 2864 -1 /system/lib64/vndk-R/android.hardware.thermal@2.0.so
+64768 2865 -1 /system/lib64/vndk-R/android.hardware.tv.cec@1.0.so
+64768 2866 -1 /system/lib64/vndk-R/android.hardware.tv.cec@2.0.so
+64768 2867 -1 /system/lib64/vndk-R/android.hardware.tv.input@1.0.so
+64768 2868 -1 /system/lib64/vndk-R/android.hardware.tv.tuner@1.0.so
+64768 2869 -1 /system/lib64/vndk-R/android.hardware.usb.gadget@1.0.so
+64768 2870 -1 /system/lib64/vndk-R/android.hardware.usb@1.0.so
+64768 2871 -1 /system/lib64/vndk-R/android.hardware.usb@1.1.so
+64768 2872 -1 /system/lib64/vndk-R/android.hardware.usb@1.2.so
+64768 2873 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.0.so
+64768 2874 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.1.so
+64768 2875 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.2.so
+64768 2876 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.3.so
+64768 2877 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.4.so
+64768 2878 -1 /system/lib64/vndk-R/android.hardware.vr@1.0.so
+64768 2879 -1 /system/lib64/vndk-R/android.hardware.weaver@1.0.so
+64768 2880 -1 /system/lib64/vndk-R/android.hardware.wifi.hostapd@1.0.so
+64768 2881 -1 /system/lib64/vndk-R/android.hardware.wifi.hostapd@1.1.so
+64768 2882 -1 /system/lib64/vndk-R/android.hardware.wifi.offload@1.0.so
+64768 2883 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.0.so
+64768 2884 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.1.so
+64768 2885 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.2.so
+64768 2886 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.3.so
+64768 2887 -1 /system/lib64/vndk-R/android.hardware.wifi@1.0.so
+64768 2888 -1 /system/lib64/vndk-R/android.hardware.wifi@1.1.so
+64768 2889 -1 /system/lib64/vndk-R/android.hardware.wifi@1.2.so
+64768 2890 -1 /system/lib64/vndk-R/android.hardware.wifi@1.3.so
+64768 2891 -1 /system/lib64/vndk-R/android.hardware.wifi@1.4.so
+64768 2892 -1 /system/lib64/vndk-R/android.hidl.allocator@1.0.so
+64768 2893 -1 /system/lib64/vndk-R/android.hidl.memory.block@1.0.so
+64768 2894 -1 /system/lib64/vndk-R/android.hidl.token@1.0-utils.so
+64768 2895 -1 /system/lib64/vndk-R/android.hidl.token@1.0.so
+64768 2896 -1 /system/lib64/vndk-R/android.system.net.netd@1.0.so
+64768 2897 -1 /system/lib64/vndk-R/android.system.net.netd@1.1.so
+64768 2898 -1 /system/lib64/vndk-R/android.system.suspend@1.0.so
+64768 2899 -1 /system/lib64/vndk-R/android.system.wifi.keystore@1.0.so
+64768 2901 -1 /system/lib64/vndk-R/libaudioroute.so
+64768 2902 -1 /system/lib64/vndk-R/libaudioutils.so
+64768 2903 -1 /system/lib64/vndk-R/libbinder.so
+64768 2904 -1 /system/lib64/vndk-R/libcamera_metadata.so
+64768 2905 -1 /system/lib64/vndk-R/libcap.so
+64768 2906 -1 /system/lib64/vndk-R/libclang_rt.scudo-aarch64-android.so
+64768 2907 -1 /system/lib64/vndk-R/libclang_rt.scudo_minimal-aarch64-android.so
+64768 2908 -1 /system/lib64/vndk-R/libclang_rt.ubsan_standalone-aarch64-android.so
+64768 2909 -1 /system/lib64/vndk-R/libcn-cbor.so
+64768 2910 -1 /system/lib64/vndk-R/libcodec2.so
+64768 2911 -1 /system/lib64/vndk-R/libcrypto.so
+64768 2912 -1 /system/lib64/vndk-R/libcrypto_utils.so
+64768 2913 -1 /system/lib64/vndk-R/libcurl.so
+64768 2914 -1 /system/lib64/vndk-R/libdiskconfig.so
+64768 2915 -1 /system/lib64/vndk-R/libdumpstateutil.so
+64768 2916 -1 /system/lib64/vndk-R/libevent.so
+64768 2917 -1 /system/lib64/vndk-R/libexif.so
+64768 2918 -1 /system/lib64/vndk-R/libexpat.so
+64768 2919 -1 /system/lib64/vndk-R/libfmq.so
+64768 2920 -1 /system/lib64/vndk-R/libgatekeeper.so
+64768 2921 -1 /system/lib64/vndk-R/libgui.so
+64768 2922 -1 /system/lib64/vndk-R/libhardware_legacy.so
+64768 2923 -1 /system/lib64/vndk-R/libhidlallocatorutils.so
+64768 2924 -1 /system/lib64/vndk-R/libjpeg.so
+64768 2925 -1 /system/lib64/vndk-R/libkeymaster_messages.so
+64768 2926 -1 /system/lib64/vndk-R/libkeymaster_portable.so
+64768 2927 -1 /system/lib64/vndk-R/libldacBT_abr.so
+64768 2928 -1 /system/lib64/vndk-R/libldacBT_enc.so
+64768 2929 -1 /system/lib64/vndk-R/liblz4.so
+64768 2930 -1 /system/lib64/vndk-R/libmedia_helper.so
+64768 2931 -1 /system/lib64/vndk-R/libmedia_omx.so
+64768 2932 -1 /system/lib64/vndk-R/libmemtrack.so
+64768 2933 -1 /system/lib64/vndk-R/libminijail.so
+64768 2934 -1 /system/lib64/vndk-R/libmkbootimg_abi_check.so
+64768 2935 -1 /system/lib64/vndk-R/libnetutils.so
+64768 2936 -1 /system/lib64/vndk-R/libnl.so
+64768 2937 -1 /system/lib64/vndk-R/libpcre2.so
+64768 2938 -1 /system/lib64/vndk-R/libpiex.so
+64768 2939 -1 /system/lib64/vndk-R/libpng.so
+64768 2940 -1 /system/lib64/vndk-R/libpower.so
+64768 2941 -1 /system/lib64/vndk-R/libprocinfo.so
+64768 2942 -1 /system/lib64/vndk-R/libprotobuf-cpp-full-3.9.1.so
+64768 2945 -1 /system/lib64/vndk-R/libradio_metadata.so
+64768 2943 -1 /system/lib64/vndk-R/libprotobuf-cpp-lite-3.9.1.so
+64768 2944 -1 /system/lib64/vndk-R/libpuresoftkeymasterdevice.so
+64768 2946 -1 /system/lib64/vndk-R/libselinux.so
+64768 2947 -1 /system/lib64/vndk-R/libsoftkeymasterdevice.so
+64768 2948 -1 /system/lib64/vndk-R/libspeexresampler.so
+64768 2949 -1 /system/lib64/vndk-R/libsqlite.so
+64768 2950 -1 /system/lib64/vndk-R/libssl.so
+64768 2951 -1 /system/lib64/vndk-R/libstagefright_bufferpool@2.0.so
+64768 2952 -1 /system/lib64/vndk-R/libstagefright_bufferqueue_helper.so
+64768 2953 -1 /system/lib64/vndk-R/libstagefright_foundation.so
+64768 2954 -1 /system/lib64/vndk-R/libstagefright_omx.so
+64768 2955 -1 /system/lib64/vndk-R/libstagefright_omx_utils.so
+64768 2956 -1 /system/lib64/vndk-R/libstagefright_xmlparser.so
+64768 2957 -1 /system/lib64/vndk-R/libsysutils.so
+64768 2958 -1 /system/lib64/vndk-R/libtinyalsa.so
+64768 2959 -1 /system/lib64/vndk-R/libtinyxml2.so
+64768 2960 -1 /system/lib64/vndk-R/libui.so
+64768 2961 -1 /system/lib64/vndk-R/libusbhost.so
+64768 2962 -1 /system/lib64/vndk-R/libwifi-system-iface.so
+64768 2963 -1 /system/lib64/vndk-R/libxml2.so
+64768 2964 -1 /system/lib64/vndk-R/libyuv.so
+64768 2965 -1 /system/lib64/vndk-R/libziparchive.so
+23 18481 -1 /system/lib64/vndk-sp-R
+64768 2984 -1 /system/lib64/vndk-sp-R/libbase.so
+64768 2993 -1 /system/lib64/vndk-sp-R/libhidlmemory.so
+64768 2992 -1 /system/lib64/vndk-sp-R/libhidlbase.so
+64768 2967 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.common@1.0.so
+64768 2983 -1 /system/lib64/vndk-sp-R/libbacktrace.so
+64768 2995 -1 /system/lib64/vndk-sp-R/libjsoncpp.so
+64768 2972 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@3.0.so
+23 33142 -1 /system/lib64/vndk-sp-R/hw
+64768 2979 -1 /system/lib64/vndk-sp-R/hw/android.hidl.memory@1.0-impl.so
+64768 2969 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.common@1.2.so
+64768 2977 -1 /system/lib64/vndk-sp-R/android.hidl.safe_union@1.0.so
+64768 2986 -1 /system/lib64/vndk-sp-R/libbinderthreadstate.so
+64768 2982 -1 /system/lib64/vndk-sp-R/libRS_internal.so
+64768 2974 -1 /system/lib64/vndk-sp-R/android.hardware.renderscript@1.0.so
+64768 2970 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@2.0.so
+64768 2985 -1 /system/lib64/vndk-sp-R/libbcinfo.so
+64768 2988 -1 /system/lib64/vndk-sp-R/libc++.so
+64768 2987 -1 /system/lib64/vndk-sp-R/libblas.so
+64768 2981 -1 /system/lib64/vndk-sp-R/libRSDriver.so
+64768 2975 -1 /system/lib64/vndk-sp-R/android.hidl.memory.token@1.0.so
+64768 2990 -1 /system/lib64/vndk-sp-R/libcutils.so
+64768 2989 -1 /system/lib64/vndk-sp-R/libcompiler_rt.so
+64768 2996 -1 /system/lib64/vndk-sp-R/liblzma.so
+64768 2999 -1 /system/lib64/vndk-sp-R/libutils.so
+64768 2968 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.common@1.1.so
+64768 2991 -1 /system/lib64/vndk-sp-R/libhardware.so
+64768 2998 -1 /system/lib64/vndk-sp-R/libunwindstack.so
+64768 2980 -1 /system/lib64/vndk-sp-R/libRSCpuRef.so
+64768 3001 -1 /system/lib64/vndk-sp-R/libz.so
+64768 2994 -1 /system/lib64/vndk-sp-R/libion.so
+64768 2971 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@2.1.so
+64768 3000 -1 /system/lib64/vndk-sp-R/libutilscallstack.so
+64768 2976 -1 /system/lib64/vndk-sp-R/android.hidl.memory@1.0.so
+64768 2973 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@4.0.so
+64768 2997 -1 /system/lib64/vndk-sp-R/libprocessgroup.so
+23 1509502 -1 /system/xbin
+64768 3265 -1 /system/xbin/su
+23 25397 -1 /system/framework
+64768 1628 -1 /system/framework/services.jar.bprof
+64768 1429 -1 /system/framework/boot-framework-atb-backward-compatibility.vdex
+64768 1428 -1 /system/framework/boot-ext.vdex
+64768 1260 -1 /system/framework/android.test.base.jar
+64768 1436 -1 /system/framework/bouncycastle.jar
+64768 1423 -1 /system/framework/bmgr.jar
+64768 1453 -1 /system/framework/framework-res.apk
+64768 1444 -1 /system/framework/content.jar
+64768 1256 -1 /system/framework/QtiTelephonyServicelibrary.jar
+64768 1272 -1 /system/framework/apex-okhttp.vdex
+64768 1637 -1 /system/framework/uimremoteserverlibrary.jar
+64768 1433 -1 /system/framework/boot-telephony-common.vdex
+64768 1269 -1 /system/framework/apex-framework-atb-backward-compatibility.vdex
+64768 1263 -1 /system/framework/apache-xml.jar
+23 38594 -1 /system/framework/oat
+23 38595 -1 /system/framework/oat/arm64
+64768 1547 -1 /system/framework/oat/arm64/android.hidl.manager-V1.0-java.odex
+64768 1563 -1 /system/framework/oat/arm64/com.android.location.provider.odex
+64768 1553 -1 /system/framework/oat/arm64/android.test.runner.odex
+64768 1544 -1 /system/framework/oat/arm64/am.vdex
+64768 1586 -1 /system/framework/oat/arm64/locksettings.vdex
+64768 1539 -1 /system/framework/oat/arm64/LteDirectDiscoveryLibrary.odex
+64768 1554 -1 /system/framework/oat/arm64/android.test.runner.vdex
+64768 1567 -1 /system/framework/oat/arm64/com.android.mediadrm.signer.odex
+64768 1596 -1 /system/framework/oat/arm64/radioconfiginterfacelibrary.vdex
+64768 1578 -1 /system/framework/oat/arm64/hid.vdex
+64768 1592 -1 /system/framework/oat/arm64/org.apache.http.legacy.vdex
+64768 1546 -1 /system/framework/oat/arm64/android.hidl.base-V1.0-java.vdex
+64768 1560 -1 /system/framework/oat/arm64/bu.vdex
+64768 1562 -1 /system/framework/oat/arm64/com.android.future.usb.accessory.vdex
+64768 1597 -1 /system/framework/oat/arm64/radioconfiglibrary.odex
+64768 1559 -1 /system/framework/oat/arm64/bu.odex
+64768 1609 -1 /system/framework/oat/arm64/svc.vdex
+64768 1612 -1 /system/framework/oat/arm64/uiautomator.odex
+64768 1577 -1 /system/framework/oat/arm64/hid.odex
+64768 1594 -1 /system/framework/oat/arm64/qcrilhook.vdex
+64768 1571 -1 /system/framework/oat/arm64/content.odex
+64768 1591 -1 /system/framework/oat/arm64/org.apache.http.legacy.odex
+64768 1588 -1 /system/framework/oat/arm64/media.vdex
+64768 1579 -1 /system/framework/oat/arm64/input.odex
+64768 1575 -1 /system/framework/oat/arm64/ethernet-service.odex
+64768 1551 -1 /system/framework/oat/arm64/android.test.mock.odex
+64768 1619 -1 /system/framework/oat/arm64/vr.vdex
+64768 1617 -1 /system/framework/oat/arm64/uimremoteserverlibrary.vdex
+64768 1598 -1 /system/framework/oat/arm64/radioconfiglibrary.vdex
+64768 1555 -1 /system/framework/oat/arm64/appwidget.odex
+64768 1599 -1 /system/framework/oat/arm64/requestsync.odex
+64768 1545 -1 /system/framework/oat/arm64/android.hidl.base-V1.0-java.odex
+64768 1614 -1 /system/framework/oat/arm64/uimremoteclientlibrary.odex
+64768 1570 -1 /system/framework/oat/arm64/com.android.nfc_extras.vdex
+64768 1572 -1 /system/framework/oat/arm64/content.vdex
+64768 1606 -1 /system/framework/oat/arm64/statsd-service.odex
+64768 1602 -1 /system/framework/oat/arm64/services.odex
+64768 1581 -1 /system/framework/oat/arm64/javax.obex.odex
+64768 1618 -1 /system/framework/oat/arm64/vr.odex
+64768 1605 -1 /system/framework/oat/arm64/sm.vdex
+64768 1558 -1 /system/framework/oat/arm64/bmgr.vdex
+64768 1576 -1 /system/framework/oat/arm64/ethernet-service.vdex
+64768 1615 -1 /system/framework/oat/arm64/uimremoteclientlibrary.vdex
+64768 1543 -1 /system/framework/oat/arm64/am.odex
+64768 1583 -1 /system/framework/oat/arm64/jobscheduler-service.odex
+64768 1552 -1 /system/framework/oat/arm64/android.test.mock.vdex
+64768 1601 -1 /system/framework/oat/arm64/services.art
+64768 1556 -1 /system/framework/oat/arm64/appwidget.vdex
+64768 1548 -1 /system/framework/oat/arm64/android.hidl.manager-V1.0-java.vdex
+64768 1557 -1 /system/framework/oat/arm64/bmgr.odex
+64768 1613 -1 /system/framework/oat/arm64/uiautomator.vdex
+64768 1549 -1 /system/framework/oat/arm64/android.test.base.odex
+64768 1608 -1 /system/framework/oat/arm64/svc.odex
+64768 1568 -1 /system/framework/oat/arm64/com.android.mediadrm.signer.vdex
+64768 1595 -1 /system/framework/oat/arm64/radioconfiginterfacelibrary.odex
+64768 1587 -1 /system/framework/oat/arm64/media.odex
+64768 1566 -1 /system/framework/oat/arm64/com.android.media.remotedisplay.vdex
+64768 1589 -1 /system/framework/oat/arm64/monkey.odex
+64768 1603 -1 /system/framework/oat/arm64/services.vdex
+64768 1565 -1 /system/framework/oat/arm64/com.android.media.remotedisplay.odex
+64768 1593 -1 /system/framework/oat/arm64/qcrilhook.odex
+64768 1550 -1 /system/framework/oat/arm64/android.test.base.vdex
+64768 1564 -1 /system/framework/oat/arm64/com.android.location.provider.vdex
+64768 1573 -1 /system/framework/oat/arm64/dpm.odex
+64768 1561 -1 /system/framework/oat/arm64/com.android.future.usb.accessory.odex
+64768 1607 -1 /system/framework/oat/arm64/statsd-service.vdex
+64768 1611 -1 /system/framework/oat/arm64/telecom.vdex
+64768 1569 -1 /system/framework/oat/arm64/com.android.nfc_extras.odex
+64768 1540 -1 /system/framework/oat/arm64/LteDirectDiscoveryLibrary.vdex
+64768 1542 -1 /system/framework/oat/arm64/QtiTelephonyServicelibrary.vdex
+64768 1574 -1 /system/framework/oat/arm64/dpm.vdex
+64768 1584 -1 /system/framework/oat/arm64/jobscheduler-service.vdex
+64768 1585 -1 /system/framework/oat/arm64/locksettings.odex
+64768 1616 -1 /system/framework/oat/arm64/uimremoteserverlibrary.odex
+64768 1541 -1 /system/framework/oat/arm64/QtiTelephonyServicelibrary.odex
+64768 1590 -1 /system/framework/oat/arm64/monkey.vdex
+64768 1582 -1 /system/framework/oat/arm64/javax.obex.vdex
+64768 1580 -1 /system/framework/oat/arm64/input.vdex
+64768 1600 -1 /system/framework/oat/arm64/requestsync.vdex
+64768 1610 -1 /system/framework/oat/arm64/telecom.odex
+64768 1604 -1 /system/framework/oat/arm64/sm.odex
+23 180917 -1 /system/framework/oat/arm
+64768 1474 -1 /system/framework/oat/arm/android.hidl.manager-V1.0-java.odex
+64768 1490 -1 /system/framework/oat/arm/com.android.location.provider.odex
+64768 1480 -1 /system/framework/oat/arm/android.test.runner.odex
+64768 1471 -1 /system/framework/oat/arm/am.vdex
+64768 1509 -1 /system/framework/oat/arm/locksettings.vdex
+64768 1466 -1 /system/framework/oat/arm/LteDirectDiscoveryLibrary.odex
+64768 1481 -1 /system/framework/oat/arm/android.test.runner.vdex
+64768 1494 -1 /system/framework/oat/arm/com.android.mediadrm.signer.odex
+64768 1519 -1 /system/framework/oat/arm/radioconfiginterfacelibrary.vdex
+64768 1503 -1 /system/framework/oat/arm/hid.vdex
+64768 1515 -1 /system/framework/oat/arm/org.apache.http.legacy.vdex
+64768 1473 -1 /system/framework/oat/arm/android.hidl.base-V1.0-java.vdex
+64768 1487 -1 /system/framework/oat/arm/bu.vdex
+64768 1489 -1 /system/framework/oat/arm/com.android.future.usb.accessory.vdex
+64768 1520 -1 /system/framework/oat/arm/radioconfiglibrary.odex
+64768 1486 -1 /system/framework/oat/arm/bu.odex
+64768 1527 -1 /system/framework/oat/arm/svc.vdex
+64768 1530 -1 /system/framework/oat/arm/uiautomator.odex
+64768 1502 -1 /system/framework/oat/arm/hid.odex
+64768 1517 -1 /system/framework/oat/arm/qcrilhook.vdex
+64768 1498 -1 /system/framework/oat/arm/content.odex
+64768 1514 -1 /system/framework/oat/arm/org.apache.http.legacy.odex
+64768 1511 -1 /system/framework/oat/arm/media.vdex
+64768 1504 -1 /system/framework/oat/arm/input.odex
+64768 1478 -1 /system/framework/oat/arm/android.test.mock.odex
+64768 1537 -1 /system/framework/oat/arm/vr.vdex
+64768 1535 -1 /system/framework/oat/arm/uimremoteserverlibrary.vdex
+64768 1521 -1 /system/framework/oat/arm/radioconfiglibrary.vdex
+64768 1482 -1 /system/framework/oat/arm/appwidget.odex
+64768 1522 -1 /system/framework/oat/arm/requestsync.odex
+64768 1472 -1 /system/framework/oat/arm/android.hidl.base-V1.0-java.odex
+64768 1532 -1 /system/framework/oat/arm/uimremoteclientlibrary.odex
+64768 1497 -1 /system/framework/oat/arm/com.android.nfc_extras.vdex
+64768 1499 -1 /system/framework/oat/arm/content.vdex
+64768 1506 -1 /system/framework/oat/arm/javax.obex.odex
+64768 1536 -1 /system/framework/oat/arm/vr.odex
+64768 1525 -1 /system/framework/oat/arm/sm.vdex
+64768 1485 -1 /system/framework/oat/arm/bmgr.vdex
+64768 1533 -1 /system/framework/oat/arm/uimremoteclientlibrary.vdex
+64768 1470 -1 /system/framework/oat/arm/am.odex
+64768 1479 -1 /system/framework/oat/arm/android.test.mock.vdex
+64768 1483 -1 /system/framework/oat/arm/appwidget.vdex
+64768 1475 -1 /system/framework/oat/arm/android.hidl.manager-V1.0-java.vdex
+64768 1484 -1 /system/framework/oat/arm/bmgr.odex
+64768 1531 -1 /system/framework/oat/arm/uiautomator.vdex
+64768 1476 -1 /system/framework/oat/arm/android.test.base.odex
+64768 1526 -1 /system/framework/oat/arm/svc.odex
+64768 1495 -1 /system/framework/oat/arm/com.android.mediadrm.signer.vdex
+64768 1518 -1 /system/framework/oat/arm/radioconfiginterfacelibrary.odex
+64768 1510 -1 /system/framework/oat/arm/media.odex
+64768 1493 -1 /system/framework/oat/arm/com.android.media.remotedisplay.vdex
+64768 1512 -1 /system/framework/oat/arm/monkey.odex
+64768 1492 -1 /system/framework/oat/arm/com.android.media.remotedisplay.odex
+64768 1516 -1 /system/framework/oat/arm/qcrilhook.odex
+64768 1477 -1 /system/framework/oat/arm/android.test.base.vdex
+64768 1491 -1 /system/framework/oat/arm/com.android.location.provider.vdex
+64768 1500 -1 /system/framework/oat/arm/dpm.odex
+64768 1488 -1 /system/framework/oat/arm/com.android.future.usb.accessory.odex
+64768 1529 -1 /system/framework/oat/arm/telecom.vdex
+64768 1496 -1 /system/framework/oat/arm/com.android.nfc_extras.odex
+64768 1467 -1 /system/framework/oat/arm/LteDirectDiscoveryLibrary.vdex
+64768 1469 -1 /system/framework/oat/arm/QtiTelephonyServicelibrary.vdex
+64768 1501 -1 /system/framework/oat/arm/dpm.vdex
+64768 1508 -1 /system/framework/oat/arm/locksettings.odex
+64768 1534 -1 /system/framework/oat/arm/uimremoteserverlibrary.odex
+64768 1468 -1 /system/framework/oat/arm/QtiTelephonyServicelibrary.odex
+64768 1513 -1 /system/framework/oat/arm/monkey.vdex
+64768 1507 -1 /system/framework/oat/arm/javax.obex.vdex
+64768 1505 -1 /system/framework/oat/arm/input.vdex
+64768 1523 -1 /system/framework/oat/arm/requestsync.vdex
+64768 1528 -1 /system/framework/oat/arm/telecom.odex
+64768 1524 -1 /system/framework/oat/arm/sm.odex
+64768 1430 -1 /system/framework/boot-framework.vdex
+64768 1626 -1 /system/framework/requestsync.jar
+64768 1442 -1 /system/framework/com.android.nfc_extras.jar
+64768 1440 -1 /system/framework/com.android.media.remotedisplay.jar
+64768 1258 -1 /system/framework/android.hidl.base-V1.0-java.jar
+64768 1435 -1 /system/framework/boot.vdex
+64768 1449 -1 /system/framework/embmslibrary.jar
+64768 1273 -1 /system/framework/apex-telephony-common.vdex
+64768 1443 -1 /system/framework/conscrypt.jar
+64768 1623 -1 /system/framework/qcrilhook.jar
+64768 1632 -1 /system/framework/svc.jar
+64768 1262 -1 /system/framework/android.test.runner.jar
+64768 1426 -1 /system/framework/boot-core-icu4j.vdex
+64768 1264 -1 /system/framework/apex-apache-xml.vdex
+64768 1451 -1 /system/framework/ext.jar
+64768 1439 -1 /system/framework/com.android.location.provider.jar
+64768 1627 -1 /system/framework/services.jar
+64768 1441 -1 /system/framework/com.android.mediadrm.signer.jar
+64768 1261 -1 /system/framework/android.test.mock.jar
+64768 1275 -1 /system/framework/apex.vdex
+64768 1454 -1 /system/framework/framework.jar
+64768 1267 -1 /system/framework/apex-core-libart.vdex
+64768 1259 -1 /system/framework/android.hidl.manager-V1.0-java.jar
+64768 1432 -1 /system/framework/boot-okhttp.vdex
+64768 1458 -1 /system/framework/javax.obex.jar
+23 30842 -1 /system/framework/arm64
+2054 362 -1 /system/framework/arm64/boot-ims-common.art
+64768 1429 -1 /system/framework/arm64/boot-framework-atb-backward-compatibility.vdex
+2054 356 -1 /system/framework/arm64/boot-bouncycastle.art
+64768 1428 -1 /system/framework/arm64/boot-ext.vdex
+64768 1409 -1 /system/framework/arm64/boot-ims-common.oat
+64768 1354 -1 /system/framework/arm64/apex-bouncycastle.art
+64768 1421 -1 /system/framework/arm64/boot.oat
+64768 1272 -1 /system/framework/arm64/apex-okhttp.vdex
+64768 1433 -1 /system/framework/arm64/boot-telephony-common.vdex
+64768 1269 -1 /system/framework/arm64/apex-framework-atb-backward-compatibility.vdex
+64768 1430 -1 /system/framework/arm64/boot-framework.vdex
+64768 1382 -1 /system/framework/arm64/apex-voip-common.oat
+64768 1352 -1 /system/framework/arm64/apex-apache-xml.oat
+64768 1360 -1 /system/framework/arm64/apex-core-libart.art
+64768 1435 -1 /system/framework/arm64/boot.vdex
+64768 1397 -1 /system/framework/arm64/boot-core-libart.oat
+64768 1273 -1 /system/framework/arm64/apex-telephony-common.vdex
+64768 1351 -1 /system/framework/arm64/apex-apache-xml.art
+2054 359 -1 /system/framework/arm64/boot-ext.art
+64768 1426 -1 /system/framework/arm64/boot-core-icu4j.vdex
+64768 1264 -1 /system/framework/arm64/apex-apache-xml.vdex
+64768 1373 -1 /system/framework/arm64/apex-ims-common.oat
+2054 357 -1 /system/framework/arm64/boot-apache-xml.art
+64768 1275 -1 /system/framework/arm64/apex.vdex
+64768 1267 -1 /system/framework/arm64/apex-core-libart.vdex
+64768 1372 -1 /system/framework/arm64/apex-ims-common.art
+64768 1361 -1 /system/framework/arm64/apex-core-libart.oat
+2054 360 -1 /system/framework/arm64/boot-telephony-common.art
+64768 1385 -1 /system/framework/arm64/apex.oat
+64768 1432 -1 /system/framework/arm64/boot-okhttp.vdex
+2054 352 -1 /system/framework/arm64/boot.art
+64768 1427 -1 /system/framework/arm64/boot-core-libart.vdex
+64768 1418 -1 /system/framework/arm64/boot-voip-common.oat
+64768 1268 -1 /system/framework/arm64/apex-ext.vdex
+64768 1270 -1 /system/framework/arm64/apex-framework.vdex
+64768 1369 -1 /system/framework/arm64/apex-framework.art
+64768 1367 -1 /system/framework/arm64/apex-framework-atb-backward-compatibility.oat
+64768 1366 -1 /system/framework/arm64/apex-framework-atb-backward-compatibility.art
+64768 1388 -1 /system/framework/arm64/boot-apache-xml.oat
+64768 1403 -1 /system/framework/arm64/boot-framework-atb-backward-compatibility.oat
+64768 1358 -1 /system/framework/arm64/apex-core-icu4j.oat
+64768 1378 -1 /system/framework/arm64/apex-telephony-common.art
+64768 1406 -1 /system/framework/arm64/boot-framework.oat
+2054 363 -1 /system/framework/arm64/boot-framework-atb-backward-compatibility.art
+2054 361 -1 /system/framework/arm64/boot-voip-common.art
+64768 1363 -1 /system/framework/arm64/apex-ext.art
+64768 1424 -1 /system/framework/arm64/boot-apache-xml.vdex
+64768 1434 -1 /system/framework/arm64/boot-voip-common.vdex
+64768 1376 -1 /system/framework/arm64/apex-okhttp.oat
+64768 1355 -1 /system/framework/arm64/apex-bouncycastle.oat
+64768 1266 -1 /system/framework/arm64/apex-core-icu4j.vdex
+64768 1271 -1 /system/framework/arm64/apex-ims-common.vdex
+64768 1394 -1 /system/framework/arm64/boot-core-icu4j.oat
+2054 354 -1 /system/framework/arm64/boot-core-icu4j.art
+64768 1381 -1 /system/framework/arm64/apex-voip-common.art
+64768 1415 -1 /system/framework/arm64/boot-telephony-common.oat
+64768 1375 -1 /system/framework/arm64/apex-okhttp.art
+64768 1274 -1 /system/framework/arm64/apex-voip-common.vdex
+64768 1431 -1 /system/framework/arm64/boot-ims-common.vdex
+2054 355 -1 /system/framework/arm64/boot-okhttp.art
+64768 1391 -1 /system/framework/arm64/boot-bouncycastle.oat
+64768 1379 -1 /system/framework/arm64/apex-telephony-common.oat
+64768 1412 -1 /system/framework/arm64/boot-okhttp.oat
+64768 1425 -1 /system/framework/arm64/boot-bouncycastle.vdex
+64768 1357 -1 /system/framework/arm64/apex-core-icu4j.art
+2054 358 -1 /system/framework/arm64/boot-framework.art
+64768 1370 -1 /system/framework/arm64/apex-framework.oat
+2054 353 -1 /system/framework/arm64/boot-core-libart.art
+64768 1400 -1 /system/framework/arm64/boot-ext.oat
+64768 1364 -1 /system/framework/arm64/apex-ext.oat
+64768 1265 -1 /system/framework/arm64/apex-bouncycastle.vdex
+64768 1384 -1 /system/framework/arm64/apex.art
+64768 1438 -1 /system/framework/com.android.future.usb.accessory.jar
+64768 1427 -1 /system/framework/boot-core-libart.vdex
+64768 1625 -1 /system/framework/radioconfiglibrary.jar
+64768 1639 -1 /system/framework/vr.jar
+64768 1629 -1 /system/framework/services.jar.prof
+64768 1437 -1 /system/framework/bu.jar
+64768 1268 -1 /system/framework/apex-ext.vdex
+64768 1255 -1 /system/framework/LteDirectDiscoveryLibrary.jar
+64768 1620 -1 /system/framework/okhttp.jar
+64768 1270 -1 /system/framework/apex-framework.vdex
+64768 1459 -1 /system/framework/jobscheduler-service.jar
+64768 1257 -1 /system/framework/am.jar
+64768 1631 -1 /system/framework/statsd-service.jar
+64768 1622 -1 /system/framework/org.apache.http.legacy.jar.prof
+64768 1621 -1 /system/framework/org.apache.http.legacy.jar
+64768 1276 -1 /system/framework/appwidget.jar
+64768 1452 -1 /system/framework/framework-atb-backward-compatibility.jar
+64768 1634 -1 /system/framework/telephony-common.jar
+64768 1633 -1 /system/framework/telecom.jar
+64768 1460 -1 /system/framework/lockagent.jar
+64768 1636 -1 /system/framework/uimremoteclientlibrary.jar
+64768 1635 -1 /system/framework/uiautomator.jar
+64768 1446 -1 /system/framework/core-libart.jar
+64768 1424 -1 /system/framework/boot-apache-xml.vdex
+64768 1455 -1 /system/framework/hid.jar
+64768 1434 -1 /system/framework/boot-voip-common.vdex
+64768 1266 -1 /system/framework/apex-core-icu4j.vdex
+64768 1463 -1 /system/framework/monkey.jar
+23 18052 -1 /system/framework/arm
+2054 374 -1 /system/framework/arm/boot-ims-common.art
+64768 1429 -1 /system/framework/arm/boot-framework-atb-backward-compatibility.vdex
+2054 368 -1 /system/framework/arm/boot-bouncycastle.art
+64768 1428 -1 /system/framework/arm/boot-ext.vdex
+64768 1336 -1 /system/framework/arm/boot-ims-common.oat
+64768 1281 -1 /system/framework/arm/apex-bouncycastle.art
+64768 1348 -1 /system/framework/arm/boot.oat
+64768 1272 -1 /system/framework/arm/apex-okhttp.vdex
+64768 1433 -1 /system/framework/arm/boot-telephony-common.vdex
+64768 1269 -1 /system/framework/arm/apex-framework-atb-backward-compatibility.vdex
+64768 1430 -1 /system/framework/arm/boot-framework.vdex
+64768 1309 -1 /system/framework/arm/apex-voip-common.oat
+64768 1279 -1 /system/framework/arm/apex-apache-xml.oat
+64768 1287 -1 /system/framework/arm/apex-core-libart.art
+64768 1435 -1 /system/framework/arm/boot.vdex
+64768 1324 -1 /system/framework/arm/boot-core-libart.oat
+64768 1273 -1 /system/framework/arm/apex-telephony-common.vdex
+64768 1278 -1 /system/framework/arm/apex-apache-xml.art
+2054 371 -1 /system/framework/arm/boot-ext.art
+64768 1426 -1 /system/framework/arm/boot-core-icu4j.vdex
+64768 1264 -1 /system/framework/arm/apex-apache-xml.vdex
+64768 1300 -1 /system/framework/arm/apex-ims-common.oat
+2054 369 -1 /system/framework/arm/boot-apache-xml.art
+64768 1275 -1 /system/framework/arm/apex.vdex
+64768 1267 -1 /system/framework/arm/apex-core-libart.vdex
+64768 1299 -1 /system/framework/arm/apex-ims-common.art
+64768 1288 -1 /system/framework/arm/apex-core-libart.oat
+2054 372 -1 /system/framework/arm/boot-telephony-common.art
+64768 1312 -1 /system/framework/arm/apex.oat
+64768 1432 -1 /system/framework/arm/boot-okhttp.vdex
+2054 364 -1 /system/framework/arm/boot.art
+64768 1427 -1 /system/framework/arm/boot-core-libart.vdex
+64768 1345 -1 /system/framework/arm/boot-voip-common.oat
+64768 1268 -1 /system/framework/arm/apex-ext.vdex
+64768 1270 -1 /system/framework/arm/apex-framework.vdex
+64768 1296 -1 /system/framework/arm/apex-framework.art
+64768 1294 -1 /system/framework/arm/apex-framework-atb-backward-compatibility.oat
+64768 1293 -1 /system/framework/arm/apex-framework-atb-backward-compatibility.art
+64768 1315 -1 /system/framework/arm/boot-apache-xml.oat
+64768 1330 -1 /system/framework/arm/boot-framework-atb-backward-compatibility.oat
+64768 1285 -1 /system/framework/arm/apex-core-icu4j.oat
+64768 1305 -1 /system/framework/arm/apex-telephony-common.art
+64768 1333 -1 /system/framework/arm/boot-framework.oat
+2054 375 -1 /system/framework/arm/boot-framework-atb-backward-compatibility.art
+2054 373 -1 /system/framework/arm/boot-voip-common.art
+64768 1290 -1 /system/framework/arm/apex-ext.art
+64768 1424 -1 /system/framework/arm/boot-apache-xml.vdex
+64768 1434 -1 /system/framework/arm/boot-voip-common.vdex
+64768 1303 -1 /system/framework/arm/apex-okhttp.oat
+64768 1282 -1 /system/framework/arm/apex-bouncycastle.oat
+64768 1266 -1 /system/framework/arm/apex-core-icu4j.vdex
+64768 1271 -1 /system/framework/arm/apex-ims-common.vdex
+64768 1321 -1 /system/framework/arm/boot-core-icu4j.oat
+2054 366 -1 /system/framework/arm/boot-core-icu4j.art
+64768 1308 -1 /system/framework/arm/apex-voip-common.art
+64768 1342 -1 /system/framework/arm/boot-telephony-common.oat
+64768 1302 -1 /system/framework/arm/apex-okhttp.art
+64768 1274 -1 /system/framework/arm/apex-voip-common.vdex
+64768 1431 -1 /system/framework/arm/boot-ims-common.vdex
+2054 367 -1 /system/framework/arm/boot-okhttp.art
+64768 1318 -1 /system/framework/arm/boot-bouncycastle.oat
+64768 1306 -1 /system/framework/arm/apex-telephony-common.oat
+64768 1339 -1 /system/framework/arm/boot-okhttp.oat
+64768 1425 -1 /system/framework/arm/boot-bouncycastle.vdex
+64768 1284 -1 /system/framework/arm/apex-core-icu4j.art
+2054 370 -1 /system/framework/arm/boot-framework.art
+64768 1297 -1 /system/framework/arm/apex-framework.oat
+2054 365 -1 /system/framework/arm/boot-core-libart.art
+64768 1327 -1 /system/framework/arm/boot-ext.oat
+64768 1291 -1 /system/framework/arm/apex-ext.oat
+64768 1265 -1 /system/framework/arm/apex-bouncycastle.vdex
+64768 1311 -1 /system/framework/arm/apex.art
+64768 1461 -1 /system/framework/locksettings.jar
+64768 1457 -1 /system/framework/input.jar
+64768 1450 -1 /system/framework/ethernet-service.jar
+64768 1271 -1 /system/framework/apex-ims-common.vdex
+64768 1462 -1 /system/framework/media.jar
+64768 1274 -1 /system/framework/apex-voip-common.vdex
+64768 1431 -1 /system/framework/boot-ims-common.vdex
+64768 1456 -1 /system/framework/ims-common.jar
+64768 1445 -1 /system/framework/core-icu4j.jar
+64768 1425 -1 /system/framework/boot-bouncycastle.vdex
+64768 1624 -1 /system/framework/radioconfiginterfacelibrary.jar
+64768 1630 -1 /system/framework/sm.jar
+64768 1447 -1 /system/framework/core-oj.jar
+64768 1638 -1 /system/framework/voip-common.jar
+64768 1265 -1 /system/framework/apex-bouncycastle.vdex
+64768 1448 -1 /system/framework/dpm.jar
+24 19551 -1 /system/system_ext
+23 6440 -1 /system/apex
+64768 63 -1 /system/apex/com.android.art.debug.apex
+64768 69 -1 /system/apex/com.android.resolv.apex
+64768 64 -1 /system/apex/com.android.conscrypt.apex
+64768 65 -1 /system/apex/com.android.i18n.apex
+64768 66 -1 /system/apex/com.android.media.apex
+64768 67 -1 /system/apex/com.android.media.swcodec.apex
+64768 71 -1 /system/apex/com.android.tzdata.apex
+64768 62 -1 /system/apex/com.android.apex.cts.shim.apex
+64768 70 -1 /system/apex/com.android.runtime.apex
+64768 68 -1 /system/apex/com.android.neuralnetworks.apex
+64768 600 -1 /system/build.prop
+23 18599 -1 /system/lib
+64768 1641 -1 /system/lib/android.frameworks.bufferhub@1.0.so
+64768 1642 -1 /system/lib/android.frameworks.cameraservice.common@2.0.so
+64768 1643 -1 /system/lib/android.frameworks.cameraservice.device@2.0.so
+64768 1644 -1 /system/lib/android.frameworks.cameraservice.service@2.0.so
+64768 1645 -1 /system/lib/android.frameworks.schedulerservice@1.0.so
+64768 1646 -1 /system/lib/android.frameworks.sensorservice@1.0.so
+64768 1647 -1 /system/lib/android.frameworks.vr.composer@2.0.so
+64768 1648 -1 /system/lib/android.hardware.audio.common@2.0.so
+64768 1649 -1 /system/lib/android.hardware.audio.common@5.0.so
+64768 1650 -1 /system/lib/android.hardware.biometrics.fingerprint@2.1.so
+64768 1651 -1 /system/lib/android.hardware.bluetooth.a2dp@1.0.so
+64768 1652 -1 /system/lib/android.hardware.bluetooth.audio@2.0.so
+64768 1653 -1 /system/lib/android.hardware.bluetooth@1.0.so
+64768 1654 -1 /system/lib/android.hardware.broadcastradio@1.0.so
+64768 1655 -1 /system/lib/android.hardware.broadcastradio@1.1.so
+64768 1656 -1 /system/lib/android.hardware.camera.common@1.0.so
+64768 1657 -1 /system/lib/android.hardware.camera.device@1.0.so
+64768 1658 -1 /system/lib/android.hardware.camera.device@3.2.so
+64768 1659 -1 /system/lib/android.hardware.camera.device@3.3.so
+64768 1660 -1 /system/lib/android.hardware.camera.device@3.4.so
+64768 1661 -1 /system/lib/android.hardware.camera.device@3.5.so
+64768 1662 -1 /system/lib/android.hardware.camera.provider@2.4.so
+64768 1663 -1 /system/lib/android.hardware.camera.provider@2.5.so
+64768 1664 -1 /system/lib/android.hardware.cas.native@1.0.so
+64768 1665 -1 /system/lib/android.hardware.cas@1.0.so
+64768 1666 -1 /system/lib/android.hardware.configstore-utils.so
+64768 1667 -1 /system/lib/android.hardware.configstore@1.0.so
+64768 1668 -1 /system/lib/android.hardware.configstore@1.1.so
+64768 1669 -1 /system/lib/android.hardware.contexthub@1.0.so
+64768 1670 -1 /system/lib/android.hardware.drm@1.0.so
+64768 1671 -1 /system/lib/android.hardware.drm@1.1.so
+64768 1672 -1 /system/lib/android.hardware.drm@1.2.so
+64768 1673 -1 /system/lib/android.hardware.gnss.measurement_corrections@1.0.so
+64768 1674 -1 /system/lib/android.hardware.gnss.visibility_control@1.0.so
+64768 1675 -1 /system/lib/android.hardware.gnss@1.0.so
+64768 1676 -1 /system/lib/android.hardware.gnss@1.1.so
+64768 1677 -1 /system/lib/android.hardware.gnss@2.0.so
+64768 1678 -1 /system/lib/android.hardware.graphics.allocator@2.0.so
+64768 1679 -1 /system/lib/android.hardware.graphics.allocator@3.0.so
+64768 1680 -1 /system/lib/android.hardware.graphics.allocator@4.0.so
+64768 1681 -1 /system/lib/android.hardware.graphics.bufferqueue@1.0.so
+64768 1682 -1 /system/lib/android.hardware.graphics.bufferqueue@2.0.so
+64768 1683 -1 /system/lib/android.hardware.graphics.common@1.0.so
+64768 1684 -1 /system/lib/android.hardware.graphics.common@1.1.so
+64768 1685 -1 /system/lib/android.hardware.graphics.common@1.2.so
+64768 1686 -1 /system/lib/android.hardware.graphics.composer@2.1.so
+64768 1687 -1 /system/lib/android.hardware.graphics.composer@2.2.so
+64768 1688 -1 /system/lib/android.hardware.graphics.composer@2.3.so
+64768 1689 -1 /system/lib/android.hardware.graphics.composer@2.4.so
+64768 1690 -1 /system/lib/android.hardware.graphics.mapper@2.0.so
+64768 1691 -1 /system/lib/android.hardware.graphics.mapper@2.1.so
+64768 1692 -1 /system/lib/android.hardware.graphics.mapper@3.0.so
+64768 1693 -1 /system/lib/android.hardware.graphics.mapper@4.0.so
+64768 1694 -1 /system/lib/android.hardware.input.classifier@1.0.so
+64768 1695 -1 /system/lib/android.hardware.input.common@1.0.so
+64768 1696 -1 /system/lib/android.hardware.ir@1.0.so
+64768 1697 -1 /system/lib/android.hardware.keymaster@3.0.so
+64768 1698 -1 /system/lib/android.hardware.keymaster@4.0.so
+64768 1699 -1 /system/lib/android.hardware.light@2.0.so
+64768 1700 -1 /system/lib/android.hardware.media.bufferpool@2.0.so
+64768 1701 -1 /system/lib/android.hardware.media.c2@1.0.so
+64768 1702 -1 /system/lib/android.hardware.media.omx@1.0.so
+64768 1703 -1 /system/lib/android.hardware.media@1.0.so
+64768 1704 -1 /system/lib/android.hardware.memtrack@1.0.so
+64768 1705 -1 /system/lib/android.hardware.power.stats@1.0.so
+64768 1706 -1 /system/lib/android.hardware.power@1.0.so
+64768 1707 -1 /system/lib/android.hardware.power@1.1.so
+64768 1708 -1 /system/lib/android.hardware.power@1.2.so
+64768 1709 -1 /system/lib/android.hardware.power@1.3.so
+64768 1710 -1 /system/lib/android.hardware.radio.config@1.0.so
+64768 1711 -1 /system/lib/android.hardware.radio.deprecated@1.0.so
+64768 1712 -1 /system/lib/android.hardware.radio@1.0.so
+64768 1713 -1 /system/lib/android.hardware.radio@1.1.so
+64768 1714 -1 /system/lib/android.hardware.radio@1.2.so
+64768 1715 -1 /system/lib/android.hardware.radio@1.3.so
+64768 1716 -1 /system/lib/android.hardware.radio@1.4.so
+64768 1717 -1 /system/lib/android.hardware.renderscript@1.0.so
+64768 1718 -1 /system/lib/android.hardware.secure_element@1.0.so
+64768 1719 -1 /system/lib/android.hardware.sensors@1.0.so
+64768 1720 -1 /system/lib/android.hardware.sensors@2.0.so
+64768 1721 -1 /system/lib/android.hardware.tetheroffload.config@1.0.so
+64768 1722 -1 /system/lib/android.hardware.thermal@1.0.so
+64768 1723 -1 /system/lib/android.hardware.tv.cec@1.0.so
+64768 1724 -1 /system/lib/android.hardware.tv.input@1.0.so
+64768 1725 -1 /system/lib/android.hardware.vibrator@1.0.so
+64768 1726 -1 /system/lib/android.hardware.vibrator@1.1.so
+64768 1727 -1 /system/lib/android.hardware.vibrator@1.2.so
+64768 1728 -1 /system/lib/android.hardware.vibrator@1.3.so
+64768 1729 -1 /system/lib/android.hardware.vibrator@1.4.so
+64768 1730 -1 /system/lib/android.hardware.vr@1.0.so
+64768 1731 -1 /system/lib/android.hardware.wifi@1.0.so
+64768 1732 -1 /system/lib/android.hidl.allocator@1.0.so
+64768 1733 -1 /system/lib/android.hidl.memory.token@1.0.so
+64768 1734 -1 /system/lib/android.hidl.memory@1.0.so
+64768 1735 -1 /system/lib/android.hidl.safe_union@1.0.so
+64768 1736 -1 /system/lib/android.hidl.token@1.0-utils.so
+64768 1737 -1 /system/lib/android.hidl.token@1.0.so
+64768 1738 -1 /system/lib/android.system.suspend@1.0.so
+23 1558810 -1 /system/lib/bootstrap
+64768 1740 -1 /system/lib/bootstrap/libc.so
+64768 1741 -1 /system/lib/bootstrap/libdl.so
+64768 1742 -1 /system/lib/bootstrap/libm.so
+23 19172 -1 /system/lib/drm
+64768 1744 -1 /system/lib/drm/libfwdlockengine.so
+64768 1745 -1 /system/lib/heapprofd_client.so
+23 1558815 -1 /system/lib/hw
+64768 1747 -1 /system/lib/hw/android.hidl.memory@1.0-impl.so
+64768 1748 -1 /system/lib/hw/audio.a2dp.default.so
+64768 1749 -1 /system/lib/hw/audio.hearing_aid.default.so
+64768 1750 -1 /system/lib/ld-android.so
+64768 1751 -1 /system/lib/lib-imsvideocodec.so
+64768 1752 -1 /system/lib/lib-imsvt.so
+64768 1753 -1 /system/lib/lib-imsvtextutils.so
+64768 1754 -1 /system/lib/lib-imsvtutils.so
+64768 1755 -1 /system/lib/libEGL.so
+64768 1756 -1 /system/lib/libETC1.so
+64768 1757 -1 /system/lib/libFFTEm.so
+64768 1758 -1 /system/lib/libGLESv1_CM.so
+64768 1759 -1 /system/lib/libGLESv2.so
+64768 1760 -1 /system/lib/libGLESv3.so
+64768 1761 -1 /system/lib/libGPQTEEC_system.so
+64768 1762 -1 /system/lib/libGPTEE_system.so
+64768 1763 -1 /system/lib/libOpenMAXAL.so
+64768 1764 -1 /system/lib/libOpenSLES.so
+64768 1765 -1 /system/lib/libQTEEConnector_system.so
+64768 1766 -1 /system/lib/libRS.so
+64768 1767 -1 /system/lib/libRSCacheDir.so
+64768 1768 -1 /system/lib/libRSCpuRef.so
+64768 1769 -1 /system/lib/libRSDriver.so
+64768 1770 -1 /system/lib/libRS_internal.so
+64768 1771 -1 /system/lib/libRScpp.so
+64768 1772 -1 /system/lib/libSurfaceFlingerProp.so
+64768 1773 -1 /system/lib/libaaudio.so
+64768 1774 -1 /system/lib/libaaudio_internal.so
+64768 1775 -1 /system/lib/libamidi.so
+64768 1776 -1 /system/lib/libandroid.so
+64768 1777 -1 /system/lib/libandroid_net.so
+64768 1778 -1 /system/lib/libandroid_runtime.so
+64768 1779 -1 /system/lib/libandroid_runtime_lazy.so
+64768 1780 -1 /system/lib/libandroid_servers.so
+64768 1781 -1 /system/lib/libandroidfw.so
+64768 1782 -1 /system/lib/libappfuse.so
+64768 1783 -1 /system/lib/libartpalette-system.so
+64768 1784 -1 /system/lib/libasyncio.so
+64768 1785 -1 /system/lib/libaudio-resampler.so
+64768 1786 -1 /system/lib/libaudioclient.so
+64768 1787 -1 /system/lib/libaudioeffect_jni.so
+64768 1788 -1 /system/lib/libaudiomanager.so
+64768 1789 -1 /system/lib/libaudiopolicy.so
+64768 1790 -1 /system/lib/libaudioutils.so
+64768 1791 -1 /system/lib/libbacktrace.so
+64768 1792 -1 /system/lib/libbase.so
+64768 1793 -1 /system/lib/libbcinfo.so
+64768 1794 -1 /system/lib/libbinder.so
+64768 1795 -1 /system/lib/libbinder_ndk.so
+64768 1796 -1 /system/lib/libbinderthreadstate.so
+64768 1797 -1 /system/lib/libblas.so
+64768 1798 -1 /system/lib/libbluetooth.so
+64768 1798 -1 /system/lib/libbluetooth_qti.so
+64768 1800 -1 /system/lib/libbpf.so
+64768 1801 -1 /system/lib/libbpf_android.so
+64768 1802 -1 /system/lib/libbufferhub.so
+64768 1803 -1 /system/lib/libbufferhubqueue.so
+64768 1804 -1 /system/lib/libc++.so
+1888 21 -1 /system/lib/libc.so
+64768 1806 -1 /system/lib/libcamera2ndk.so
+64768 1807 -1 /system/lib/libcamera_client.so
+64768 1808 -1 /system/lib/libcamera_metadata.so
+64768 1809 -1 /system/lib/libcameraservice.so
+64768 1810 -1 /system/lib/libcap.so
+64768 1811 -1 /system/lib/libcgrouprc.so
+64768 1812 -1 /system/lib/libchrome.so
+64768 1813 -1 /system/lib/libclang_rt.asan-arm-android.so
+64768 1814 -1 /system/lib/libclcore.bc
+64768 1815 -1 /system/lib/libclcore_debug.bc
+64768 1816 -1 /system/lib/libclcore_debug_g.bc
+64768 1817 -1 /system/lib/libclcore_g.bc
+64768 1818 -1 /system/lib/libclcore_neon.bc
+64768 1819 -1 /system/lib/libcodec2.so
+64768 1820 -1 /system/lib/libcodec2_client.so
+64768 1821 -1 /system/lib/libcodec2_hidl_client@1.0.so
+64768 1822 -1 /system/lib/libcodec2_vndk.so
+64768 1823 -1 /system/lib/libcompiler_rt.so
+64768 1824 -1 /system/lib/libcrypto.so
+64768 1825 -1 /system/lib/libcutils.so
+64768 1826 -1 /system/lib/libdatasource.so
+64768 1827 -1 /system/lib/libdebuggerd_client.so
+64768 1828 -1 /system/lib/libdepthphoto.so
+64768 1829 -1 /system/lib/libdexfile_support.so
+1888 22 -1 /system/lib/libdl.so
+64768 1831 -1 /system/lib/libdl_android.so
+64768 1832 -1 /system/lib/libdng_sdk.so
+64768 1833 -1 /system/lib/libdrm.so
+64768 1834 -1 /system/lib/libdrmframework.so
+64768 1835 -1 /system/lib/libdrmframework_jni.so
+64768 1836 -1 /system/lib/libdynamic_depth.so
+64768 1837 -1 /system/lib/libevent.so
+64768 1838 -1 /system/lib/libexif.so
+64768 1839 -1 /system/lib/libexpat.so
+64768 1840 -1 /system/lib/libfilterfw.so
+64768 1841 -1 /system/lib/libfilterpack_imageproc.so
+64768 1842 -1 /system/lib/libfmq.so
+64768 1843 -1 /system/lib/libft2.so
+64768 1844 -1 /system/lib/libgatekeeper.so
+64768 1845 -1 /system/lib/libgraphicsenv.so
+64768 1846 -1 /system/lib/libgui.so
+64768 1847 -1 /system/lib/libhardware.so
+64768 1848 -1 /system/lib/libhardware_legacy.so
+64768 1849 -1 /system/lib/libharfbuzz_ng.so
+64768 1850 -1 /system/lib/libheif.so
+64768 1851 -1 /system/lib/libhidl-gen-utils.so
+64768 1852 -1 /system/lib/libhidlallocatorutils.so
+64768 1853 -1 /system/lib/libhidlbase.so
+64768 1854 -1 /system/lib/libhidlmemory.so
+64768 1855 -1 /system/lib/libhidltransport.so
+64768 1856 -1 /system/lib/libhwbinder.so
+64768 1857 -1 /system/lib/libhwui.so
+64768 1858 -1 /system/lib/libimage_io.so
+64768 1859 -1 /system/lib/libimg_utils.so
+64768 1860 -1 /system/lib/libimscamera_jni.so
+64768 1861 -1 /system/lib/libimsmedia_jni.so
+64768 1862 -1 /system/lib/libinput.so
+64768 1863 -1 /system/lib/libinputflinger.so
+64768 1864 -1 /system/lib/libinputflinger_base.so
+64768 1865 -1 /system/lib/libinputreader.so
+64768 1866 -1 /system/lib/libinputreporter.so
+64768 1867 -1 /system/lib/libinputservice.so
+64768 1868 -1 /system/lib/libion.so
+64768 1869 -1 /system/lib/libiprouteutil.so
+64768 1870 -1 /system/lib/libjnigraphics.so
+64768 1871 -1 /system/lib/libjpeg.so
+64768 1872 -1 /system/lib/libkeymaster4support.so
+64768 1873 -1 /system/lib/libkeystore_aidl.so
+64768 1874 -1 /system/lib/libkeystore_binder.so
+64768 1875 -1 /system/lib/libkeystore_parcelables.so
+64768 1876 -1 /system/lib/liblayers_proto.so
+64768 1877 -1 /system/lib/libldacBT_abr.so
+64768 1878 -1 /system/lib/libldacBT_enc.so
+64768 1879 -1 /system/lib/liblog.so
+64768 1880 -1 /system/lib/liblogwrap.so
+64768 1881 -1 /system/lib/liblz4.so
+64768 1882 -1 /system/lib/liblzma.so
+1888 23 -1 /system/lib/libm.so
+64768 1884 -1 /system/lib/libmdnssd.so
+64768 1885 -1 /system/lib/libmedia.so
+64768 1886 -1 /system/lib/libmedia_codeclist.so
+64768 1887 -1 /system/lib/libmedia_helper.so
+64768 1888 -1 /system/lib/libmedia_jni.so
+64768 1889 -1 /system/lib/libmedia_jni_utils.so
+64768 1890 -1 /system/lib/libmedia_omx.so
+64768 1891 -1 /system/lib/libmedia_omx_client.so
+64768 1892 -1 /system/lib/libmediadrm.so
+64768 1893 -1 /system/lib/libmediadrmmetrics_lite.so
+64768 1894 -1 /system/lib/libmediametrics.so
+64768 1915 -1 /system/lib/libnl.so
+64768 1895 -1 /system/lib/libmediandk.so
+64768 1896 -1 /system/lib/libmediandk_utils.so
+64768 1897 -1 /system/lib/libmediaplayerservice.so
+64768 1898 -1 /system/lib/libmediautils.so
+64768 1899 -1 /system/lib/libmeminfo.so
+64768 1900 -1 /system/lib/libmemtrack.so
+64768 1901 -1 /system/lib/libmemunreachable.so
+64768 1902 -1 /system/lib/libminikin.so
+64768 1903 -1 /system/lib/libminui.so
+64768 1904 -1 /system/lib/libmtp.so
+64768 1905 -1 /system/lib/libnativebridge_lazy.so
+64768 1906 -1 /system/lib/libnativeloader_lazy.so
+64768 1907 -1 /system/lib/libnativewindow.so
+64768 1908 -1 /system/lib/libnblog.so
+64768 1909 -1 /system/lib/libnetd_client.so
+64768 1910 -1 /system/lib/libnetdbpf.so
+64768 1911 -1 /system/lib/libnetdutils.so
+64768 1912 -1 /system/lib/libnetlink.so
+64768 1913 -1 /system/lib/libnetutils.so
+64768 1914 -1 /system/lib/libneuralnetworks_packageinfo.so
+64768 1916 -1 /system/lib/libpackagelistparser.so
+64768 1917 -1 /system/lib/libpcre2.so
+64768 1918 -1 /system/lib/libpdfium.so
+64768 1919 -1 /system/lib/libpdx_default_transport.so
+64768 1920 -1 /system/lib/libpiex.so
+64768 1921 -1 /system/lib/libpng.so
+64768 1922 -1 /system/lib/libpower.so
+64768 1923 -1 /system/lib/libpowermanager.so
+64768 1924 -1 /system/lib/libprocessgroup.so
+64768 1925 -1 /system/lib/libprocinfo.so
+64768 1926 -1 /system/lib/libprotobuf-cpp-full.so
+64768 1927 -1 /system/lib/libprotobuf-cpp-lite.so
+64768 1928 -1 /system/lib/libpsi.so
+64768 1929 -1 /system/lib/libqcbor_system.so
+64768 1930 -1 /system/lib/libradio_metadata.so
+64768 1931 -1 /system/lib/librcc.so
+64768 1932 -1 /system/lib/libresourcemanagerservice.so
+64768 1933 -1 /system/lib/librs_jni.so
+64768 1934 -1 /system/lib/librtp_jni.so
+64768 1935 -1 /system/lib/libschedulerservicehidl.so
+64768 1936 -1 /system/lib/libsdm-disp-apis.so
+64768 1937 -1 /system/lib/libseccam.so
+64768 1938 -1 /system/lib/libsecureui_svcsock_system.so
+64768 1939 -1 /system/lib/libselinux.so
+64768 1940 -1 /system/lib/libsensor.so
+64768 1941 -1 /system/lib/libsensorprivacy.so
+64768 1942 -1 /system/lib/libsensorservice.so
+64768 1943 -1 /system/lib/libsensorservicehidl.so
+64768 1944 -1 /system/lib/libsfplugin_ccodec.so
+64768 1945 -1 /system/lib/libsfplugin_ccodec_utils.so
+64768 1946 -1 /system/lib/libsmcinvokecred.so
+64768 1947 -1 /system/lib/libsns_fastRPC_util.so
+64768 1948 -1 /system/lib/libsonic.so
+64768 1949 -1 /system/lib/libsonivox.so
+64768 1950 -1 /system/lib/libsoundpool.so
+64768 1951 -1 /system/lib/libsoundtrigger.so
+64768 1952 -1 /system/lib/libspeexresampler.so
+64768 1953 -1 /system/lib/libsqlite.so
+64768 1954 -1 /system/lib/libssl.so
+64768 1955 -1 /system/lib/libstagefright.so
+64768 1956 -1 /system/lib/libstagefright_amrnb_common.so
+64768 1957 -1 /system/lib/libstagefright_bufferpool@2.0.1.so
+64768 1958 -1 /system/lib/libstagefright_bufferqueue_helper.so
+64768 1959 -1 /system/lib/libstagefright_codecbase.so
+64768 1960 -1 /system/lib/libstagefright_foundation.so
+64768 1961 -1 /system/lib/libstagefright_http_support.so
+64768 1962 -1 /system/lib/libstagefright_httplive.so
+64768 1963 -1 /system/lib/libstagefright_omx.so
+64768 1964 -1 /system/lib/libstagefright_omx_utils.so
+64768 1965 -1 /system/lib/libstagefright_xmlparser.so
+64768 1966 -1 /system/lib/libstatslog.so
+64768 1967 -1 /system/lib/libstdc++.so
+64768 1968 -1 /system/lib/libsurfaceflinger.so
+64768 1969 -1 /system/lib/libsync.so
+64768 1970 -1 /system/lib/libsysutils.so
+64768 1971 -1 /system/lib/libtextclassifier.so
+64768 1972 -1 /system/lib/libtextclassifier_hash.so
+64768 1973 -1 /system/lib/libtflite.so
+64768 1974 -1 /system/lib/libtimestats_proto.so
+64768 1975 -1 /system/lib/libtinyalsa.so
+64768 1976 -1 /system/lib/libtinyxml2.so
+64768 1977 -1 /system/lib/libtombstoned_client.so
+64768 1978 -1 /system/lib/libtzcom.so
+64768 1979 -1 /system/lib/libui.so
+64768 1980 -1 /system/lib/libunwindstack.so
+64768 1981 -1 /system/lib/libusbhost.so
+64768 1982 -1 /system/lib/libutils.so
+64768 1983 -1 /system/lib/libutilscallstack.so
+64768 1984 -1 /system/lib/libvibrator.so
+64768 1985 -1 /system/lib/libvintf.so
+64768 1986 -1 /system/lib/libvndksupport.so
+64768 1987 -1 /system/lib/libvulkan.so
+64768 1988 -1 /system/lib/libwebviewchromium_loader.so
+64768 1989 -1 /system/lib/libwebviewchromium_plat_support.so
+64768 1990 -1 /system/lib/libwifi-jni.so
+64768 1991 -1 /system/lib/libwilhelm.so
+64768 1992 -1 /system/lib/libxml2.so
+64768 1993 -1 /system/lib/libyuv.so
+64768 1994 -1 /system/lib/libz.so
+64768 1995 -1 /system/lib/libziparchive.so
+23 1558912 -1 /system/lib/rfsa
+23 1558913 -1 /system/lib/rfsa/adsp
+64768 1998 -1 /system/lib/rfsa/adsp/libsns_low_lat_stream_skel.so
+64768 1999 -1 /system/lib/server_configurable_flags.so
+64768 2000 -1 /system/lib/suspend_control_aidl_interface-cpp.so
+23 16892 -1 /system/lib/vndk-R
+64768 2002 -1 /system/lib/vndk-R/android.frameworks.cameraservice.common@2.0.so
+64768 2003 -1 /system/lib/vndk-R/android.frameworks.cameraservice.device@2.0.so
+64768 2004 -1 /system/lib/vndk-R/android.frameworks.cameraservice.service@2.0.so
+64768 2005 -1 /system/lib/vndk-R/android.frameworks.displayservice@1.0.so
+64768 2006 -1 /system/lib/vndk-R/android.frameworks.schedulerservice@1.0.so
+64768 2007 -1 /system/lib/vndk-R/android.frameworks.sensorservice@1.0.so
+64768 2008 -1 /system/lib/vndk-R/android.frameworks.stats@1.0.so
+64768 2009 -1 /system/lib/vndk-R/android.hardware.atrace@1.0.so
+64768 2010 -1 /system/lib/vndk-R/android.hardware.audio.common@2.0.so
+64768 2011 -1 /system/lib/vndk-R/android.hardware.audio.common@4.0.so
+64768 2012 -1 /system/lib/vndk-R/android.hardware.audio.common@5.0.so
+64768 2013 -1 /system/lib/vndk-R/android.hardware.audio.effect@2.0.so
+64768 2014 -1 /system/lib/vndk-R/android.hardware.audio.effect@4.0.so
+64768 2015 -1 /system/lib/vndk-R/android.hardware.audio.effect@5.0.so
+64768 2016 -1 /system/lib/vndk-R/android.hardware.audio@2.0.so
+64768 2017 -1 /system/lib/vndk-R/android.hardware.audio@4.0.so
+64768 2018 -1 /system/lib/vndk-R/android.hardware.audio@5.0.so
+64768 2019 -1 /system/lib/vndk-R/android.hardware.authsecret@1.0.so
+64768 2020 -1 /system/lib/vndk-R/android.hardware.automotive.audiocontrol@1.0.so
+64768 2021 -1 /system/lib/vndk-R/android.hardware.automotive.can@1.0.so
+64768 2022 -1 /system/lib/vndk-R/android.hardware.automotive.evs@1.0.so
+64768 2023 -1 /system/lib/vndk-R/android.hardware.automotive.evs@1.1.so
+64768 2024 -1 /system/lib/vndk-R/android.hardware.automotive.vehicle@2.0.so
+64768 2025 -1 /system/lib/vndk-R/android.hardware.biometrics.face@1.0.so
+64768 2026 -1 /system/lib/vndk-R/android.hardware.biometrics.fingerprint@2.1.so
+64768 2027 -1 /system/lib/vndk-R/android.hardware.bluetooth.a2dp@1.0.so
+64768 2028 -1 /system/lib/vndk-R/android.hardware.bluetooth.audio@2.0.so
+64768 2029 -1 /system/lib/vndk-R/android.hardware.bluetooth@1.0.so
+64768 2030 -1 /system/lib/vndk-R/android.hardware.boot@1.0.so
+64768 2031 -1 /system/lib/vndk-R/android.hardware.boot@1.1.so
+64768 2032 -1 /system/lib/vndk-R/android.hardware.broadcastradio@1.0.so
+64768 2033 -1 /system/lib/vndk-R/android.hardware.broadcastradio@1.1.so
+64768 2034 -1 /system/lib/vndk-R/android.hardware.broadcastradio@2.0.so
+64768 2035 -1 /system/lib/vndk-R/android.hardware.camera.common@1.0.so
+64768 2036 -1 /system/lib/vndk-R/android.hardware.camera.device@1.0.so
+64768 2037 -1 /system/lib/vndk-R/android.hardware.camera.device@3.2.so
+64768 2038 -1 /system/lib/vndk-R/android.hardware.camera.device@3.3.so
+64768 2039 -1 /system/lib/vndk-R/android.hardware.camera.device@3.4.so
+64768 2040 -1 /system/lib/vndk-R/android.hardware.camera.device@3.5.so
+64768 2041 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.2.so
+64768 2042 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.3.so
+64768 2043 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.4.so
+64768 2044 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.5.so
+64768 2045 -1 /system/lib/vndk-R/android.hardware.camera.provider@2.4.so
+64768 2046 -1 /system/lib/vndk-R/android.hardware.camera.provider@2.5.so
+64768 2047 -1 /system/lib/vndk-R/android.hardware.cas.native@1.0.so
+64768 2048 -1 /system/lib/vndk-R/android.hardware.cas@1.0.so
+64768 2049 -1 /system/lib/vndk-R/android.hardware.cas@1.1.so
+64768 2050 -1 /system/lib/vndk-R/android.hardware.configstore-utils.so
+64768 2051 -1 /system/lib/vndk-R/android.hardware.configstore@1.0.so
+64768 2052 -1 /system/lib/vndk-R/android.hardware.configstore@1.1.so
+64768 2053 -1 /system/lib/vndk-R/android.hardware.confirmationui-support-lib.so
+64768 2054 -1 /system/lib/vndk-R/android.hardware.confirmationui@1.0.so
+64768 2055 -1 /system/lib/vndk-R/android.hardware.contexthub@1.0.so
+64768 2056 -1 /system/lib/vndk-R/android.hardware.drm@1.0.so
+64768 2057 -1 /system/lib/vndk-R/android.hardware.drm@1.1.so
+64768 2058 -1 /system/lib/vndk-R/android.hardware.drm@1.2.so
+64768 2059 -1 /system/lib/vndk-R/android.hardware.dumpstate@1.0.so
+64768 2060 -1 /system/lib/vndk-R/android.hardware.fastboot@1.0.so
+64768 2061 -1 /system/lib/vndk-R/android.hardware.gatekeeper@1.0.so
+64768 2062 -1 /system/lib/vndk-R/android.hardware.gnss.measurement_corrections@1.0.so
+64768 2063 -1 /system/lib/vndk-R/android.hardware.gnss.visibility_control@1.0.so
+64768 2064 -1 /system/lib/vndk-R/android.hardware.gnss@1.0.so
+64768 2065 -1 /system/lib/vndk-R/android.hardware.gnss@1.1.so
+64768 2066 -1 /system/lib/vndk-R/android.hardware.gnss@2.0.so
+64768 2067 -1 /system/lib/vndk-R/android.hardware.graphics.allocator@2.0.so
+64768 2068 -1 /system/lib/vndk-R/android.hardware.graphics.allocator@3.0.so
+64768 2069 -1 /system/lib/vndk-R/android.hardware.graphics.allocator@4.0.so
+64768 2070 -1 /system/lib/vndk-R/android.hardware.graphics.bufferqueue@1.0.so
+64768 2071 -1 /system/lib/vndk-R/android.hardware.graphics.bufferqueue@2.0.so
+64768 2072 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.1.so
+64768 2073 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.2.so
+64768 2074 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.3.so
+64768 2075 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.4.so
+64768 2076 -1 /system/lib/vndk-R/android.hardware.health.storage@1.0.so
+64768 2077 -1 /system/lib/vndk-R/android.hardware.health@1.0.so
+64768 2078 -1 /system/lib/vndk-R/android.hardware.health@2.0.so
+64768 2079 -1 /system/lib/vndk-R/android.hardware.input.classifier@1.0.so
+64768 2080 -1 /system/lib/vndk-R/android.hardware.input.common@1.0.so
+64768 2081 -1 /system/lib/vndk-R/android.hardware.ir@1.0.so
+64768 2082 -1 /system/lib/vndk-R/android.hardware.keymaster@3.0.so
+64768 2083 -1 /system/lib/vndk-R/android.hardware.keymaster@4.0.so
+64768 2084 -1 /system/lib/vndk-R/android.hardware.light@2.0.so
+64768 2085 -1 /system/lib/vndk-R/android.hardware.media.bufferpool@1.0.so
+64768 2086 -1 /system/lib/vndk-R/android.hardware.media.bufferpool@2.0.so
+64768 2087 -1 /system/lib/vndk-R/android.hardware.media.c2@1.0.so
+64768 2088 -1 /system/lib/vndk-R/android.hardware.media.omx@1.0.so
+64768 2089 -1 /system/lib/vndk-R/android.hardware.media@1.0.so
+64768 2161 -1 /system/lib/vndk-R/libadf.so
+64768 2090 -1 /system/lib/vndk-R/android.hardware.memtrack@1.0.so
+64768 2091 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.0.so
+64768 2092 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.1.so
+64768 2093 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.2.so
+64768 2094 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.3.so
+64768 2095 -1 /system/lib/vndk-R/android.hardware.nfc@1.0.so
+64768 2096 -1 /system/lib/vndk-R/android.hardware.nfc@1.1.so
+64768 2097 -1 /system/lib/vndk-R/android.hardware.nfc@1.2.so
+64768 2098 -1 /system/lib/vndk-R/android.hardware.oemlock@1.0.so
+64768 2099 -1 /system/lib/vndk-R/android.hardware.power.stats@1.0.so
+64768 2100 -1 /system/lib/vndk-R/android.hardware.power@1.0.so
+64768 2101 -1 /system/lib/vndk-R/android.hardware.power@1.1.so
+64768 2102 -1 /system/lib/vndk-R/android.hardware.power@1.2.so
+64768 2103 -1 /system/lib/vndk-R/android.hardware.power@1.3.so
+64768 2104 -1 /system/lib/vndk-R/android.hardware.radio.config@1.0.so
+64768 2105 -1 /system/lib/vndk-R/android.hardware.radio.config@1.1.so
+64768 2106 -1 /system/lib/vndk-R/android.hardware.radio.config@1.2.so
+64768 2107 -1 /system/lib/vndk-R/android.hardware.radio.deprecated@1.0.so
+64768 2108 -1 /system/lib/vndk-R/android.hardware.radio@1.0.so
+64768 2109 -1 /system/lib/vndk-R/android.hardware.radio@1.1.so
+64768 2110 -1 /system/lib/vndk-R/android.hardware.radio@1.2.so
+64768 2111 -1 /system/lib/vndk-R/android.hardware.radio@1.3.so
+64768 2112 -1 /system/lib/vndk-R/android.hardware.radio@1.4.so
+64768 2113 -1 /system/lib/vndk-R/android.hardware.secure_element@1.0.so
+64768 2114 -1 /system/lib/vndk-R/android.hardware.secure_element@1.1.so
+64768 2115 -1 /system/lib/vndk-R/android.hardware.sensors@1.0.so
+64768 2116 -1 /system/lib/vndk-R/android.hardware.sensors@2.0.so
+64768 2117 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.0-core.so
+64768 2118 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.0.so
+64768 2119 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.1.so
+64768 2120 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.2.so
+64768 2121 -1 /system/lib/vndk-R/android.hardware.tetheroffload.config@1.0.so
+64768 2122 -1 /system/lib/vndk-R/android.hardware.tetheroffload.control@1.0.so
+64768 2123 -1 /system/lib/vndk-R/android.hardware.thermal@1.0.so
+64768 2124 -1 /system/lib/vndk-R/android.hardware.thermal@1.1.so
+64768 2125 -1 /system/lib/vndk-R/android.hardware.thermal@2.0.so
+64768 2126 -1 /system/lib/vndk-R/android.hardware.tv.cec@1.0.so
+64768 2127 -1 /system/lib/vndk-R/android.hardware.tv.cec@2.0.so
+64768 2128 -1 /system/lib/vndk-R/android.hardware.tv.input@1.0.so
+64768 2129 -1 /system/lib/vndk-R/android.hardware.tv.tuner@1.0.so
+64768 2130 -1 /system/lib/vndk-R/android.hardware.usb.gadget@1.0.so
+64768 2131 -1 /system/lib/vndk-R/android.hardware.usb@1.0.so
+64768 2132 -1 /system/lib/vndk-R/android.hardware.usb@1.1.so
+64768 2133 -1 /system/lib/vndk-R/android.hardware.usb@1.2.so
+64768 2134 -1 /system/lib/vndk-R/android.hardware.vibrator@1.0.so
+64768 2135 -1 /system/lib/vndk-R/android.hardware.vibrator@1.1.so
+64768 2136 -1 /system/lib/vndk-R/android.hardware.vibrator@1.2.so
+64768 2137 -1 /system/lib/vndk-R/android.hardware.vibrator@1.3.so
+64768 2138 -1 /system/lib/vndk-R/android.hardware.vibrator@1.4.so
+64768 2139 -1 /system/lib/vndk-R/android.hardware.vr@1.0.so
+64768 2140 -1 /system/lib/vndk-R/android.hardware.weaver@1.0.so
+64768 2141 -1 /system/lib/vndk-R/android.hardware.wifi.hostapd@1.0.so
+64768 2142 -1 /system/lib/vndk-R/android.hardware.wifi.hostapd@1.1.so
+64768 2143 -1 /system/lib/vndk-R/android.hardware.wifi.offload@1.0.so
+64768 2144 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.0.so
+64768 2145 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.1.so
+64768 2146 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.2.so
+64768 2147 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.3.so
+64768 2148 -1 /system/lib/vndk-R/android.hardware.wifi@1.0.so
+64768 2149 -1 /system/lib/vndk-R/android.hardware.wifi@1.1.so
+64768 2150 -1 /system/lib/vndk-R/android.hardware.wifi@1.2.so
+64768 2151 -1 /system/lib/vndk-R/android.hardware.wifi@1.3.so
+64768 2152 -1 /system/lib/vndk-R/android.hardware.wifi@1.4.so
+64768 2153 -1 /system/lib/vndk-R/android.hidl.allocator@1.0.so
+64768 2154 -1 /system/lib/vndk-R/android.hidl.memory.block@1.0.so
+64768 2155 -1 /system/lib/vndk-R/android.hidl.token@1.0-utils.so
+64768 2156 -1 /system/lib/vndk-R/android.hidl.token@1.0.so
+64768 2157 -1 /system/lib/vndk-R/android.system.net.netd@1.0.so
+64768 2158 -1 /system/lib/vndk-R/android.system.net.netd@1.1.so
+64768 2159 -1 /system/lib/vndk-R/android.system.suspend@1.0.so
+64768 2160 -1 /system/lib/vndk-R/android.system.wifi.keystore@1.0.so
+64768 2162 -1 /system/lib/vndk-R/libaudioroute.so
+64768 2163 -1 /system/lib/vndk-R/libaudioutils.so
+64768 2164 -1 /system/lib/vndk-R/libbinder.so
+64768 2165 -1 /system/lib/vndk-R/libcamera_metadata.so
+64768 2166 -1 /system/lib/vndk-R/libcap.so
+64768 2167 -1 /system/lib/vndk-R/libclang_rt.scudo-arm-android.so
+64768 2168 -1 /system/lib/vndk-R/libclang_rt.scudo_minimal-arm-android.so
+64768 2169 -1 /system/lib/vndk-R/libclang_rt.ubsan_standalone-arm-android.so
+64768 2170 -1 /system/lib/vndk-R/libcn-cbor.so
+64768 2171 -1 /system/lib/vndk-R/libcodec2.so
+64768 2172 -1 /system/lib/vndk-R/libcrypto.so
+64768 2173 -1 /system/lib/vndk-R/libcrypto_utils.so
+64768 2174 -1 /system/lib/vndk-R/libcurl.so
+64768 2175 -1 /system/lib/vndk-R/libdiskconfig.so
+64768 2176 -1 /system/lib/vndk-R/libdumpstateutil.so
+64768 2177 -1 /system/lib/vndk-R/libevent.so
+64768 2178 -1 /system/lib/vndk-R/libexif.so
+64768 2179 -1 /system/lib/vndk-R/libexpat.so
+64768 2180 -1 /system/lib/vndk-R/libfmq.so
+64768 2181 -1 /system/lib/vndk-R/libgatekeeper.so
+64768 2182 -1 /system/lib/vndk-R/libgui.so
+64768 2183 -1 /system/lib/vndk-R/libhardware_legacy.so
+64768 2184 -1 /system/lib/vndk-R/libhidlallocatorutils.so
+64768 2185 -1 /system/lib/vndk-R/libjpeg.so
+64768 2186 -1 /system/lib/vndk-R/libkeymaster_messages.so
+64768 2187 -1 /system/lib/vndk-R/libkeymaster_portable.so
+64768 2188 -1 /system/lib/vndk-R/libldacBT_abr.so
+64768 2189 -1 /system/lib/vndk-R/libldacBT_enc.so
+64768 2190 -1 /system/lib/vndk-R/liblz4.so
+64768 2191 -1 /system/lib/vndk-R/libmedia_helper.so
+64768 2192 -1 /system/lib/vndk-R/libmedia_omx.so
+64768 2193 -1 /system/lib/vndk-R/libmemtrack.so
+64768 2194 -1 /system/lib/vndk-R/libminijail.so
+64768 2195 -1 /system/lib/vndk-R/libmkbootimg_abi_check.so
+64768 2196 -1 /system/lib/vndk-R/libnetutils.so
+64768 2197 -1 /system/lib/vndk-R/libnl.so
+64768 2198 -1 /system/lib/vndk-R/libpcre2.so
+64768 2199 -1 /system/lib/vndk-R/libpiex.so
+64768 2200 -1 /system/lib/vndk-R/libpng.so
+64768 2201 -1 /system/lib/vndk-R/libpower.so
+64768 2202 -1 /system/lib/vndk-R/libprocinfo.so
+64768 2203 -1 /system/lib/vndk-R/libprotobuf-cpp-full-3.9.1.so
+64768 2204 -1 /system/lib/vndk-R/libprotobuf-cpp-lite-3.9.1.so
+64768 2205 -1 /system/lib/vndk-R/libpuresoftkeymasterdevice.so
+64768 2206 -1 /system/lib/vndk-R/libradio_metadata.so
+64768 2207 -1 /system/lib/vndk-R/libselinux.so
+64768 2208 -1 /system/lib/vndk-R/libsoftkeymasterdevice.so
+64768 2209 -1 /system/lib/vndk-R/libspeexresampler.so
+64768 2210 -1 /system/lib/vndk-R/libsqlite.so
+64768 2211 -1 /system/lib/vndk-R/libssl.so
+64768 2212 -1 /system/lib/vndk-R/libstagefright_bufferpool@2.0.so
+64768 2213 -1 /system/lib/vndk-R/libstagefright_bufferqueue_helper.so
+64768 2214 -1 /system/lib/vndk-R/libstagefright_foundation.so
+64768 2215 -1 /system/lib/vndk-R/libstagefright_omx.so
+64768 2216 -1 /system/lib/vndk-R/libstagefright_omx_utils.so
+64768 2217 -1 /system/lib/vndk-R/libstagefright_xmlparser.so
+64768 2218 -1 /system/lib/vndk-R/libsysutils.so
+64768 2219 -1 /system/lib/vndk-R/libtinyalsa.so
+64768 2220 -1 /system/lib/vndk-R/libtinyxml2.so
+64768 2221 -1 /system/lib/vndk-R/libui.so
+64768 2222 -1 /system/lib/vndk-R/libusbhost.so
+64768 2223 -1 /system/lib/vndk-R/libwifi-system-iface.so
+64768 2224 -1 /system/lib/vndk-R/libxml2.so
+64768 2225 -1 /system/lib/vndk-R/libyuv.so
+64768 2226 -1 /system/lib/vndk-R/libziparchive.so
+23 18600 -1 /system/lib/vndk-sp-R
+64768 2245 -1 /system/lib/vndk-sp-R/libbase.so
+64768 2254 -1 /system/lib/vndk-sp-R/libhidlmemory.so
+64768 2253 -1 /system/lib/vndk-sp-R/libhidlbase.so
+64768 2228 -1 /system/lib/vndk-sp-R/android.hardware.graphics.common@1.0.so
+64768 2244 -1 /system/lib/vndk-sp-R/libbacktrace.so
+64768 2256 -1 /system/lib/vndk-sp-R/libjsoncpp.so
+64768 2233 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@3.0.so
+23 33285 -1 /system/lib/vndk-sp-R/hw
+64768 2240 -1 /system/lib/vndk-sp-R/hw/android.hidl.memory@1.0-impl.so
+64768 2230 -1 /system/lib/vndk-sp-R/android.hardware.graphics.common@1.2.so
+64768 2238 -1 /system/lib/vndk-sp-R/android.hidl.safe_union@1.0.so
+64768 2247 -1 /system/lib/vndk-sp-R/libbinderthreadstate.so
+64768 2243 -1 /system/lib/vndk-sp-R/libRS_internal.so
+64768 2235 -1 /system/lib/vndk-sp-R/android.hardware.renderscript@1.0.so
+64768 2231 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@2.0.so
+64768 2246 -1 /system/lib/vndk-sp-R/libbcinfo.so
+64768 2249 -1 /system/lib/vndk-sp-R/libc++.so
+64768 2248 -1 /system/lib/vndk-sp-R/libblas.so
+64768 2242 -1 /system/lib/vndk-sp-R/libRSDriver.so
+64768 2236 -1 /system/lib/vndk-sp-R/android.hidl.memory.token@1.0.so
+64768 2251 -1 /system/lib/vndk-sp-R/libcutils.so
+64768 2250 -1 /system/lib/vndk-sp-R/libcompiler_rt.so
+64768 2257 -1 /system/lib/vndk-sp-R/liblzma.so
+64768 2260 -1 /system/lib/vndk-sp-R/libutils.so
+64768 2229 -1 /system/lib/vndk-sp-R/android.hardware.graphics.common@1.1.so
+64768 2252 -1 /system/lib/vndk-sp-R/libhardware.so
+64768 2259 -1 /system/lib/vndk-sp-R/libunwindstack.so
+64768 2241 -1 /system/lib/vndk-sp-R/libRSCpuRef.so
+64768 2262 -1 /system/lib/vndk-sp-R/libz.so
+64768 2255 -1 /system/lib/vndk-sp-R/libion.so
+64768 2232 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@2.1.so
+64768 2261 -1 /system/lib/vndk-sp-R/libutilscallstack.so
+64768 2237 -1 /system/lib/vndk-sp-R/android.hidl.memory@1.0.so
+64768 2234 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@4.0.so
+64768 2258 -1 /system/lib/vndk-sp-R/libprocessgroup.so
+2054 44 -1 /system/lib/libfruit.so
+23 32095 -1 /system/fonts
+64768 1000 -1 /system/fonts/AndroidClock.ttf
+64768 1001 -1 /system/fonts/CarroisGothicSC-Regular.ttf
+64768 1002 -1 /system/fonts/ComingSoon.ttf
+64768 1003 -1 /system/fonts/CutiveMono.ttf
+64768 1004 -1 /system/fonts/DancingScript-Bold.ttf
+64768 1005 -1 /system/fonts/DancingScript-Regular.ttf
+64768 1230 -1 /system/fonts/DroidSans-Bold.ttf
+64768 1237 -1 /system/fonts/DroidSans.ttf
+64768 1008 -1 /system/fonts/DroidSansMono.ttf
+64768 1009 -1 /system/fonts/NotoColorEmoji.ttf
+64768 1010 -1 /system/fonts/NotoNaskhArabic-Bold.ttf
+64768 1011 -1 /system/fonts/NotoNaskhArabic-Regular.ttf
+64768 1012 -1 /system/fonts/NotoNaskhArabicUI-Bold.ttf
+64768 1013 -1 /system/fonts/NotoNaskhArabicUI-Regular.ttf
+64768 1014 -1 /system/fonts/NotoSansAdlam-Regular.ttf
+64768 1015 -1 /system/fonts/NotoSansAhom-Regular.otf
+64768 1016 -1 /system/fonts/NotoSansAnatolianHieroglyphs-Regular.otf
+64768 1017 -1 /system/fonts/NotoSansArmenian-Bold.otf
+64768 1018 -1 /system/fonts/NotoSansArmenian-Medium.otf
+64768 1019 -1 /system/fonts/NotoSansArmenian-Regular.otf
+64768 1020 -1 /system/fonts/NotoSansAvestan-Regular.ttf
+64768 1021 -1 /system/fonts/NotoSansBalinese-Regular.ttf
+64768 1022 -1 /system/fonts/NotoSansBamum-Regular.ttf
+64768 1023 -1 /system/fonts/NotoSansBassaVah-Regular.otf
+64768 1024 -1 /system/fonts/NotoSansBatak-Regular.ttf
+64768 1025 -1 /system/fonts/NotoSansBengali-Bold.otf
+64768 1026 -1 /system/fonts/NotoSansBengali-Medium.otf
+64768 1027 -1 /system/fonts/NotoSansBengali-Regular.otf
+64768 1028 -1 /system/fonts/NotoSansBengaliUI-Bold.otf
+64768 1029 -1 /system/fonts/NotoSansBengaliUI-Medium.otf
+64768 1030 -1 /system/fonts/NotoSansBengaliUI-Regular.otf
+64768 1031 -1 /system/fonts/NotoSansBhaiksuki-Regular.otf
+64768 1032 -1 /system/fonts/NotoSansBrahmi-Regular.ttf
+64768 1033 -1 /system/fonts/NotoSansBuginese-Regular.ttf
+64768 1034 -1 /system/fonts/NotoSansBuhid-Regular.ttf
+64768 1035 -1 /system/fonts/NotoSansCJK-Regular.ttc
+64768 1036 -1 /system/fonts/NotoSansCanadianAboriginal-Regular.ttf
+64768 1037 -1 /system/fonts/NotoSansCarian-Regular.ttf
+64768 1038 -1 /system/fonts/NotoSansChakma-Regular.otf
+64768 1039 -1 /system/fonts/NotoSansCham-Bold.ttf
+64768 1040 -1 /system/fonts/NotoSansCham-Regular.ttf
+64768 1041 -1 /system/fonts/NotoSansCherokee-Regular.ttf
+64768 1042 -1 /system/fonts/NotoSansCoptic-Regular.ttf
+64768 1043 -1 /system/fonts/NotoSansCuneiform-Regular.ttf
+64768 1044 -1 /system/fonts/NotoSansCypriot-Regular.ttf
+64768 1045 -1 /system/fonts/NotoSansDeseret-Regular.ttf
+64768 1046 -1 /system/fonts/NotoSansDevanagari-Bold.otf
+64768 1047 -1 /system/fonts/NotoSansDevanagari-Medium.otf
+64768 1048 -1 /system/fonts/NotoSansDevanagari-Regular.otf
+64768 1049 -1 /system/fonts/NotoSansDevanagariUI-Bold.otf
+64768 1050 -1 /system/fonts/NotoSansDevanagariUI-Medium.otf
+64768 1051 -1 /system/fonts/NotoSansDevanagariUI-Regular.otf
+64768 1052 -1 /system/fonts/NotoSansEgyptianHieroglyphs-Regular.ttf
+64768 1053 -1 /system/fonts/NotoSansElbasan-Regular.otf
+64768 1054 -1 /system/fonts/NotoSansEthiopic-Bold.ttf
+64768 1055 -1 /system/fonts/NotoSansEthiopic-Regular.ttf
+64768 1056 -1 /system/fonts/NotoSansGeorgian-Bold.otf
+64768 1057 -1 /system/fonts/NotoSansGeorgian-Medium.otf
+64768 1058 -1 /system/fonts/NotoSansGeorgian-Regular.otf
+64768 1059 -1 /system/fonts/NotoSansGlagolitic-Regular.ttf
+64768 1060 -1 /system/fonts/NotoSansGothic-Regular.ttf
+64768 1061 -1 /system/fonts/NotoSansGujarati-Bold.ttf
+64768 1062 -1 /system/fonts/NotoSansGujarati-Regular.ttf
+64768 1063 -1 /system/fonts/NotoSansGujaratiUI-Bold.ttf
+64768 1064 -1 /system/fonts/NotoSansGujaratiUI-Regular.ttf
+64768 1065 -1 /system/fonts/NotoSansGurmukhi-Bold.ttf
+64768 1066 -1 /system/fonts/NotoSansGurmukhi-Regular.ttf
+64768 1067 -1 /system/fonts/NotoSansGurmukhiUI-Bold.ttf
+64768 1068 -1 /system/fonts/NotoSansGurmukhiUI-Regular.ttf
+64768 1069 -1 /system/fonts/NotoSansHanunoo-Regular.ttf
+64768 1070 -1 /system/fonts/NotoSansHatran-Regular.otf
+64768 1071 -1 /system/fonts/NotoSansHebrew-Bold.ttf
+64768 1072 -1 /system/fonts/NotoSansHebrew-Regular.ttf
+64768 1073 -1 /system/fonts/NotoSansImperialAramaic-Regular.ttf
+64768 1074 -1 /system/fonts/NotoSansInscriptionalPahlavi-Regular.ttf
+64768 1075 -1 /system/fonts/NotoSansInscriptionalParthian-Regular.ttf
+64768 1076 -1 /system/fonts/NotoSansJavanese-Regular.ttf
+64768 1077 -1 /system/fonts/NotoSansKaithi-Regular.ttf
+64768 1078 -1 /system/fonts/NotoSansKannada-Bold.ttf
+64768 1079 -1 /system/fonts/NotoSansKannada-Regular.ttf
+64768 1080 -1 /system/fonts/NotoSansKannadaUI-Bold.ttf
+64768 1081 -1 /system/fonts/NotoSansKannadaUI-Regular.ttf
+64768 1082 -1 /system/fonts/NotoSansKayahLi-Regular.ttf
+64768 1083 -1 /system/fonts/NotoSansKharoshthi-Regular.ttf
+64768 1084 -1 /system/fonts/NotoSansKhmer-VF.ttf
+64768 1085 -1 /system/fonts/NotoSansKhmerUI-Bold.ttf
+64768 1086 -1 /system/fonts/NotoSansKhmerUI-Regular.ttf
+64768 1087 -1 /system/fonts/NotoSansLao-Bold.ttf
+64768 1088 -1 /system/fonts/NotoSansLao-Regular.ttf
+64768 1089 -1 /system/fonts/NotoSansLaoUI-Bold.ttf
+64768 1090 -1 /system/fonts/NotoSansLaoUI-Regular.ttf
+64768 1091 -1 /system/fonts/NotoSansLepcha-Regular.ttf
+64768 1092 -1 /system/fonts/NotoSansLimbu-Regular.ttf
+64768 1093 -1 /system/fonts/NotoSansLinearA-Regular.otf
+64768 1094 -1 /system/fonts/NotoSansLinearB-Regular.ttf
+64768 1095 -1 /system/fonts/NotoSansLisu-Regular.ttf
+64768 1096 -1 /system/fonts/NotoSansLycian-Regular.ttf
+64768 1097 -1 /system/fonts/NotoSansLydian-Regular.ttf
+64768 1098 -1 /system/fonts/NotoSansMalayalam-Bold.otf
+64768 1099 -1 /system/fonts/NotoSansMalayalam-Medium.otf
+64768 1100 -1 /system/fonts/NotoSansMalayalam-Regular.otf
+64768 1101 -1 /system/fonts/NotoSansMalayalamUI-Bold.otf
+64768 1102 -1 /system/fonts/NotoSansMalayalamUI-Medium.otf
+64768 1103 -1 /system/fonts/NotoSansMalayalamUI-Regular.otf
+64768 1104 -1 /system/fonts/NotoSansMandaic-Regular.ttf
+64768 1105 -1 /system/fonts/NotoSansManichaean-Regular.otf
+64768 1106 -1 /system/fonts/NotoSansMarchen-Regular.otf
+64768 1107 -1 /system/fonts/NotoSansMeeteiMayek-Regular.ttf
+64768 1108 -1 /system/fonts/NotoSansMeroitic-Regular.otf
+64768 1109 -1 /system/fonts/NotoSansMiao-Regular.otf
+64768 1110 -1 /system/fonts/NotoSansMongolian-Regular.ttf
+64768 1111 -1 /system/fonts/NotoSansMro-Regular.otf
+64768 1112 -1 /system/fonts/NotoSansMultani-Regular.otf
+64768 1113 -1 /system/fonts/NotoSansMyanmar-Bold.otf
+64768 1114 -1 /system/fonts/NotoSansMyanmar-Medium.otf
+64768 1115 -1 /system/fonts/NotoSansMyanmar-Regular.otf
+64768 1116 -1 /system/fonts/NotoSansMyanmarUI-Bold.otf
+64768 1117 -1 /system/fonts/NotoSansMyanmarUI-Medium.otf
+64768 1118 -1 /system/fonts/NotoSansMyanmarUI-Regular.otf
+64768 1119 -1 /system/fonts/NotoSansNKo-Regular.ttf
+64768 1120 -1 /system/fonts/NotoSansNabataean-Regular.otf
+64768 1121 -1 /system/fonts/NotoSansNewTaiLue-Regular.ttf
+64768 1122 -1 /system/fonts/NotoSansNewa-Regular.otf
+64768 1123 -1 /system/fonts/NotoSansOgham-Regular.ttf
+64768 1124 -1 /system/fonts/NotoSansOlChiki-Regular.ttf
+64768 1125 -1 /system/fonts/NotoSansOldItalic-Regular.ttf
+64768 1126 -1 /system/fonts/NotoSansOldNorthArabian-Regular.otf
+64768 1127 -1 /system/fonts/NotoSansOldPermic-Regular.otf
+64768 1128 -1 /system/fonts/NotoSansOldPersian-Regular.ttf
+64768 1129 -1 /system/fonts/NotoSansOldSouthArabian-Regular.ttf
+64768 1130 -1 /system/fonts/NotoSansOldTurkic-Regular.ttf
+64768 1131 -1 /system/fonts/NotoSansOriya-Bold.ttf
+64768 1132 -1 /system/fonts/NotoSansOriya-Regular.ttf
+64768 1133 -1 /system/fonts/NotoSansOriyaUI-Bold.ttf
+64768 1134 -1 /system/fonts/NotoSansOriyaUI-Regular.ttf
+64768 1135 -1 /system/fonts/NotoSansOsage-Regular.ttf
+64768 1136 -1 /system/fonts/NotoSansOsmanya-Regular.ttf
+64768 1137 -1 /system/fonts/NotoSansPahawhHmong-Regular.otf
+64768 1138 -1 /system/fonts/NotoSansPalmyrene-Regular.otf
+64768 1139 -1 /system/fonts/NotoSansPauCinHau-Regular.otf
+64768 1140 -1 /system/fonts/NotoSansPhagsPa-Regular.ttf
+64768 1141 -1 /system/fonts/NotoSansPhoenician-Regular.ttf
+64768 1142 -1 /system/fonts/NotoSansRejang-Regular.ttf
+64768 1143 -1 /system/fonts/NotoSansRunic-Regular.ttf
+64768 1144 -1 /system/fonts/NotoSansSamaritan-Regular.ttf
+64768 1145 -1 /system/fonts/NotoSansSaurashtra-Regular.ttf
+64768 1146 -1 /system/fonts/NotoSansSharada-Regular.otf
+64768 1147 -1 /system/fonts/NotoSansShavian-Regular.ttf
+64768 1148 -1 /system/fonts/NotoSansSinhala-Bold.otf
+64768 1149 -1 /system/fonts/NotoSansSinhala-Medium.otf
+64768 1150 -1 /system/fonts/NotoSansSinhala-Regular.otf
+64768 1151 -1 /system/fonts/NotoSansSinhalaUI-Bold.otf
+64768 1152 -1 /system/fonts/NotoSansSinhalaUI-Medium.otf
+64768 1153 -1 /system/fonts/NotoSansSinhalaUI-Regular.otf
+64768 1154 -1 /system/fonts/NotoSansSoraSompeng-Regular.otf
+64768 1155 -1 /system/fonts/NotoSansSundanese-Regular.ttf
+64768 1156 -1 /system/fonts/NotoSansSylotiNagri-Regular.ttf
+64768 1157 -1 /system/fonts/NotoSansSymbols-Regular-Subsetted.ttf
+64768 1158 -1 /system/fonts/NotoSansSymbols-Regular-Subsetted2.ttf
+64768 1159 -1 /system/fonts/NotoSansSyriacEastern-Regular.ttf
+64768 1160 -1 /system/fonts/NotoSansSyriacEstrangela-Regular.ttf
+64768 1161 -1 /system/fonts/NotoSansSyriacWestern-Regular.ttf
+64768 1162 -1 /system/fonts/NotoSansTagalog-Regular.ttf
+64768 1163 -1 /system/fonts/NotoSansTagbanwa-Regular.ttf
+64768 1164 -1 /system/fonts/NotoSansTaiLe-Regular.ttf
+64768 1165 -1 /system/fonts/NotoSansTaiTham-Regular.ttf
+64768 1166 -1 /system/fonts/NotoSansTaiViet-Regular.ttf
+64768 1167 -1 /system/fonts/NotoSansTamil-Bold.otf
+64768 1168 -1 /system/fonts/NotoSansTamil-Medium.otf
+64768 1169 -1 /system/fonts/NotoSansTamil-Regular.otf
+64768 1170 -1 /system/fonts/NotoSansTamilUI-Bold.otf
+64768 1171 -1 /system/fonts/NotoSansTamilUI-Medium.otf
+64768 1172 -1 /system/fonts/NotoSansTamilUI-Regular.otf
+64768 1173 -1 /system/fonts/NotoSansTelugu-Bold.ttf
+64768 1174 -1 /system/fonts/NotoSansTelugu-Regular.ttf
+64768 1175 -1 /system/fonts/NotoSansTeluguUI-Bold.ttf
+64768 1176 -1 /system/fonts/NotoSansTeluguUI-Regular.ttf
+64768 1177 -1 /system/fonts/NotoSansThaana-Bold.ttf
+64768 1178 -1 /system/fonts/NotoSansThaana-Regular.ttf
+64768 1179 -1 /system/fonts/NotoSansThai-Bold.ttf
+64768 1180 -1 /system/fonts/NotoSansThai-Regular.ttf
+64768 1181 -1 /system/fonts/NotoSansThaiUI-Bold.ttf
+64768 1182 -1 /system/fonts/NotoSansThaiUI-Regular.ttf
+64768 1183 -1 /system/fonts/NotoSansTibetan-Bold.ttf
+64768 1184 -1 /system/fonts/NotoSansTibetan-Regular.ttf
+64768 1185 -1 /system/fonts/NotoSansTifinagh-Regular.ttf
+64768 1186 -1 /system/fonts/NotoSansUgaritic-Regular.ttf
+64768 1187 -1 /system/fonts/NotoSansVai-Regular.ttf
+64768 1188 -1 /system/fonts/NotoSansYi-Regular.ttf
+64768 1189 -1 /system/fonts/NotoSerif-Bold.ttf
+64768 1190 -1 /system/fonts/NotoSerif-BoldItalic.ttf
+64768 1191 -1 /system/fonts/NotoSerif-Italic.ttf
+64768 1192 -1 /system/fonts/NotoSerif-Regular.ttf
+64768 1193 -1 /system/fonts/NotoSerifArmenian-Bold.otf
+64768 1194 -1 /system/fonts/NotoSerifArmenian-Regular.otf
+64768 1195 -1 /system/fonts/NotoSerifBengali-Bold.ttf
+64768 1196 -1 /system/fonts/NotoSerifBengali-Regular.ttf
+64768 1197 -1 /system/fonts/NotoSerifCJK-Regular.ttc
+64768 1198 -1 /system/fonts/NotoSerifDevanagari-Bold.ttf
+64768 1199 -1 /system/fonts/NotoSerifDevanagari-Regular.ttf
+64768 1200 -1 /system/fonts/NotoSerifEthiopic-Bold.otf
+64768 1201 -1 /system/fonts/NotoSerifEthiopic-Regular.otf
+64768 1202 -1 /system/fonts/NotoSerifGeorgian-Bold.otf
+64768 1203 -1 /system/fonts/NotoSerifGeorgian-Regular.otf
+64768 1204 -1 /system/fonts/NotoSerifGujarati-Bold.ttf
+64768 1205 -1 /system/fonts/NotoSerifGujarati-Regular.ttf
+64768 1206 -1 /system/fonts/NotoSerifGurmukhi-Bold.otf
+64768 1207 -1 /system/fonts/NotoSerifGurmukhi-Regular.otf
+64768 1208 -1 /system/fonts/NotoSerifHebrew-Bold.ttf
+64768 1209 -1 /system/fonts/NotoSerifHebrew-Regular.ttf
+64768 1210 -1 /system/fonts/NotoSerifKannada-Bold.ttf
+64768 1211 -1 /system/fonts/NotoSerifKannada-Regular.ttf
+64768 1212 -1 /system/fonts/NotoSerifKhmer-Bold.otf
+64768 1213 -1 /system/fonts/NotoSerifKhmer-Regular.otf
+64768 1214 -1 /system/fonts/NotoSerifLao-Bold.ttf
+64768 1215 -1 /system/fonts/NotoSerifLao-Regular.ttf
+64768 1216 -1 /system/fonts/NotoSerifMalayalam-Bold.ttf
+64768 1217 -1 /system/fonts/NotoSerifMalayalam-Regular.ttf
+64768 1218 -1 /system/fonts/NotoSerifMyanmar-Bold.otf
+64768 1219 -1 /system/fonts/NotoSerifMyanmar-Regular.otf
+64768 1220 -1 /system/fonts/NotoSerifSinhala-Bold.otf
+64768 1221 -1 /system/fonts/NotoSerifSinhala-Regular.otf
+64768 1222 -1 /system/fonts/NotoSerifTamil-Bold.otf
+64768 1223 -1 /system/fonts/NotoSerifTamil-Regular.otf
+64768 1224 -1 /system/fonts/NotoSerifTelugu-Bold.ttf
+64768 1228 -1 /system/fonts/Roboto-Black.ttf
+64768 1225 -1 /system/fonts/NotoSerifTelugu-Regular.ttf
+64768 1226 -1 /system/fonts/NotoSerifThai-Bold.ttf
+64768 1227 -1 /system/fonts/NotoSerifThai-Regular.ttf
+64768 1229 -1 /system/fonts/Roboto-BlackItalic.ttf
+64768 1230 -1 /system/fonts/Roboto-Bold.ttf
+64768 1231 -1 /system/fonts/Roboto-BoldItalic.ttf
+64768 1232 -1 /system/fonts/Roboto-Italic.ttf
+64768 1233 -1 /system/fonts/Roboto-Light.ttf
+64768 1234 -1 /system/fonts/Roboto-LightItalic.ttf
+64768 1235 -1 /system/fonts/Roboto-Medium.ttf
+64768 1236 -1 /system/fonts/Roboto-MediumItalic.ttf
+64768 1237 -1 /system/fonts/Roboto-Regular.ttf
+64768 1238 -1 /system/fonts/Roboto-Thin.ttf
+64768 1239 -1 /system/fonts/Roboto-ThinItalic.ttf
+64768 1240 -1 /system/fonts/RobotoCondensed-Bold.ttf
+64768 1241 -1 /system/fonts/RobotoCondensed-BoldItalic.ttf
+64768 1242 -1 /system/fonts/RobotoCondensed-Italic.ttf
+64768 1243 -1 /system/fonts/RobotoCondensed-Light.ttf
+64768 1244 -1 /system/fonts/RobotoCondensed-LightItalic.ttf
+64768 1245 -1 /system/fonts/RobotoCondensed-Medium.ttf
+64768 1246 -1 /system/fonts/RobotoCondensed-MediumItalic.ttf
+64768 1247 -1 /system/fonts/RobotoCondensed-Regular.ttf
+64768 1248 -1 /system/fonts/SourceSansPro-Bold.ttf
+64768 1249 -1 /system/fonts/SourceSansPro-BoldItalic.ttf
+64768 1250 -1 /system/fonts/SourceSansPro-Italic.ttf
+64768 1251 -1 /system/fonts/SourceSansPro-Regular.ttf
+64768 1252 -1 /system/fonts/SourceSansPro-SemiBold.ttf
+64768 1253 -1 /system/fonts/SourceSansPro-SemiBoldItalic.ttf
+23 177182 -1 /system/priv-app
+23 1495634 -1 /system/priv-app/DocumentsUIGoogle
+64768 3022 -1 /system/priv-app/DocumentsUIGoogle/DocumentsUIGoogle.apk
+23 1494437 -1 /system/priv-app/UserDictionaryProvider
+64768 3102 -1 /system/priv-app/UserDictionaryProvider/UserDictionaryProvider.apk
+23 1481989 -1 /system/priv-app/CalendarProvider
+64768 3012 -1 /system/priv-app/CalendarProvider/CalendarProvider.apk
+23 180746 -1 /system/priv-app/ONS
+64768 3070 -1 /system/priv-app/ONS/ONS.apk
+23 1559103 -1 /system/priv-app/SharedStorageBackup
+64768 3080 -1 /system/priv-app/SharedStorageBackup/SharedStorageBackup.apk
+23 1559105 -1 /system/priv-app/NetworkPermissionConfig
+64768 3066 -1 /system/priv-app/NetworkPermissionConfig/NetworkPermissionConfig.apk
+23 180812 -1 /system/priv-app/TelephonyProvider
+64768 3098 -1 /system/priv-app/TelephonyProvider/TelephonyProvider.apk
+23 180725 -1 /system/priv-app/qcrilmsgtunnel
+64768 3110 -1 /system/priv-app/qcrilmsgtunnel/qcrilmsgtunnel.apk
+23 1426403 -1 /system/priv-app/DownloadProvider
+64768 3024 -1 /system/priv-app/DownloadProvider/DownloadProvider.apk
+23 1494432 -1 /system/priv-app/ContactsProvider
+64768 3018 -1 /system/priv-app/ContactsProvider/ContactsProvider.apk
+23 1559107 -1 /system/priv-app/CtsShimPrivPrebuilt
+64768 3020 -1 /system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk
+23 1559109 -1 /system/priv-app/Shell
+64768 3082 -1 /system/priv-app/Shell/Shell.apk
+23 1559111 -1 /system/priv-app/StatementService
+64768 3086 -1 /system/priv-app/StatementService/StatementService.apk
+23 1486537 -1 /system/priv-app/BlockedNumberProvider
+64768 3008 -1 /system/priv-app/BlockedNumberProvider/BlockedNumberProvider.apk
+23 1559113 -1 /system/priv-app/DownloadProviderUi
+64768 3026 -1 /system/priv-app/DownloadProviderUi/DownloadProviderUi.apk
+23 1426156 -1 /system/priv-app/MediaProvider
+23 1489912 -1 /system/priv-app/MediaProvider/lib
+23 1489913 -1 /system/priv-app/MediaProvider/lib/arm64
+64768 2537 -1 /system/priv-app/MediaProvider/lib/arm64/libfuse.so
+64768 2538 -1 /system/priv-app/MediaProvider/lib/arm64/libfuse_jni.so
+64768 3054 -1 /system/priv-app/MediaProvider/MediaProvider.apk
+23 180680 -1 /system/priv-app/Telecom
+23 181146 -1 /system/priv-app/Telecom/oat
+23 181148 -1 /system/priv-app/Telecom/oat/arm64
+64768 3095 -1 /system/priv-app/Telecom/oat/arm64/Telecom.odex
+64768 3096 -1 /system/priv-app/Telecom/oat/arm64/Telecom.vdex
+64768 3092 -1 /system/priv-app/Telecom/Telecom.apk
+23 1559115 -1 /system/priv-app/VpnDialogs
+64768 3104 -1 /system/priv-app/VpnDialogs/VpnDialogs.apk
+23 1559117 -1 /system/priv-app/TimeZoneUpdater
+64768 3100 -1 /system/priv-app/TimeZoneUpdater/TimeZoneUpdater.apk
+23 1559119 -1 /system/priv-app/ExternalStorageProvider
+64768 3030 -1 /system/priv-app/ExternalStorageProvider/ExternalStorageProvider.apk
+23 1559121 -1 /system/priv-app/BackupRestoreConfirmation
+64768 3006 -1 /system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk
+23 1559123 -1 /system/priv-app/ManagedProvisioning
+64768 3052 -1 /system/priv-app/ManagedProvisioning/ManagedProvisioning.apk
+23 1559125 -1 /system/priv-app/DynamicSystemInstallationService
+64768 3028 -1 /system/priv-app/DynamicSystemInstallationService/DynamicSystemInstallationService.apk
+23 180801 -1 /system/priv-app/CNEService
+64768 3010 -1 /system/priv-app/CNEService/CNEService.apk
+23 1559127 -1 /system/priv-app/BackupEncryption
+64768 3004 -1 /system/priv-app/BackupEncryption/BackupEncryption.apk
+23 1559129 -1 /system/priv-app/MmsService
+64768 3060 -1 /system/priv-app/MmsService/MmsService.apk
+23 1559131 -1 /system/priv-app/InputDevices
+23 1559132 -1 /system/priv-app/InputDevices/oat
+23 1559133 -1 /system/priv-app/InputDevices/oat/arm64
+64768 3048 -1 /system/priv-app/InputDevices/oat/arm64/InputDevices.vdex
+64768 3047 -1 /system/priv-app/InputDevices/oat/arm64/InputDevices.odex
+64768 3044 -1 /system/priv-app/InputDevices/InputDevices.apk
+23 180590 -1 /system/priv-app/FusedLocation
+23 183740 -1 /system/priv-app/FusedLocation/oat
+23 183741 -1 /system/priv-app/FusedLocation/oat/arm64
+64768 3036 -1 /system/priv-app/FusedLocation/oat/arm64/FusedLocation.vdex
+64768 3035 -1 /system/priv-app/FusedLocation/oat/arm64/FusedLocation.odex
+64768 3032 -1 /system/priv-app/FusedLocation/FusedLocation.apk
+23 1559137 -1 /system/priv-app/CallLogBackup
+64768 3014 -1 /system/priv-app/CallLogBackup/CallLogBackup.apk
+23 1559139 -1 /system/priv-app/CellBroadcastAppPlatform
+64768 3016 -1 /system/priv-app/CellBroadcastAppPlatform/CellBroadcastAppPlatform.apk
+23 180724 -1 /system/priv-app/SettingsProvider
+64768 3074 -1 /system/priv-app/SettingsProvider/SettingsProvider.apk
+23 183303 -1 /system/priv-app/SettingsProvider/oat
+23 183304 -1 /system/priv-app/SettingsProvider/oat/arm64
+64768 3078 -1 /system/priv-app/SettingsProvider/oat/arm64/SettingsProvider.vdex
+64768 3077 -1 /system/priv-app/SettingsProvider/oat/arm64/SettingsProvider.odex
+23 1559141 -1 /system/priv-app/WifiStackPermissionConfig
+64768 3108 -1 /system/priv-app/WifiStackPermissionConfig/WifiStackPermissionConfig.apk
+23 1559143 -1 /system/priv-app/ProxyHandler
+64768 3072 -1 /system/priv-app/ProxyHandler/ProxyHandler.apk
+23 1559145 -1 /system/priv-app/GooglePackageInstaller
+64768 3040 -1 /system/priv-app/GooglePackageInstaller/GooglePackageInstaller.apk
+23 180603 -1 /system/priv-app/TeleService
+64768 3090 -1 /system/priv-app/TeleService/TeleService.apk
+23 1559147 -1 /system/priv-app/LocalTransport
+64768 3050 -1 /system/priv-app/LocalTransport/LocalTransport.apk
+23 231734 -1 /system/priv-app/TagGoogle
+64768 3088 -1 /system/priv-app/TagGoogle/TagGoogle.apk
+23 1426268 -1 /system/priv-app/MtpService
+64768 3062 -1 /system/priv-app/MtpService/MtpService.apk
+23 1559149 -1 /system/priv-app/MusicFX
+64768 3064 -1 /system/priv-app/MusicFX/MusicFX.apk
+23 180682 -1 /system/priv-app/NetworkStack
+64768 3068 -1 /system/priv-app/NetworkStack/NetworkStack.apk
+23 1559151 -1 /system/priv-app/SoundPicker
+64768 3084 -1 /system/priv-app/SoundPicker/SoundPicker.apk
+23 1559153 -1 /system/priv-app/GoogleExtServices
+64768 3038 -1 /system/priv-app/GoogleExtServices/GoogleExtServices.apk
+23 472553 -1 /system/priv-app/GooglePermissionController
+64768 3042 -1 /system/priv-app/GooglePermissionController/GooglePermissionController.apk
+23 180701 -1 /system/priv-app/WifiStack
+64768 3106 -1 /system/priv-app/WifiStack/WifiStack.apk
+26 19554 -1 /system/product
+23 19555 -1 /system/bin
+64768 188 -1 /system/bin/abb
+64768 546 -1 /system/bin/acpi
+64768 190 -1 /system/bin/adbd
+64768 191 -1 /system/bin/am
+64768 192 -1 /system/bin/apexd
+64768 195 -1 /system/bin/app_process
+64768 194 -1 /system/bin/app_process32
+64768 195 -1 /system/bin/app_process64
+64768 196 -1 /system/bin/appops
+64768 197 -1 /system/bin/appwidget
+64768 198 -1 /system/bin/arping
+64768 199 -1 /system/bin/art_apex_boot_integrity
+64768 200 -1 /system/bin/atrace
+64768 201 -1 /system/bin/audioserver
+64768 202 -1 /system/bin/auditctl
+64768 203 -1 /system/bin/avbctl
+64768 204 -1 /system/bin/awk
+64768 546 -1 /system/bin/base64
+64768 546 -1 /system/bin/basename
+64768 546 -1 /system/bin/bc
+64768 208 -1 /system/bin/bcc
+64768 209 -1 /system/bin/blank_screen
+64768 210 -1 /system/bin/blkid
+64768 546 -1 /system/bin/blockdev
+64768 212 -1 /system/bin/bmgr
+64768 213 -1 /system/bin/bootanimation
+64768 214 -1 /system/bin/bootctl
+64768 215 -1 /system/bin/bootstat
+23 19557 -1 /system/bin/bootstrap
+64768 217 -1 /system/bin/bootstrap/linker_asan
+64768 218 -1 /system/bin/bootstrap/linker_asan64
+64768 217 -1 /system/bin/bootstrap/linker
+64768 218 -1 /system/bin/bootstrap/linker64
+64768 221 -1 /system/bin/boringssl_self_test32
+64768 222 -1 /system/bin/boringssl_self_test64
+64768 223 -1 /system/bin/bpfloader
+64768 224 -1 /system/bin/bu
+64768 225 -1 /system/bin/bugreport
+64768 226 -1 /system/bin/bugreportz
+64768 229 -1 /system/bin/bunzip2
+64768 229 -1 /system/bin/bzcat
+64768 229 -1 /system/bin/bzip2
+64768 546 -1 /system/bin/cal
+64768 231 -1 /system/bin/cameraserver
+64768 546 -1 /system/bin/cat
+64768 233 -1 /system/bin/charger
+64768 546 -1 /system/bin/chcon
+64768 546 -1 /system/bin/chgrp
+64768 546 -1 /system/bin/chmod
+64768 546 -1 /system/bin/chown
+64768 546 -1 /system/bin/chroot
+64768 546 -1 /system/bin/chrt
+64768 546 -1 /system/bin/cksum
+64768 241 -1 /system/bin/clatd
+64768 546 -1 /system/bin/clear
+64768 243 -1 /system/bin/cmd
+64768 546 -1 /system/bin/cmp
+64768 546 -1 /system/bin/comm
+64768 246 -1 /system/bin/content
+64768 546 -1 /system/bin/cp
+64768 546 -1 /system/bin/cpio
+64768 249 -1 /system/bin/cppreopts.sh
+64768 250 -1 /system/bin/crash_dump32
+64768 251 -1 /system/bin/crash_dump64
+64768 546 -1 /system/bin/cut
+1824 20 -1 /system/bin/dalvikvm
+64768 546 -1 /system/bin/date
+64768 546 -1 /system/bin/dd
+64768 256 -1 /system/bin/debuggerd
+64768 290 -1 /system/bin/defrag.f2fs
+64768 258 -1 /system/bin/device_config
+64768 546 -1 /system/bin/devmem
+1824 21 -1 /system/bin/dex2oat
+64768 546 -1 /system/bin/df
+64768 546 -1 /system/bin/diff
+64768 546 -1 /system/bin/dirname
+64768 264 -1 /system/bin/dmctl
+64768 546 -1 /system/bin/dmesg
+64768 266 -1 /system/bin/dnsmasq
+64768 546 -1 /system/bin/dos2unix
+64768 268 -1 /system/bin/dpm
+64768 269 -1 /system/bin/drmserver
+64768 546 -1 /system/bin/du
+64768 290 -1 /system/bin/dump.f2fs
+64768 272 -1 /system/bin/dumpstate
+64768 273 -1 /system/bin/dumpsys
+64768 274 -1 /system/bin/e2fsck
+64768 275 -1 /system/bin/e2fsdroid
+64768 546 -1 /system/bin/echo
+64768 546 -1 /system/bin/egrep
+64768 546 -1 /system/bin/env
+64768 546 -1 /system/bin/expand
+64768 546 -1 /system/bin/expr
+64768 546 -1 /system/bin/fallocate
+64768 546 -1 /system/bin/false
+64768 546 -1 /system/bin/fgrep
+64768 546 -1 /system/bin/file
+64768 546 -1 /system/bin/find
+64768 286 -1 /system/bin/flags_health_check
+64768 546 -1 /system/bin/flock
+64768 546 -1 /system/bin/fmt
+64768 546 -1 /system/bin/free
+64768 290 -1 /system/bin/fsck.f2fs
+64768 291 -1 /system/bin/fsck_msdos
+64768 292 -1 /system/bin/fsverity_init
+64768 546 -1 /system/bin/fsync
+64768 294 -1 /system/bin/gatekeeperd
+64768 295 -1 /system/bin/gdbserver
+64768 296 -1 /system/bin/gdbserver64
+64768 546 -1 /system/bin/getconf
+64768 546 -1 /system/bin/getenforce
+64768 543 -1 /system/bin/getevent
+64768 543 -1 /system/bin/getprop
+64768 301 -1 /system/bin/gpuservice
+64768 546 -1 /system/bin/grep
+64768 546 -1 /system/bin/groups
+64768 304 -1 /system/bin/gsi_tool
+64768 305 -1 /system/bin/gsid
+64768 546 -1 /system/bin/gunzip
+64768 546 -1 /system/bin/gzip
+64768 546 -1 /system/bin/head
+64768 309 -1 /system/bin/heapprofd
+64768 310 -1 /system/bin/hid
+64768 546 -1 /system/bin/hostname
+23 20189 -1 /system/bin/hw
+64768 314 -1 /system/bin/hw/android.system.suspend@1.0-service
+64768 313 -1 /system/bin/hw/android.hidl.allocator@1.0-service
+64768 546 -1 /system/bin/hwclock
+64768 316 -1 /system/bin/hwservicemanager
+64768 546 -1 /system/bin/i2cdetect
+64768 546 -1 /system/bin/i2cdump
+64768 546 -1 /system/bin/i2cget
+64768 546 -1 /system/bin/i2cset
+64768 546 -1 /system/bin/iconv
+64768 546 -1 /system/bin/id
+64768 323 -1 /system/bin/idlcli
+64768 324 -1 /system/bin/idmap
+64768 325 -1 /system/bin/idmap2
+64768 326 -1 /system/bin/idmap2d
+64768 546 -1 /system/bin/ifconfig
+64768 328 -1 /system/bin/ime
+64768 329 -1 /system/bin/incident
+64768 330 -1 /system/bin/incident_helper
+64768 331 -1 /system/bin/incidentd
+64768 332 -1 /system/bin/init
+64768 546 -1 /system/bin/inotifyd
+64768 334 -1 /system/bin/input
+64768 546 -1 /system/bin/insmod
+64768 546 -1 /system/bin/install
+64768 337 -1 /system/bin/installd
+64768 338 -1 /system/bin/invoke_test_client
+64768 546 -1 /system/bin/ionice
+64768 340 -1 /system/bin/iorap.prefetcherd
+2054 254 -1 /system/bin/iorapd
+64768 546 -1 /system/bin/iorenice
+64768 343 -1 /system/bin/iotop
+64768 344 -1 /system/bin/ip
+64768 427 -1 /system/bin/ip-wrapper-1.0
+64768 346 -1 /system/bin/ip6tables
+64768 346 -1 /system/bin/ip6tables-restore
+64768 346 -1 /system/bin/ip6tables-save
+64768 427 -1 /system/bin/ip6tables-wrapper-1.0
+64768 350 -1 /system/bin/iperf3
+64768 351 -1 /system/bin/iptables
+64768 351 -1 /system/bin/iptables-restore
+64768 351 -1 /system/bin/iptables-save
+64768 427 -1 /system/bin/iptables-wrapper-1.0
+64768 355 -1 /system/bin/iw
+64768 356 -1 /system/bin/keystore
+64768 357 -1 /system/bin/keystore_cli_v2
+64768 546 -1 /system/bin/kill
+64768 546 -1 /system/bin/killall
+64768 360 -1 /system/bin/ld.mc
+64768 361 -1 /system/bin/ldd
+64768 362 -1 /system/bin/librank
+1888 13 -1 /system/bin/linker
+1888 14 -1 /system/bin/linker64
+1888 13 -1 /system/bin/linker_asan
+1888 14 -1 /system/bin/linker_asan64
+64768 367 -1 /system/bin/linkerconfig
+64768 368 -1 /system/bin/llkd
+64768 369 -1 /system/bin/lmkd
+64768 546 -1 /system/bin/ln
+64768 546 -1 /system/bin/load_policy
+64768 372 -1 /system/bin/lockagent_crasher
+64768 373 -1 /system/bin/locksettings
+64768 546 -1 /system/bin/log
+64768 375 -1 /system/bin/logcat
+64768 376 -1 /system/bin/logcatd
+64768 377 -1 /system/bin/logd
+64768 546 -1 /system/bin/logname
+64768 380 -1 /system/bin/logpersist.cat
+64768 380 -1 /system/bin/logpersist.start
+64768 380 -1 /system/bin/logpersist.stop
+64768 382 -1 /system/bin/logwrapper
+64768 546 -1 /system/bin/losetup
+64768 384 -1 /system/bin/lpdump
+64768 385 -1 /system/bin/lpdumpd
+64768 546 -1 /system/bin/ls
+64768 387 -1 /system/bin/lshal
+64768 546 -1 /system/bin/lsmod
+64768 546 -1 /system/bin/lsof
+64768 546 -1 /system/bin/lspci
+64768 546 -1 /system/bin/lsusb
+64768 392 -1 /system/bin/make_f2fs
+64768 546 -1 /system/bin/md5sum
+64768 394 -1 /system/bin/mdnsd
+64768 395 -1 /system/bin/media
+64768 396 -1 /system/bin/mediadrmserver
+64768 397 -1 /system/bin/mediaextractor
+64768 398 -1 /system/bin/mediametrics
+64768 399 -1 /system/bin/mediaserver
+64768 546 -1 /system/bin/microcom
+64768 401 -1 /system/bin/migrate_legacy_obb_data.sh
+64768 402 -1 /system/bin/mini-keyctl
+64768 546 -1 /system/bin/mkdir
+64768 404 -1 /system/bin/mke2fs
+64768 546 -1 /system/bin/mkfifo
+64768 404 -1 /system/bin/mkfs.ext2
+64768 404 -1 /system/bin/mkfs.ext3
+64768 404 -1 /system/bin/mkfs.ext4
+64768 546 -1 /system/bin/mknod
+64768 546 -1 /system/bin/mkswap
+64768 546 -1 /system/bin/mktemp
+64768 546 -1 /system/bin/modinfo
+64768 543 -1 /system/bin/modprobe
+64768 414 -1 /system/bin/monkey
+64768 546 -1 /system/bin/more
+64768 546 -1 /system/bin/mount
+64768 546 -1 /system/bin/mountpoint
+64768 418 -1 /system/bin/move_time_data.sh
+64768 419 -1 /system/bin/mtpd
+64768 546 -1 /system/bin/mv
+64768 546 -1 /system/bin/nc
+64768 422 -1 /system/bin/ndc
+64768 427 -1 /system/bin/ndc-wrapper-1.0
+64768 546 -1 /system/bin/netcat
+64768 425 -1 /system/bin/netd
+64768 546 -1 /system/bin/netstat
+64768 427 -1 /system/bin/netutils-wrapper-1.0
+64768 428 -1 /system/bin/newfs_msdos
+64768 546 -1 /system/bin/nice
+64768 546 -1 /system/bin/nl
+64768 546 -1 /system/bin/nohup
+64768 432 -1 /system/bin/notify_traceur.sh
+64768 546 -1 /system/bin/nproc
+64768 546 -1 /system/bin/nsenter
+64768 546 -1 /system/bin/od
+64768 436 -1 /system/bin/otapreopt
+64768 437 -1 /system/bin/otapreopt_chroot
+64768 438 -1 /system/bin/otapreopt_script
+64768 439 -1 /system/bin/otapreopt_slot
+64768 546 -1 /system/bin/paste
+64768 546 -1 /system/bin/patch
+64768 442 -1 /system/bin/perfetto
+64768 546 -1 /system/bin/pgrep
+64768 546 -1 /system/bin/pidof
+64768 445 -1 /system/bin/ping
+64768 446 -1 /system/bin/ping6
+64768 546 -1 /system/bin/pkill
+64768 448 -1 /system/bin/pm
+64768 546 -1 /system/bin/pmap
+64768 450 -1 /system/bin/pppd
+64768 451 -1 /system/bin/preloads_copy.sh
+64768 452 -1 /system/bin/preopt2cachename
+64768 546 -1 /system/bin/printenv
+64768 546 -1 /system/bin/printf
+64768 455 -1 /system/bin/procrank
+64768 546 -1 /system/bin/ps
+64768 546 -1 /system/bin/pwd
+64768 458 -1 /system/bin/racoon
+64768 546 -1 /system/bin/readlink
+64768 546 -1 /system/bin/realpath
+64768 461 -1 /system/bin/reboot
+64768 462 -1 /system/bin/recovery-persist
+64768 463 -1 /system/bin/recovery-refresh
+64768 464 -1 /system/bin/remount
+64768 546 -1 /system/bin/renice
+64768 466 -1 /system/bin/requestsync
+64768 290 -1 /system/bin/resize.f2fs
+64768 468 -1 /system/bin/resize2fs
+64768 546 -1 /system/bin/restorecon
+64768 546 -1 /system/bin/rm
+64768 546 -1 /system/bin/rmdir
+64768 546 -1 /system/bin/rmmod
+64768 473 -1 /system/bin/rss_hwm_reset
+64768 474 -1 /system/bin/run-as
+64768 546 -1 /system/bin/runcon
+64768 476 -1 /system/bin/sanitizer-status
+64768 477 -1 /system/bin/schedtest
+64768 478 -1 /system/bin/screencap
+64768 479 -1 /system/bin/screenrecord
+64768 480 -1 /system/bin/sdcard
+64768 481 -1 /system/bin/secdiscard
+64768 482 -1 /system/bin/secilc
+64768 546 -1 /system/bin/sed
+64768 546 -1 /system/bin/sendevent
+64768 485 -1 /system/bin/sensorservice
+64768 546 -1 /system/bin/seq
+64768 487 -1 /system/bin/service
+64768 488 -1 /system/bin/servicemanager
+64768 546 -1 /system/bin/setenforce
+64768 543 -1 /system/bin/setprop
+64768 546 -1 /system/bin/setsid
+64768 492 -1 /system/bin/settings
+64768 493 -1 /system/bin/sgdisk
+64768 494 -1 /system/bin/sh
+64768 546 -1 /system/bin/sha1sum
+64768 546 -1 /system/bin/sha224sum
+64768 546 -1 /system/bin/sha256sum
+64768 546 -1 /system/bin/sha384sum
+64768 546 -1 /system/bin/sha512sum
+64768 500 -1 /system/bin/showmap
+64768 501 -1 /system/bin/simpleperf
+64768 502 -1 /system/bin/simpleperf_app_runner
+64768 546 -1 /system/bin/sleep
+64768 504 -1 /system/bin/sload_f2fs
+64768 505 -1 /system/bin/sm
+64768 506 -1 /system/bin/smcinvoked
+64768 507 -1 /system/bin/snapshotctl
+64768 546 -1 /system/bin/sort
+64768 546 -1 /system/bin/split
+64768 510 -1 /system/bin/sqlite3
+64768 511 -1 /system/bin/ss
+64768 543 -1 /system/bin/start
+64768 513 -1 /system/bin/start_with_lockagent
+64768 546 -1 /system/bin/stat
+64768 515 -1 /system/bin/statsd
+64768 543 -1 /system/bin/stop
+64768 517 -1 /system/bin/storaged
+64768 518 -1 /system/bin/strace
+64768 546 -1 /system/bin/strings
+64768 546 -1 /system/bin/stty
+64768 521 -1 /system/bin/surfaceflinger
+64768 522 -1 /system/bin/svc
+64768 546 -1 /system/bin/swapoff
+64768 546 -1 /system/bin/swapon
+64768 546 -1 /system/bin/sync
+64768 546 -1 /system/bin/sysctl
+64768 546 -1 /system/bin/tac
+64768 546 -1 /system/bin/tail
+64768 546 -1 /system/bin/tar
+64768 546 -1 /system/bin/taskset
+64768 531 -1 /system/bin/tc
+64768 427 -1 /system/bin/tc-wrapper-1.0
+64768 533 -1 /system/bin/tcpdump
+64768 546 -1 /system/bin/tee
+64768 535 -1 /system/bin/telecom
+64768 546 -1 /system/bin/time
+64768 546 -1 /system/bin/timeout
+64768 538 -1 /system/bin/tinycap
+64768 539 -1 /system/bin/tinymix
+64768 540 -1 /system/bin/tinypcminfo
+64768 541 -1 /system/bin/tinyplay
+64768 542 -1 /system/bin/tombstoned
+64768 543 -1 /system/bin/toolbox
+64768 546 -1 /system/bin/top
+64768 546 -1 /system/bin/touch
+64768 546 -1 /system/bin/toybox
+64768 546 -1 /system/bin/tr
+64768 548 -1 /system/bin/traced
+64768 549 -1 /system/bin/traced_probes
+64768 550 -1 /system/bin/tracepath
+64768 551 -1 /system/bin/tracepath6
+64768 552 -1 /system/bin/traceroute6
+64768 553 -1 /system/bin/trigger_perfetto
+64768 546 -1 /system/bin/true
+64768 546 -1 /system/bin/truncate
+64768 546 -1 /system/bin/tty
+64768 557 -1 /system/bin/tune2fs
+64768 558 -1 /system/bin/tzdatacheck
+64768 332 -1 /system/bin/ueventd
+64768 560 -1 /system/bin/uiautomator
+64768 546 -1 /system/bin/ulimit
+64768 546 -1 /system/bin/umount
+64768 546 -1 /system/bin/uname
+64768 564 -1 /system/bin/uncrypt
+64768 546 -1 /system/bin/uniq
+64768 546 -1 /system/bin/unix2dos
+64768 546 -1 /system/bin/unlink
+64768 546 -1 /system/bin/unshare
+64768 569 -1 /system/bin/unwind_info
+64768 570 -1 /system/bin/unwind_reg_info
+64768 571 -1 /system/bin/unwind_symbols
+64768 572 -1 /system/bin/unzip
+64768 573 -1 /system/bin/update_engine
+64768 574 -1 /system/bin/update_engine_client
+64768 575 -1 /system/bin/update_verifier
+64768 546 -1 /system/bin/uptime
+64768 577 -1 /system/bin/usbd
+64768 546 -1 /system/bin/usleep
+64768 546 -1 /system/bin/uudecode
+64768 546 -1 /system/bin/uuencode
+64768 546 -1 /system/bin/uuidgen
+64768 582 -1 /system/bin/vdc
+64768 583 -1 /system/bin/viewcompiler
+64768 546 -1 /system/bin/vmstat
+64768 585 -1 /system/bin/vold
+64768 586 -1 /system/bin/vold_prepare_subdirs
+64768 587 -1 /system/bin/vr
+64768 588 -1 /system/bin/wait_for_keymaster
+64768 546 -1 /system/bin/watch
+64768 590 -1 /system/bin/watchdogd
+64768 546 -1 /system/bin/wc
+64768 546 -1 /system/bin/which
+64768 546 -1 /system/bin/whoami
+64768 594 -1 /system/bin/wificond
+64768 595 -1 /system/bin/wm
+64768 546 -1 /system/bin/xargs
+64768 546 -1 /system/bin/xxd
+64768 546 -1 /system/bin/yes
+64768 546 -1 /system/bin/zcat
+2054 248 -1 /system/bin/iorap.cmd.prefetcher.client
+2054 249 -1 /system/bin/iorap.cmd.db
+2054 250 -1 /system/bin/iorap.cmd.perfetto
+2054 251 -1 /system/bin/iorap.inode2filename
+2054 252 -1 /system/bin/iorap.cmd.compiler
+23 19560 -1 /system/etc
+64768 623 -1 /system/etc/fstab.postinstall
+23 1559159 -1 /system/etc/seccomp_policy
+64768 740 -1 /system/etc/seccomp_policy/crash_dump.arm.policy
+64768 742 -1 /system/etc/seccomp_policy/mediacodec.policy
+64768 741 -1 /system/etc/seccomp_policy/crash_dump.arm64.policy
+64768 621 -1 /system/etc/fs_config_dirs
+64768 736 -1 /system/etc/protolog.conf.json.gz
+23 1559165 -1 /system/etc/textclassifier
+64768 974 -1 /system/etc/textclassifier/lang_id.model
+64768 973 -1 /system/etc/textclassifier/actions_suggestions.universal.model
+64768 975 -1 /system/etc/textclassifier/textclassifier.en.model
+64768 976 -1 /system/etc/textclassifier/textclassifier.universal.model
+64768 618 -1 /system/etc/dirty-image-objects
+64768 624 -1 /system/etc/gps_debug.conf
+64768 735 -1 /system/etc/prop.default
+23 1559173 -1 /system/etc/sysconfig
+64768 968 -1 /system/etc/sysconfig/framework-sysconfig.xml
+64768 970 -1 /system/etc/sysconfig/preinstalled-packages-platform.xml
+64768 969 -1 /system/etc/sysconfig/hiddenapi-package-whitelist.xml
+64768 996 -1 /system/etc/vndkprivate.libraries.R.txt
+64768 619 -1 /system/etc/event-log-tags
+23 1559178 -1 /system/etc/update_engine
+64768 978 -1 /system/etc/update_engine/update-payload-key.pub.pem
+23 1559180 -1 /system/etc/ppp
+64768 733 -1 /system/etc/ppp/ip-up-vpn
+64768 971 -1 /system/etc/task_profiles.json
+64768 737 -1 /system/etc/public.libraries.txt
+64768 694 -1 /system/etc/media_profiles_V1_0.dtd
+23 1559184 -1 /system/etc/bpf
+64768 610 -1 /system/etc/bpf/clatd.o
+64768 611 -1 /system/etc/bpf/netd.o
+64768 608 -1 /system/etc/boot-image.prof
+23 1559188 -1 /system/etc/bluetooth
+64768 606 -1 /system/etc/bluetooth/bt_stack.conf
+64768 605 -1 /system/etc/bluetooth/bt_did.conf
+23 1559191 -1 /system/etc/permissions
+64768 728 -1 /system/etc/permissions/radioconfiginterface.xml
+64768 709 -1 /system/etc/permissions/com.android.location.provider.xml
+64768 713 -1 /system/etc/permissions/com.android.timezone.updater.xml
+64768 724 -1 /system/etc/permissions/privapp-permissions-google.xml
+64768 699 -1 /system/etc/permissions/LteDirectDiscovery.xml
+64768 711 -1 /system/etc/permissions/com.android.mediadrm.signer.xml
+64768 719 -1 /system/etc/permissions/com.verizon.embms.xml
+64768 731 -1 /system/etc/permissions/uimremoteserver.xml
+64768 701 -1 /system/etc/permissions/android.software.live_wallpaper.xml
+64768 702 -1 /system/etc/permissions/android.software.preview_sdk.xml
+64768 714 -1 /system/etc/permissions/com.qualcomm.ltebc.xml
+64768 727 -1 /system/etc/permissions/radioconfig.xml
+64768 729 -1 /system/etc/permissions/telephonyservice.xml
+64768 705 -1 /system/etc/permissions/android.test.mock.xml
+64768 720 -1 /system/etc/permissions/embms.xml
+64768 706 -1 /system/etc/permissions/android.test.runner.xml
+64768 721 -1 /system/etc/permissions/javax.obex.xml
+64768 703 -1 /system/etc/permissions/android.software.webview.xml
+64768 704 -1 /system/etc/permissions/android.test.base.xml
+64768 708 -1 /system/etc/permissions/com.android.future.usb.accessory.xml
+64768 730 -1 /system/etc/permissions/uimremoteclient.xml
+64768 715 -1 /system/etc/permissions/com.qualcomm.qcrilmsgtunnel.xml
+64768 707 -1 /system/etc/permissions/cneapiclient.xml
+64768 716 -1 /system/etc/permissions/com.qualcomm.qti.imscmservice.xml
+64768 712 -1 /system/etc/permissions/com.android.nfc_extras.xml
+64768 723 -1 /system/etc/permissions/platform.xml
+64768 722 -1 /system/etc/permissions/org.apache.http.legacy.xml
+64768 726 -1 /system/etc/permissions/qcrilhook.xml
+64768 710 -1 /system/etc/permissions/com.android.media.remotedisplay.xml
+64768 700 -1 /system/etc/permissions/UimService.xml
+64768 717 -1 /system/etc/permissions/com.quicinc.cne.CNEService.xml
+64768 725 -1 /system/etc/permissions/privapp-permissions-platform.xml
+64768 718 -1 /system/etc/permissions/com.quicinc.cne.xml
+64768 697 -1 /system/etc/passwd
+23 1559225 -1 /system/etc/security
+23 1559226 -1 /system/etc/security/cacerts_wfa
+64768 945 -1 /system/etc/security/cacerts_wfa/674b5f5b.0
+64768 944 -1 /system/etc/security/cacerts_wfa/21125ccd.0
+64768 946 -1 /system/etc/security/cacerts_wfa/ea93cb5b.0
+23 1559230 -1 /system/etc/security/cacerts
+64768 781 -1 /system/etc/security/cacerts/40dc992e.0
+64768 776 -1 /system/etc/security/cacerts/3c860d51.0
+64768 882 -1 /system/etc/security/cacerts/fde84897.0
+64768 879 -1 /system/etc/security/cacerts/facacbc6.0
+64768 802 -1 /system/etc/security/cacerts/6b03dec0.0
+64768 780 -1 /system/etc/security/cacerts/3e7271e8.0
+64768 862 -1 /system/etc/security/cacerts/d18e9066.0
+64768 849 -1 /system/etc/security/cacerts/c491639e.0
+64768 836 -1 /system/etc/security/cacerts/ab5346f4.0
+64768 784 -1 /system/etc/security/cacerts/4be590e0.0
+64768 814 -1 /system/etc/security/cacerts/86212b19.0
+64768 825 -1 /system/etc/security/cacerts/95aff9e3.0
+64768 783 -1 /system/etc/security/cacerts/48a195d8.0
+64768 804 -1 /system/etc/security/cacerts/76579174.0
+64768 850 -1 /system/etc/security/cacerts/c51c224c.0
+64768 799 -1 /system/etc/security/cacerts/63a2c897.0
+64768 793 -1 /system/etc/security/cacerts/5acf816d.0
+64768 816 -1 /system/etc/security/cacerts/882de061.0
+64768 763 -1 /system/etc/security/cacerts/2d9dafe4.0
+64768 782 -1 /system/etc/security/cacerts/455f1b52.0
+64768 765 -1 /system/etc/security/cacerts/302904dd.0
+64768 750 -1 /system/etc/security/cacerts/12d55845.0
+64768 810 -1 /system/etc/security/cacerts/7d453d8f.0
+64768 857 -1 /system/etc/security/cacerts/ccc52f49.0
+64768 878 -1 /system/etc/security/cacerts/f013ecaf.0
+64768 796 -1 /system/etc/security/cacerts/5f47b495.0
+64768 771 -1 /system/etc/security/cacerts/399e7759.0
+64768 752 -1 /system/etc/security/cacerts/1dcd6f4c.0
+64768 779 -1 /system/etc/security/cacerts/3d441de8.0
+64768 822 -1 /system/etc/security/cacerts/9339512a.0
+64768 859 -1 /system/etc/security/cacerts/d06393bb.0
+64768 837 -1 /system/etc/security/cacerts/ab59055e.0
+64768 760 -1 /system/etc/security/cacerts/23f4c490.0
+64768 856 -1 /system/etc/security/cacerts/cb1c3204.0
+64768 758 -1 /system/etc/security/cacerts/21855f49.0
+64768 794 -1 /system/etc/security/cacerts/5cf9d536.0
+64768 751 -1 /system/etc/security/cacerts/17b51fe6.0
+64768 812 -1 /system/etc/security/cacerts/82223c44.0
+64768 839 -1 /system/etc/security/cacerts/b0ed035a.0
+64768 808 -1 /system/etc/security/cacerts/7a819ef2.0
+64768 851 -1 /system/etc/security/cacerts/c559d742.0
+64768 864 -1 /system/etc/security/cacerts/d4c339cb.0
+64768 754 -1 /system/etc/security/cacerts/1e1eab7c.0
+64768 844 -1 /system/etc/security/cacerts/b936d1c6.0
+64768 745 -1 /system/etc/security/cacerts/00673b5b.0
+64768 858 -1 /system/etc/security/cacerts/cf701eeb.0
+64768 790 -1 /system/etc/security/cacerts/583d0756.0
+64768 773 -1 /system/etc/security/cacerts/3ad48a91.0
+64768 863 -1 /system/etc/security/cacerts/d41b5e2a.0
+64768 746 -1 /system/etc/security/cacerts/04f60c28.0
+64768 811 -1 /system/etc/security/cacerts/81b9768f.0
+64768 835 -1 /system/etc/security/cacerts/a81e292b.0
+64768 834 -1 /system/etc/security/cacerts/a7d2cf64.0
+64768 843 -1 /system/etc/security/cacerts/b872f2b4.0
+64768 798 -1 /system/etc/security/cacerts/6187b673.0
+64768 830 -1 /system/etc/security/cacerts/9f533518.0
+64768 815 -1 /system/etc/security/cacerts/87753b0d.0
+64768 881 -1 /system/etc/security/cacerts/fd08c599.0
+64768 813 -1 /system/etc/security/cacerts/85cde254.0
+64768 829 -1 /system/etc/security/cacerts/9d6523ce.0
+64768 774 -1 /system/etc/security/cacerts/3c58f906.0
+64768 880 -1 /system/etc/security/cacerts/fb5fa911.0
+64768 875 -1 /system/etc/security/cacerts/e775ed2d.0
+64768 831 -1 /system/etc/security/cacerts/a2c66da8.0
+64768 788 -1 /system/etc/security/cacerts/52b525c7.0
+64768 867 -1 /system/etc/security/cacerts/d7746a63.0
+64768 787 -1 /system/etc/security/cacerts/524d9b43.0
+64768 845 -1 /system/etc/security/cacerts/bc3f2570.0
+64768 820 -1 /system/etc/security/cacerts/91739615.0
+64768 753 -1 /system/etc/security/cacerts/1df5a75f.0
+64768 755 -1 /system/etc/security/cacerts/1e8e7201.0
+64768 747 -1 /system/etc/security/cacerts/0d69c7e1.0
+64768 818 -1 /system/etc/security/cacerts/89c02a45.0
+64768 869 -1 /system/etc/security/cacerts/da7377f6.0
+64768 817 -1 /system/etc/security/cacerts/88950faa.0
+64768 809 -1 /system/etc/security/cacerts/7c302982.0
+64768 777 -1 /system/etc/security/cacerts/3c899c73.0
+64768 874 -1 /system/etc/security/cacerts/e48193cf.0
+64768 855 -1 /system/etc/security/cacerts/cb156124.0
+64768 833 -1 /system/etc/security/cacerts/a7605362.0
+64768 876 -1 /system/etc/security/cacerts/e8651083.0
+64768 840 -1 /system/etc/security/cacerts/b0f3e76e.0
+64768 841 -1 /system/etc/security/cacerts/b3fb433b.0
+64768 764 -1 /system/etc/security/cacerts/2fa87019.0
+64768 749 -1 /system/etc/security/cacerts/111e6273.0
+64768 871 -1 /system/etc/security/cacerts/dc99f41e.0
+64768 842 -1 /system/etc/security/cacerts/b7db1890.0
+64768 789 -1 /system/etc/security/cacerts/559f7c71.0
+64768 838 -1 /system/etc/security/cacerts/aeb67534.0
+64768 769 -1 /system/etc/security/cacerts/343eb6cb.0
+64768 865 -1 /system/etc/security/cacerts/d59297b8.0
+64768 824 -1 /system/etc/security/cacerts/9576d26b.0
+64768 775 -1 /system/etc/security/cacerts/3c6676aa.0
+64768 860 -1 /system/etc/security/cacerts/d0cddf45.0
+64768 847 -1 /system/etc/security/cacerts/bf64f35b.0
+64768 786 -1 /system/etc/security/cacerts/5046c355.0
+64768 870 -1 /system/etc/security/cacerts/dbc54cab.0
+64768 826 -1 /system/etc/security/cacerts/9685a493.0
+64768 785 -1 /system/etc/security/cacerts/4e18c148.0
+64768 868 -1 /system/etc/security/cacerts/d8317ada.0
+64768 823 -1 /system/etc/security/cacerts/9479c8c3.0
+64768 748 -1 /system/etc/security/cacerts/10531352.0
+64768 757 -1 /system/etc/security/cacerts/1f58a078.0
+64768 805 -1 /system/etc/security/cacerts/7892ad52.0
+64768 827 -1 /system/etc/security/cacerts/9772ca32.0
+64768 872 -1 /system/etc/security/cacerts/dfc0fe80.0
+64768 877 -1 /system/etc/security/cacerts/ed39abd0.0
+64768 767 -1 /system/etc/security/cacerts/31188b5e.0
+64768 791 -1 /system/etc/security/cacerts/5a250ea7.0
+64768 795 -1 /system/etc/security/cacerts/5e4e69e7.0
+64768 792 -1 /system/etc/security/cacerts/5a3f0ff8.0
+64768 853 -1 /system/etc/security/cacerts/c907e29b.0
+64768 819 -1 /system/etc/security/cacerts/8d6437c3.0
+64768 801 -1 /system/etc/security/cacerts/69105f4f.0
+64768 821 -1 /system/etc/security/cacerts/9282e51c.0
+64768 778 -1 /system/etc/security/cacerts/3c9a4d3b.0
+64768 766 -1 /system/etc/security/cacerts/304d27c3.0
+64768 803 -1 /system/etc/security/cacerts/75680d2e.0
+64768 854 -1 /system/etc/security/cacerts/c90bc37d.0
+64768 828 -1 /system/etc/security/cacerts/985c1f52.0
+64768 768 -1 /system/etc/security/cacerts/33ee480d.0
+64768 846 -1 /system/etc/security/cacerts/bdacca6f.0
+64768 861 -1 /system/etc/security/cacerts/d16a5865.0
+64768 762 -1 /system/etc/security/cacerts/2add47b6.0
+64768 800 -1 /system/etc/security/cacerts/67495436.0
+64768 832 -1 /system/etc/security/cacerts/a3896b44.0
+64768 873 -1 /system/etc/security/cacerts/e442e424.0
+64768 806 -1 /system/etc/security/cacerts/7999be0d.0
+64768 866 -1 /system/etc/security/cacerts/d6e6eab9.0
+64768 772 -1 /system/etc/security/cacerts/3a3b02ce.0
+64768 761 -1 /system/etc/security/cacerts/27af790d.0
+64768 770 -1 /system/etc/security/cacerts/35105088.0
+64768 797 -1 /system/etc/security/cacerts/60afe812.0
+64768 807 -1 /system/etc/security/cacerts/7a7c655d.0
+64768 756 -1 /system/etc/security/cacerts/1eb37bdf.0
+64768 852 -1 /system/etc/security/cacerts/c7e2a638.0
+64768 848 -1 /system/etc/security/cacerts/c2c1704e.0
+64768 759 -1 /system/etc/security/cacerts/219d9499.0
+64768 947 -1 /system/etc/security/otacerts.zip
+23 1559370 -1 /system/etc/security/cacerts_google
+64768 941 -1 /system/etc/security/cacerts_google/facacbc6.0
+64768 902 -1 /system/etc/security/cacerts_google/3e7271e8.0
+64768 930 -1 /system/etc/security/cacerts_google/c491639e.0
+64768 918 -1 /system/etc/security/cacerts_google/86212b19.0
+64768 903 -1 /system/etc/security/cacerts_google/455f1b52.0
+64768 915 -1 /system/etc/security/cacerts_google/7d453d8f.0
+64768 934 -1 /system/etc/security/cacerts_google/ccc52f49.0
+64768 899 -1 /system/etc/security/cacerts_google/399e7759.0
+64768 885 -1 /system/etc/security/cacerts_google/02b73561.0
+64768 904 -1 /system/etc/security/cacerts_google/4fbd6bfa.0
+64768 893 -1 /system/etc/security/cacerts_google/23f4c490.0
+64768 935 -1 /system/etc/security/cacerts_google/d4c339cb.0
+64768 942 -1 /system/etc/security/cacerts_google/ff783690.0
+64768 884 -1 /system/etc/security/cacerts_google/00673b5b.0
+64768 937 -1 /system/etc/security/cacerts_google/e268a4c5.0
+64768 900 -1 /system/etc/security/cacerts_google/3ad48a91.0
+64768 886 -1 /system/etc/security/cacerts_google/04f60c28.0
+64768 916 -1 /system/etc/security/cacerts_google/81b9768f.0
+64768 925 -1 /system/etc/security/cacerts_google/a7d2cf64.0
+64768 919 -1 /system/etc/security/cacerts_google/87753b0d.0
+64768 917 -1 /system/etc/security/cacerts_google/85cde254.0
+64768 931 -1 /system/etc/security/cacerts_google/c527e4ab.0
+64768 901 -1 /system/etc/security/cacerts_google/3c58f906.0
+64768 939 -1 /system/etc/security/cacerts_google/e775ed2d.0
+64768 923 -1 /system/etc/security/cacerts_google/a2c66da8.0
+64768 906 -1 /system/etc/security/cacerts_google/524d9b43.0
+64768 928 -1 /system/etc/security/cacerts_google/bc3f2570.0
+64768 890 -1 /system/etc/security/cacerts_google/124bbd54.0
+64768 891 -1 /system/etc/security/cacerts_google/1e8e7201.0
+64768 888 -1 /system/etc/security/cacerts_google/0d69c7e1.0
+64768 920 -1 /system/etc/security/cacerts_google/89c02a45.0
+64768 938 -1 /system/etc/security/cacerts_google/e48193cf.0
+64768 905 -1 /system/etc/security/cacerts_google/5021a0a2.0
+64768 926 -1 /system/etc/security/cacerts_google/b0f3e76e.0
+64768 927 -1 /system/etc/security/cacerts_google/b3fb433b.0
+64768 889 -1 /system/etc/security/cacerts_google/111e6273.0
+64768 897 -1 /system/etc/security/cacerts_google/343eb6cb.0
+64768 929 -1 /system/etc/security/cacerts_google/bf64f35b.0
+64768 936 -1 /system/etc/security/cacerts_google/dbc54cab.0
+64768 907 -1 /system/etc/security/cacerts_google/57692373.0
+64768 922 -1 /system/etc/security/cacerts_google/9772ca32.0
+64768 940 -1 /system/etc/security/cacerts_google/ed39abd0.0
+64768 910 -1 /system/etc/security/cacerts_google/5e4e69e7.0
+64768 909 -1 /system/etc/security/cacerts_google/5a3f0ff8.0
+64768 896 -1 /system/etc/security/cacerts_google/2afc57aa.0
+64768 921 -1 /system/etc/security/cacerts_google/8d6437c3.0
+64768 912 -1 /system/etc/security/cacerts_google/69105f4f.0
+64768 913 -1 /system/etc/security/cacerts_google/75680d2e.0
+64768 933 -1 /system/etc/security/cacerts_google/c90bc37d.0
+64768 895 -1 /system/etc/security/cacerts_google/2add47b6.0
+64768 911 -1 /system/etc/security/cacerts_google/67495436.0
+64768 924 -1 /system/etc/security/cacerts_google/a2df7ad7.0
+64768 914 -1 /system/etc/security/cacerts_google/7999be0d.0
+64768 887 -1 /system/etc/security/cacerts_google/052e396b.0
+64768 908 -1 /system/etc/security/cacerts_google/594f1775.0
+64768 894 -1 /system/etc/security/cacerts_google/27af790d.0
+64768 898 -1 /system/etc/security/cacerts_google/35105088.0
+64768 932 -1 /system/etc/security/cacerts_google/c7e2a638.0
+64768 892 -1 /system/etc/security/cacerts_google/219d9499.0
+23 1521731 -1 /system/etc/selinux
+64768 966 -1 /system/etc/selinux/plat_service_contexts
+64768 963 -1 /system/etc/selinux/plat_seapp_contexts
+64768 965 -1 /system/etc/selinux/plat_sepolicy_and_mapping.sha256
+64768 959 -1 /system/etc/selinux/plat_file_contexts
+64768 960 -1 /system/etc/selinux/plat_hwservice_contexts
+23 1559434 -1 /system/etc/selinux/mapping
+64768 956 -1 /system/etc/selinux/mapping/28.0.compat.cil
+64768 958 -1 /system/etc/selinux/mapping/29.0.compat.cil
+64768 952 -1 /system/etc/selinux/mapping/26.0.compat.cil
+64768 953 -1 /system/etc/selinux/mapping/27.0.cil
+64768 951 -1 /system/etc/selinux/mapping/26.0.cil
+64768 954 -1 /system/etc/selinux/mapping/27.0.compat.cil
+64768 955 -1 /system/etc/selinux/mapping/28.0.cil
+64768 957 -1 /system/etc/selinux/mapping/29.0.cil
+64768 950 -1 /system/etc/selinux/mapping/10000.0.cil
+64768 964 -1 /system/etc/selinux/plat_sepolicy.cil
+64768 961 -1 /system/etc/selinux/plat_mac_permissions.xml
+64768 962 -1 /system/etc/selinux/plat_property_contexts
+64768 738 -1 /system/etc/sanitizer.libraries.txt
+64768 734 -1 /system/etc/preloaded-classes
+64768 603 -1 /system/etc/audio_effects.conf
+64768 626 -1 /system/etc/hosts
+64768 622 -1 /system/etc/fs_config_files
+23 1559451 -1 /system/etc/init
+64768 689 -1 /system/etc/init/wait_for_keymaster.rc
+64768 672 -1 /system/etc/init/racoon.rc
+64768 645 -1 /system/etc/init/gatekeeperd.rc
+64768 633 -1 /system/etc/init/atrace_userdebug.rc
+64768 679 -1 /system/etc/init/storaged.rc
+64768 632 -1 /system/etc/init/atrace.rc
+64768 654 -1 /system/etc/init/iorapd.rc
+64768 671 -1 /system/etc/init/perfetto.rc
+64768 656 -1 /system/etc/init/llkd-debuggable.rc
+64768 678 -1 /system/etc/init/statsd.rc
+64768 635 -1 /system/etc/init/blank_screen.rc
+64768 651 -1 /system/etc/init/incidentd.rc
+64768 675 -1 /system/etc/init/rss_hwm_reset.rc
+64768 650 -1 /system/etc/init/idmap2d.rc
+64768 682 -1 /system/etc/init/traceur.rc
+64768 659 -1 /system/etc/init/logcatd.rc
+64768 642 -1 /system/etc/init/drmserver.rc
+64768 653 -1 /system/etc/init/installd.rc
+64768 686 -1 /system/etc/init/usbd.rc
+64768 636 -1 /system/etc/init/bootanim.rc
+64768 640 -1 /system/etc/init/cameraserver.rc
+64768 644 -1 /system/etc/init/flags_health_check.rc
+64768 677 -1 /system/etc/init/snapshotctl.rc
+64768 641 -1 /system/etc/init/cppreopts.rc
+64768 661 -1 /system/etc/init/logtagd.rc
+64768 668 -1 /system/etc/init/mtpd.rc
+64768 665 -1 /system/etc/init/mediaextractor.rc
+64768 631 -1 /system/etc/init/art_apex_boot_integrity.rc
+64768 634 -1 /system/etc/init/audioserver.rc
+64768 662 -1 /system/etc/init/lpdumpd.rc
+64768 637 -1 /system/etc/init/bootstat-debug.rc
+64768 630 -1 /system/etc/init/apexd.rc
+64768 684 -1 /system/etc/init/update_engine.rc
+64768 683 -1 /system/etc/init/uncrypt.rc
+64768 674 -1 /system/etc/init/recovery-refresh.rc
+64768 669 -1 /system/etc/init/netd.rc
+64768 673 -1 /system/etc/init/recovery-persist.rc
+64768 655 -1 /system/etc/init/keystore.rc
+64768 643 -1 /system/etc/init/dumpstate.rc
+64768 680 -1 /system/etc/init/surfaceflinger.rc
+64768 687 -1 /system/etc/init/vdc.rc
+64768 646 -1 /system/etc/init/gpuservice.rc
+64768 658 -1 /system/etc/init/lmkd.rc
+64768 685 -1 /system/etc/init/update_verifier.rc
+64768 628 -1 /system/etc/init/android.hidl.allocator@1.0-service.rc
+64768 657 -1 /system/etc/init/llkd.rc
+64768 660 -1 /system/etc/init/logd.rc
+64768 690 -1 /system/etc/init/wifi.rc
+64768 648 -1 /system/etc/init/heapprofd.rc
+64768 676 -1 /system/etc/init/servicemanager.rc
+64768 652 -1 /system/etc/init/init-debug.rc
+64768 666 -1 /system/etc/init/mediametrics.rc
+64768 649 -1 /system/etc/init/hwservicemanager.rc
+64768 688 -1 /system/etc/init/vold.rc
+64768 663 -1 /system/etc/init/mdnsd.rc
+64768 639 -1 /system/etc/init/bpfloader.rc
+64768 629 -1 /system/etc/init/android.system.suspend@1.0-service.rc
+64768 681 -1 /system/etc/init/tombstoned.rc
+64768 664 -1 /system/etc/init/mediadrmserver.rc
+64768 691 -1 /system/etc/init/wificond.rc
+64768 667 -1 /system/etc/init/mediaserver.rc
+64768 638 -1 /system/etc/init/bootstat.rc
+64768 647 -1 /system/etc/init/gsid.rc
+64768 670 -1 /system/etc/init/otapreopt.rc
+64768 998 -1 /system/etc/xtables.lock
+64768 692 -1 /system/etc/ld.config.txt
+64768 613 -1 /system/etc/clatd.conf
+64768 620 -1 /system/etc/fonts.xml
+64768 696 -1 /system/etc/mkshrc
+64768 602 -1 /system/etc/NOTICE.xml.gz
+64768 695 -1 /system/etc/mke2fs.conf
+23 1559521 -1 /system/etc/vintf
+64768 984 -1 /system/etc/vintf/compatibility_matrix.current.xml
+64768 981 -1 /system/etc/vintf/compatibility_matrix.2.xml
+64768 986 -1 /system/etc/vintf/compatibility_matrix.legacy.xml
+64768 983 -1 /system/etc/vintf/compatibility_matrix.4.xml
+64768 980 -1 /system/etc/vintf/compatibility_matrix.1.xml
+64768 985 -1 /system/etc/vintf/compatibility_matrix.device.xml
+64768 993 -1 /system/etc/vintf/manifest.xml
+64768 982 -1 /system/etc/vintf/compatibility_matrix.3.xml
+23 1559530 -1 /system/etc/vintf/manifest
+64768 988 -1 /system/etc/vintf/manifest/android.frameworks.stats@1.0-service.xml
+64768 992 -1 /system/etc/vintf/manifest/manifest_media_c2_software.xml
+64768 991 -1 /system/etc/vintf/manifest/manifest_android.frameworks.cameraservice.service@2.0.xml
+64768 989 -1 /system/etc/vintf/manifest/android.hidl.allocator@1.0-service.xml
+64768 990 -1 /system/etc/vintf/manifest/android.system.suspend@1.0-service.xml
+64768 625 -1 /system/etc/group
+64768 607 -1 /system/etc/boot-image.bprof
+64768 693 -1 /system/etc/llndk.libraries.R.txt
+64768 995 -1 /system/etc/vndkcorevariant.libraries.R.txt
+64768 997 -1 /system/etc/vndksp.libraries.R.txt
+64768 994 -1 /system/etc/vndkcore.libraries.R.txt
+64768 612 -1 /system/etc/cgroups.json
+23 1559541 -1 /system/etc/compatconfig
+64768 617 -1 /system/etc/compatconfig/services-platform-compat-config.xml
+64768 615 -1 /system/etc/compatconfig/framework-platform-compat-config.xml
+64768 616 -1 /system/etc/compatconfig/libcore-platform-compat-config.xml
+2054 38 -1 /system/etc/public.libraries-qti.txt
+21 19476 -1 /apex
+1896 2 -1 /apex/com.android.neuralnetworks
+1896 11 -1 /apex/com.android.neuralnetworks/lost+found
+1896 48 -1 /apex/com.android.neuralnetworks/lib64
+1896 58 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@3.0.so
+1896 75 -1 /apex/com.android.neuralnetworks/lib64/libhidlbase.so
+1896 57 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@2.1.so
+1896 82 -1 /apex/com.android.neuralnetworks/lib64/libui.so
+1896 80 -1 /apex/com.android.neuralnetworks/lib64/libsync.so
+1896 67 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.safe_union@1.0.so
+1896 78 -1 /apex/com.android.neuralnetworks/lib64/libneuralnetworks.so
+1896 65 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.memory.token@1.0.so
+1896 69 -1 /apex/com.android.neuralnetworks/lib64/libbinderthreadstate.so
+1896 66 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.memory@1.0.so
+1896 79 -1 /apex/com.android.neuralnetworks/lib64/libprocessgroup.so
+1896 61 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.1.so
+1896 76 -1 /apex/com.android.neuralnetworks/lib64/libhidlmemory.so
+1896 60 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.0.so
+1896 77 -1 /apex/com.android.neuralnetworks/lib64/libnativewindow.so
+1896 51 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.allocator@3.0.so
+1896 73 -1 /apex/com.android.neuralnetworks/lib64/libfmq.so
+1896 59 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@4.0.so
+1896 54 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.common@1.1.so
+1896 52 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.allocator@4.0.so
+1896 55 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.common@1.2.so
+1896 50 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.allocator@2.0.so
+1896 62 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.2.so
+1896 74 -1 /apex/com.android.neuralnetworks/lib64/libhardware.so
+1896 71 -1 /apex/com.android.neuralnetworks/lib64/libcrypto.so
+1896 49 -1 /apex/com.android.neuralnetworks/lib64/android.frameworks.bufferhub@1.0.so
+1896 56 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@2.0.so
+1896 64 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.allocator@1.0.so
+1896 81 -1 /apex/com.android.neuralnetworks/lib64/libtextclassifier_hash.so
+1896 83 -1 /apex/com.android.neuralnetworks/lib64/libutils.so
+1896 63 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.3.so
+1896 68 -1 /apex/com.android.neuralnetworks/lib64/libbase.so
+1896 72 -1 /apex/com.android.neuralnetworks/lib64/libcutils.so
+1896 70 -1 /apex/com.android.neuralnetworks/lib64/libc++.so
+1896 53 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.common@1.0.so
+1896 12 -1 /apex/com.android.neuralnetworks/lib
+1896 22 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@3.0.so
+1896 39 -1 /apex/com.android.neuralnetworks/lib/libhidlbase.so
+1896 21 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@2.1.so
+1896 46 -1 /apex/com.android.neuralnetworks/lib/libui.so
+1896 44 -1 /apex/com.android.neuralnetworks/lib/libsync.so
+1896 31 -1 /apex/com.android.neuralnetworks/lib/android.hidl.safe_union@1.0.so
+1896 42 -1 /apex/com.android.neuralnetworks/lib/libneuralnetworks.so
+1896 29 -1 /apex/com.android.neuralnetworks/lib/android.hidl.memory.token@1.0.so
+1896 33 -1 /apex/com.android.neuralnetworks/lib/libbinderthreadstate.so
+1896 30 -1 /apex/com.android.neuralnetworks/lib/android.hidl.memory@1.0.so
+1896 43 -1 /apex/com.android.neuralnetworks/lib/libprocessgroup.so
+1896 25 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.1.so
+1896 40 -1 /apex/com.android.neuralnetworks/lib/libhidlmemory.so
+1896 24 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.0.so
+1896 41 -1 /apex/com.android.neuralnetworks/lib/libnativewindow.so
+1896 15 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.allocator@3.0.so
+1896 37 -1 /apex/com.android.neuralnetworks/lib/libfmq.so
+1896 23 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@4.0.so
+1896 18 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.common@1.1.so
+1896 16 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.allocator@4.0.so
+1896 19 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.common@1.2.so
+1896 14 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.allocator@2.0.so
+1896 26 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.2.so
+1896 38 -1 /apex/com.android.neuralnetworks/lib/libhardware.so
+1896 35 -1 /apex/com.android.neuralnetworks/lib/libcrypto.so
+1896 13 -1 /apex/com.android.neuralnetworks/lib/android.frameworks.bufferhub@1.0.so
+1896 20 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@2.0.so
+1896 28 -1 /apex/com.android.neuralnetworks/lib/android.hidl.allocator@1.0.so
+1896 45 -1 /apex/com.android.neuralnetworks/lib/libtextclassifier_hash.so
+1896 47 -1 /apex/com.android.neuralnetworks/lib/libutils.so
+1896 27 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.3.so
+1896 32 -1 /apex/com.android.neuralnetworks/lib/libbase.so
+1896 36 -1 /apex/com.android.neuralnetworks/lib/libcutils.so
+1896 34 -1 /apex/com.android.neuralnetworks/lib/libc++.so
+1896 17 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.common@1.0.so
+1896 84 -1 /apex/com.android.neuralnetworks/apex_manifest.json
+1896 2 -1 /apex/com.android.neuralnetworks@1
+1896 11 -1 /apex/com.android.neuralnetworks@1/lost+found
+1896 48 -1 /apex/com.android.neuralnetworks@1/lib64
+1896 58 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@3.0.so
+1896 75 -1 /apex/com.android.neuralnetworks@1/lib64/libhidlbase.so
+1896 57 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@2.1.so
+1896 82 -1 /apex/com.android.neuralnetworks@1/lib64/libui.so
+1896 80 -1 /apex/com.android.neuralnetworks@1/lib64/libsync.so
+1896 67 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.safe_union@1.0.so
+1896 78 -1 /apex/com.android.neuralnetworks@1/lib64/libneuralnetworks.so
+1896 65 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.memory.token@1.0.so
+1896 69 -1 /apex/com.android.neuralnetworks@1/lib64/libbinderthreadstate.so
+1896 66 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.memory@1.0.so
+1896 79 -1 /apex/com.android.neuralnetworks@1/lib64/libprocessgroup.so
+1896 61 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.1.so
+1896 76 -1 /apex/com.android.neuralnetworks@1/lib64/libhidlmemory.so
+1896 60 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.0.so
+1896 77 -1 /apex/com.android.neuralnetworks@1/lib64/libnativewindow.so
+1896 51 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.allocator@3.0.so
+1896 73 -1 /apex/com.android.neuralnetworks@1/lib64/libfmq.so
+1896 59 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@4.0.so
+1896 54 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.common@1.1.so
+1896 52 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.allocator@4.0.so
+1896 55 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.common@1.2.so
+1896 50 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.allocator@2.0.so
+1896 62 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.2.so
+1896 74 -1 /apex/com.android.neuralnetworks@1/lib64/libhardware.so
+1896 71 -1 /apex/com.android.neuralnetworks@1/lib64/libcrypto.so
+1896 49 -1 /apex/com.android.neuralnetworks@1/lib64/android.frameworks.bufferhub@1.0.so
+1896 56 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@2.0.so
+1896 64 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.allocator@1.0.so
+1896 81 -1 /apex/com.android.neuralnetworks@1/lib64/libtextclassifier_hash.so
+1896 83 -1 /apex/com.android.neuralnetworks@1/lib64/libutils.so
+1896 63 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.3.so
+1896 68 -1 /apex/com.android.neuralnetworks@1/lib64/libbase.so
+1896 72 -1 /apex/com.android.neuralnetworks@1/lib64/libcutils.so
+1896 70 -1 /apex/com.android.neuralnetworks@1/lib64/libc++.so
+1896 53 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.common@1.0.so
+1896 12 -1 /apex/com.android.neuralnetworks@1/lib
+1896 22 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@3.0.so
+1896 39 -1 /apex/com.android.neuralnetworks@1/lib/libhidlbase.so
+1896 21 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@2.1.so
+1896 46 -1 /apex/com.android.neuralnetworks@1/lib/libui.so
+1896 44 -1 /apex/com.android.neuralnetworks@1/lib/libsync.so
+1896 31 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.safe_union@1.0.so
+1896 42 -1 /apex/com.android.neuralnetworks@1/lib/libneuralnetworks.so
+1896 29 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.memory.token@1.0.so
+1896 33 -1 /apex/com.android.neuralnetworks@1/lib/libbinderthreadstate.so
+1896 30 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.memory@1.0.so
+1896 43 -1 /apex/com.android.neuralnetworks@1/lib/libprocessgroup.so
+1896 25 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.1.so
+1896 40 -1 /apex/com.android.neuralnetworks@1/lib/libhidlmemory.so
+1896 24 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.0.so
+1896 41 -1 /apex/com.android.neuralnetworks@1/lib/libnativewindow.so
+1896 15 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.allocator@3.0.so
+1896 37 -1 /apex/com.android.neuralnetworks@1/lib/libfmq.so
+1896 23 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@4.0.so
+1896 18 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.common@1.1.so
+1896 16 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.allocator@4.0.so
+1896 19 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.common@1.2.so
+1896 14 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.allocator@2.0.so
+1896 26 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.2.so
+1896 38 -1 /apex/com.android.neuralnetworks@1/lib/libhardware.so
+1896 35 -1 /apex/com.android.neuralnetworks@1/lib/libcrypto.so
+1896 13 -1 /apex/com.android.neuralnetworks@1/lib/android.frameworks.bufferhub@1.0.so
+1896 20 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@2.0.so
+1896 28 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.allocator@1.0.so
+1896 45 -1 /apex/com.android.neuralnetworks@1/lib/libtextclassifier_hash.so
+1896 47 -1 /apex/com.android.neuralnetworks@1/lib/libutils.so
+1896 27 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.3.so
+1896 32 -1 /apex/com.android.neuralnetworks@1/lib/libbase.so
+1896 36 -1 /apex/com.android.neuralnetworks@1/lib/libcutils.so
+1896 34 -1 /apex/com.android.neuralnetworks@1/lib/libc++.so
+1896 17 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.common@1.0.so
+1896 84 -1 /apex/com.android.neuralnetworks@1/apex_manifest.json
+1880 2 -1 /apex/com.android.apex.cts.shim
+1880 11 -1 /apex/com.android.apex.cts.shim/lost+found
+1880 12 -1 /apex/com.android.apex.cts.shim/etc
+1880 13 -1 /apex/com.android.apex.cts.shim/etc/hash.txt
+1880 14 -1 /apex/com.android.apex.cts.shim/apex_manifest.json
+1880 2 -1 /apex/com.android.apex.cts.shim@1
+1880 11 -1 /apex/com.android.apex.cts.shim@1/lost+found
+1880 12 -1 /apex/com.android.apex.cts.shim@1/etc
+1880 13 -1 /apex/com.android.apex.cts.shim@1/etc/hash.txt
+1880 14 -1 /apex/com.android.apex.cts.shim@1/apex_manifest.json
+1864 2 -1 /apex/com.android.media.swcodec
+1864 11 -1 /apex/com.android.media.swcodec/lost+found
+1864 12 -1 /apex/com.android.media.swcodec/bin
+1864 13 -1 /apex/com.android.media.swcodec/bin/mediaswcodec
+1864 20 -1 /apex/com.android.media.swcodec/lib64
+1864 31 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@3.0.so
+1864 64 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_g711alawdec.so
+1864 87 -1 /apex/com.android.media.swcodec/lib64/libhidlbase.so
+1864 30 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@2.1.so
+1864 100 -1 /apex/com.android.media.swcodec/lib64/libstagefright_enc_common.so
+1864 103 -1 /apex/com.android.media.swcodec/lib64/libui.so
+1864 50 -1 /apex/com.android.media.swcodec/lib64/libcodec2.so
+1864 39 -1 /apex/com.android.media.swcodec/lib64/android.hidl.safe_union@1.0.so
+1864 67 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_h263dec.so
+1864 37 -1 /apex/com.android.media.swcodec/lib64/android.hidl.memory.token@1.0.so
+1864 46 -1 /apex/com.android.media.swcodec/lib64/libbinderthreadstate.so
+1864 71 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mp3dec.so
+1864 38 -1 /apex/com.android.media.swcodec/lib64/android.hidl.memory@1.0.so
+1864 98 -1 /apex/com.android.media.swcodec/lib64/libstagefright_bufferpool@2.0.1.so
+1864 93 -1 /apex/com.android.media.swcodec/lib64/libprocessgroup.so
+1864 54 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrnbdec.so
+1864 75 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_opusdec.so
+1864 49 -1 /apex/com.android.media.swcodec/lib64/libcap.so
+1864 53 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_aacenc.so
+1864 41 -1 /apex/com.android.media.swcodec/lib64/android.hidl.token@1.0.so
+1864 97 -1 /apex/com.android.media.swcodec/lib64/libstagefright_amrnb_common.so
+1864 80 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp8enc.so
+1864 56 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrwbdec.so
+1864 105 -1 /apex/com.android.media.swcodec/lib64/libvorbisidec.so
+1864 106 -1 /apex/com.android.media.swcodec/lib64/libvpx.so
+1864 73 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mpeg4dec.so
+1864 63 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_flacenc.so
+1864 74 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mpeg4enc.so
+1864 72 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mpeg2dec.so
+1864 88 -1 /apex/com.android.media.swcodec/lib64/libhidlmemory.so
+1864 40 -1 /apex/com.android.media.swcodec/lib64/android.hidl.token@1.0-utils.so
+1864 99 -1 /apex/com.android.media.swcodec/lib64/libstagefright_bufferqueue_helper.so
+1864 22 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.allocator@3.0.so
+1864 51 -1 /apex/com.android.media.swcodec/lib64/libcodec2_hidl@1.0.so
+1864 94 -1 /apex/com.android.media.swcodec/lib64/libscudo_wrapper.so
+1864 85 -1 /apex/com.android.media.swcodec/lib64/libfmq.so
+1864 81 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp9dec.so
+1864 32 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@4.0.so
+1864 27 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.common@1.1.so
+1864 23 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.allocator@4.0.so
+1864 33 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media.bufferpool@2.0.so
+1864 28 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.common@1.2.so
+1864 92 -1 /apex/com.android.media.swcodec/lib64/libopus.so
+1864 21 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.allocator@2.0.so
+1864 43 -1 /apex/com.android.media.swcodec/lib64/libavservices_minijail_vendor.so
+1864 91 -1 /apex/com.android.media.swcodec/lib64/libminijail.so
+1864 60 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_avcenc.so
+1864 79 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp8dec.so
+1864 86 -1 /apex/com.android.media.swcodec/lib64/libhardware.so
+1864 95 -1 /apex/com.android.media.swcodec/lib64/libsfplugin_ccodec_utils.so
+1864 36 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media@1.0.so
+1864 57 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrwbenc.so
+1864 68 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_h263enc.so
+1864 76 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_opusenc.so
+1864 78 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vorbisdec.so
+1864 102 -1 /apex/com.android.media.swcodec/lib64/libstagefright_foundation.so
+1864 69 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_hevcdec.so
+1864 29 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@2.0.so
+1864 42 -1 /apex/com.android.media.swcodec/lib64/libaudioutils.so
+1864 83 -1 /apex/com.android.media.swcodec/lib64/libcodec2_vndk.so
+1864 24 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.bufferqueue@1.0.so
+1864 48 -1 /apex/com.android.media.swcodec/lib64/libc_scudo.so
+1864 70 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_hevcenc.so
+1864 104 -1 /apex/com.android.media.swcodec/lib64/libutils.so
+1864 66 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_gsmdec.so
+1864 44 -1 /apex/com.android.media.swcodec/lib64/libbase.so
+1864 55 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrnbenc.so
+1864 84 -1 /apex/com.android.media.swcodec/lib64/libcutils.so
+1864 34 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media.c2@1.0.so
+1864 61 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_common.so
+1864 90 -1 /apex/com.android.media.swcodec/lib64/libmedia_codecserviceregistrant.so
+1864 47 -1 /apex/com.android.media.swcodec/lib64/libc++.so
+1864 101 -1 /apex/com.android.media.swcodec/lib64/libstagefright_flacdec.so
+1864 35 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media.omx@1.0.so
+1864 77 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_rawdec.so
+1864 58 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_av1dec_gav1.so
+1864 59 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_avcdec.so
+1864 96 -1 /apex/com.android.media.swcodec/lib64/libspeexresampler.so
+1864 52 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_aacdec.so
+1864 26 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.common@1.0.so
+1864 82 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp9enc.so
+1864 89 -1 /apex/com.android.media.swcodec/lib64/libion.so
+1864 62 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_flacdec.so
+1864 65 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_g711mlawdec.so
+1864 25 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.bufferqueue@2.0.so
+1864 45 -1 /apex/com.android.media.swcodec/lib64/libbinder.so
+1864 14 -1 /apex/com.android.media.swcodec/etc
+1864 17 -1 /apex/com.android.media.swcodec/etc/media_codecs.xml
+1864 18 -1 /apex/com.android.media.swcodec/etc/seccomp_policy
+1864 19 -1 /apex/com.android.media.swcodec/etc/seccomp_policy/mediaswcodec.policy
+1864 16 -1 /apex/com.android.media.swcodec/etc/ld.config.txt
+1864 15 -1 /apex/com.android.media.swcodec/etc/init.rc
+1864 107 -1 /apex/com.android.media.swcodec/apex_manifest.json
+1864 2 -1 /apex/com.android.media.swcodec@300000000
+1864 11 -1 /apex/com.android.media.swcodec@300000000/lost+found
+1864 12 -1 /apex/com.android.media.swcodec@300000000/bin
+1864 13 -1 /apex/com.android.media.swcodec@300000000/bin/mediaswcodec
+1864 20 -1 /apex/com.android.media.swcodec@300000000/lib64
+1864 31 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@3.0.so
+1864 64 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_g711alawdec.so
+1864 87 -1 /apex/com.android.media.swcodec@300000000/lib64/libhidlbase.so
+1864 30 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@2.1.so
+1864 100 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_enc_common.so
+1864 103 -1 /apex/com.android.media.swcodec@300000000/lib64/libui.so
+1864 50 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2.so
+1864 39 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.safe_union@1.0.so
+1864 67 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_h263dec.so
+1864 37 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.memory.token@1.0.so
+1864 46 -1 /apex/com.android.media.swcodec@300000000/lib64/libbinderthreadstate.so
+1864 71 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mp3dec.so
+1864 38 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.memory@1.0.so
+1864 98 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_bufferpool@2.0.1.so
+1864 93 -1 /apex/com.android.media.swcodec@300000000/lib64/libprocessgroup.so
+1864 54 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrnbdec.so
+1864 75 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_opusdec.so
+1864 49 -1 /apex/com.android.media.swcodec@300000000/lib64/libcap.so
+1864 53 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_aacenc.so
+1864 41 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.token@1.0.so
+1864 97 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_amrnb_common.so
+1864 80 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp8enc.so
+1864 56 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrwbdec.so
+1864 105 -1 /apex/com.android.media.swcodec@300000000/lib64/libvorbisidec.so
+1864 106 -1 /apex/com.android.media.swcodec@300000000/lib64/libvpx.so
+1864 73 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mpeg4dec.so
+1864 63 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_flacenc.so
+1864 74 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mpeg4enc.so
+1864 72 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mpeg2dec.so
+1864 88 -1 /apex/com.android.media.swcodec@300000000/lib64/libhidlmemory.so
+1864 40 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.token@1.0-utils.so
+1864 99 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_bufferqueue_helper.so
+1864 22 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.allocator@3.0.so
+1864 51 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_hidl@1.0.so
+1864 94 -1 /apex/com.android.media.swcodec@300000000/lib64/libscudo_wrapper.so
+1864 85 -1 /apex/com.android.media.swcodec@300000000/lib64/libfmq.so
+1864 81 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp9dec.so
+1864 32 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@4.0.so
+1864 27 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.common@1.1.so
+1864 23 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.allocator@4.0.so
+1864 33 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media.bufferpool@2.0.so
+1864 28 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.common@1.2.so
+1864 92 -1 /apex/com.android.media.swcodec@300000000/lib64/libopus.so
+1864 21 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.allocator@2.0.so
+1864 43 -1 /apex/com.android.media.swcodec@300000000/lib64/libavservices_minijail_vendor.so
+1864 91 -1 /apex/com.android.media.swcodec@300000000/lib64/libminijail.so
+1864 60 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_avcenc.so
+1864 79 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp8dec.so
+1864 86 -1 /apex/com.android.media.swcodec@300000000/lib64/libhardware.so
+1864 95 -1 /apex/com.android.media.swcodec@300000000/lib64/libsfplugin_ccodec_utils.so
+1864 36 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media@1.0.so
+1864 57 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrwbenc.so
+1864 68 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_h263enc.so
+1864 76 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_opusenc.so
+1864 78 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vorbisdec.so
+1864 102 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_foundation.so
+1864 69 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_hevcdec.so
+1864 29 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@2.0.so
+1864 42 -1 /apex/com.android.media.swcodec@300000000/lib64/libaudioutils.so
+1864 83 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_vndk.so
+1864 24 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.bufferqueue@1.0.so
+1864 48 -1 /apex/com.android.media.swcodec@300000000/lib64/libc_scudo.so
+1864 70 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_hevcenc.so
+1864 104 -1 /apex/com.android.media.swcodec@300000000/lib64/libutils.so
+1864 66 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_gsmdec.so
+1864 44 -1 /apex/com.android.media.swcodec@300000000/lib64/libbase.so
+1864 55 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrnbenc.so
+1864 84 -1 /apex/com.android.media.swcodec@300000000/lib64/libcutils.so
+1864 34 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media.c2@1.0.so
+1864 61 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_common.so
+1864 90 -1 /apex/com.android.media.swcodec@300000000/lib64/libmedia_codecserviceregistrant.so
+1864 47 -1 /apex/com.android.media.swcodec@300000000/lib64/libc++.so
+1864 101 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_flacdec.so
+1864 35 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media.omx@1.0.so
+1864 77 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_rawdec.so
+1864 58 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_av1dec_gav1.so
+1864 59 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_avcdec.so
+1864 96 -1 /apex/com.android.media.swcodec@300000000/lib64/libspeexresampler.so
+1864 52 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_aacdec.so
+1864 26 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.common@1.0.so
+1864 82 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp9enc.so
+1864 89 -1 /apex/com.android.media.swcodec@300000000/lib64/libion.so
+1864 62 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_flacdec.so
+1864 65 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_g711mlawdec.so
+1864 25 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.bufferqueue@2.0.so
+1864 45 -1 /apex/com.android.media.swcodec@300000000/lib64/libbinder.so
+1864 14 -1 /apex/com.android.media.swcodec@300000000/etc
+1864 17 -1 /apex/com.android.media.swcodec@300000000/etc/media_codecs.xml
+1864 18 -1 /apex/com.android.media.swcodec@300000000/etc/seccomp_policy
+1864 19 -1 /apex/com.android.media.swcodec@300000000/etc/seccomp_policy/mediaswcodec.policy
+1864 16 -1 /apex/com.android.media.swcodec@300000000/etc/ld.config.txt
+1864 15 -1 /apex/com.android.media.swcodec@300000000/etc/init.rc
+1864 107 -1 /apex/com.android.media.swcodec@300000000/apex_manifest.json
+1856 2 -1 /apex/com.android.media
+1856 11 -1 /apex/com.android.media/lost+found
+1856 17 -1 /apex/com.android.media/lib64
+1856 42 -1 /apex/com.android.media/lib64/libhidlbase.so
+1856 18 -1 /apex/com.android.media/lib64/android.hardware.cas.native@1.0.so
+1856 21 -1 /apex/com.android.media/lib64/android.hidl.memory.token@1.0.so
+1856 38 -1 /apex/com.android.media/lib64/libbinderthreadstate.so
+1856 22 -1 /apex/com.android.media/lib64/android.hidl.memory@1.0.so
+1856 44 -1 /apex/com.android.media/lib64/libprocessgroup.so
+1856 24 -1 /apex/com.android.media/lib64/android.hidl.token@1.0.so
+1856 43 -1 /apex/com.android.media/lib64/libhidlmemory.so
+1856 23 -1 /apex/com.android.media/lib64/android.hidl.token@1.0-utils.so
+1856 19 -1 /apex/com.android.media/lib64/android.hardware.cas@1.0.so
+1856 25 -1 /apex/com.android.media/lib64/extractors
+1856 28 -1 /apex/com.android.media/lib64/extractors/libflacextractor.so
+1856 31 -1 /apex/com.android.media/lib64/extractors/libmp3extractor.so
+1856 26 -1 /apex/com.android.media/lib64/extractors/libaacextractor.so
+1856 29 -1 /apex/com.android.media/lib64/extractors/libmidiextractor.so
+1856 35 -1 /apex/com.android.media/lib64/extractors/libwavextractor.so
+1856 30 -1 /apex/com.android.media/lib64/extractors/libmkvextractor.so
+1856 27 -1 /apex/com.android.media/lib64/extractors/libamrextractor.so
+1856 33 -1 /apex/com.android.media/lib64/extractors/libmpeg2extractor.so
+1856 32 -1 /apex/com.android.media/lib64/extractors/libmp4extractor.so
+1856 34 -1 /apex/com.android.media/lib64/extractors/liboggextractor.so
+1856 40 -1 /apex/com.android.media/lib64/libcrypto.so
+1856 20 -1 /apex/com.android.media/lib64/android.hidl.allocator@1.0.so
+1856 36 -1 /apex/com.android.media/lib64/libaudioutils.so
+1856 47 -1 /apex/com.android.media/lib64/libutils.so
+1856 37 -1 /apex/com.android.media/lib64/libbase.so
+1856 41 -1 /apex/com.android.media/lib64/libcutils.so
+1856 39 -1 /apex/com.android.media/lib64/libc++.so
+1856 46 -1 /apex/com.android.media/lib64/libstagefright_flacdec.so
+1856 45 -1 /apex/com.android.media/lib64/libspeexresampler.so
+1856 12 -1 /apex/com.android.media/etc
+1856 13 -1 /apex/com.android.media/etc/seccomp_policy
+1856 14 -1 /apex/com.android.media/etc/seccomp_policy/mediaextractor.policy
+1856 48 -1 /apex/com.android.media/apex_manifest.json
+1856 15 -1 /apex/com.android.media/javalib
+1856 16 -1 /apex/com.android.media/javalib/updatable-media.jar
+1856 2 -1 /apex/com.android.media@300000000
+1856 11 -1 /apex/com.android.media@300000000/lost+found
+1856 17 -1 /apex/com.android.media@300000000/lib64
+1856 42 -1 /apex/com.android.media@300000000/lib64/libhidlbase.so
+1856 18 -1 /apex/com.android.media@300000000/lib64/android.hardware.cas.native@1.0.so
+1856 21 -1 /apex/com.android.media@300000000/lib64/android.hidl.memory.token@1.0.so
+1856 38 -1 /apex/com.android.media@300000000/lib64/libbinderthreadstate.so
+1856 22 -1 /apex/com.android.media@300000000/lib64/android.hidl.memory@1.0.so
+1856 44 -1 /apex/com.android.media@300000000/lib64/libprocessgroup.so
+1856 24 -1 /apex/com.android.media@300000000/lib64/android.hidl.token@1.0.so
+1856 43 -1 /apex/com.android.media@300000000/lib64/libhidlmemory.so
+1856 23 -1 /apex/com.android.media@300000000/lib64/android.hidl.token@1.0-utils.so
+1856 19 -1 /apex/com.android.media@300000000/lib64/android.hardware.cas@1.0.so
+1856 25 -1 /apex/com.android.media@300000000/lib64/extractors
+1856 28 -1 /apex/com.android.media@300000000/lib64/extractors/libflacextractor.so
+1856 31 -1 /apex/com.android.media@300000000/lib64/extractors/libmp3extractor.so
+1856 26 -1 /apex/com.android.media@300000000/lib64/extractors/libaacextractor.so
+1856 29 -1 /apex/com.android.media@300000000/lib64/extractors/libmidiextractor.so
+1856 35 -1 /apex/com.android.media@300000000/lib64/extractors/libwavextractor.so
+1856 30 -1 /apex/com.android.media@300000000/lib64/extractors/libmkvextractor.so
+1856 27 -1 /apex/com.android.media@300000000/lib64/extractors/libamrextractor.so
+1856 33 -1 /apex/com.android.media@300000000/lib64/extractors/libmpeg2extractor.so
+1856 32 -1 /apex/com.android.media@300000000/lib64/extractors/libmp4extractor.so
+1856 34 -1 /apex/com.android.media@300000000/lib64/extractors/liboggextractor.so
+1856 40 -1 /apex/com.android.media@300000000/lib64/libcrypto.so
+1856 20 -1 /apex/com.android.media@300000000/lib64/android.hidl.allocator@1.0.so
+1856 36 -1 /apex/com.android.media@300000000/lib64/libaudioutils.so
+1856 47 -1 /apex/com.android.media@300000000/lib64/libutils.so
+1856 37 -1 /apex/com.android.media@300000000/lib64/libbase.so
+1856 41 -1 /apex/com.android.media@300000000/lib64/libcutils.so
+1856 39 -1 /apex/com.android.media@300000000/lib64/libc++.so
+1856 46 -1 /apex/com.android.media@300000000/lib64/libstagefright_flacdec.so
+1856 45 -1 /apex/com.android.media@300000000/lib64/libspeexresampler.so
+1856 12 -1 /apex/com.android.media@300000000/etc
+1856 13 -1 /apex/com.android.media@300000000/etc/seccomp_policy
+1856 14 -1 /apex/com.android.media@300000000/etc/seccomp_policy/mediaextractor.policy
+1856 48 -1 /apex/com.android.media@300000000/apex_manifest.json
+1856 15 -1 /apex/com.android.media@300000000/javalib
+1856 16 -1 /apex/com.android.media@300000000/javalib/updatable-media.jar
+1840 2 -1 /apex/com.android.conscrypt
+1840 11 -1 /apex/com.android.conscrypt/lost+found
+1840 12 -1 /apex/com.android.conscrypt/bin
+1840 14 -1 /apex/com.android.conscrypt/bin/boringssl_self_test64
+1840 13 -1 /apex/com.android.conscrypt/bin/boringssl_self_test32
+1840 24 -1 /apex/com.android.conscrypt/lib64
+1840 27 -1 /apex/com.android.conscrypt/lib64/libjavacrypto.so
+1840 26 -1 /apex/com.android.conscrypt/lib64/libcrypto.so
+1840 28 -1 /apex/com.android.conscrypt/lib64/libssl.so
+1840 25 -1 /apex/com.android.conscrypt/lib64/libc++.so
+1840 15 -1 /apex/com.android.conscrypt/etc
+1840 16 -1 /apex/com.android.conscrypt/etc/ld.config.txt
+1840 19 -1 /apex/com.android.conscrypt/lib
+1840 22 -1 /apex/com.android.conscrypt/lib/libjavacrypto.so
+1840 21 -1 /apex/com.android.conscrypt/lib/libcrypto.so
+1840 23 -1 /apex/com.android.conscrypt/lib/libssl.so
+1840 20 -1 /apex/com.android.conscrypt/lib/libc++.so
+1840 29 -1 /apex/com.android.conscrypt/apex_manifest.json
+1840 17 -1 /apex/com.android.conscrypt/javalib
+1840 18 -1 /apex/com.android.conscrypt/javalib/conscrypt.jar
+1840 2 -1 /apex/com.android.conscrypt@300000000
+1840 11 -1 /apex/com.android.conscrypt@300000000/lost+found
+1840 12 -1 /apex/com.android.conscrypt@300000000/bin
+1840 14 -1 /apex/com.android.conscrypt@300000000/bin/boringssl_self_test64
+1840 13 -1 /apex/com.android.conscrypt@300000000/bin/boringssl_self_test32
+1840 24 -1 /apex/com.android.conscrypt@300000000/lib64
+1840 27 -1 /apex/com.android.conscrypt@300000000/lib64/libjavacrypto.so
+1840 26 -1 /apex/com.android.conscrypt@300000000/lib64/libcrypto.so
+1840 28 -1 /apex/com.android.conscrypt@300000000/lib64/libssl.so
+1840 25 -1 /apex/com.android.conscrypt@300000000/lib64/libc++.so
+1840 15 -1 /apex/com.android.conscrypt@300000000/etc
+1840 16 -1 /apex/com.android.conscrypt@300000000/etc/ld.config.txt
+1840 19 -1 /apex/com.android.conscrypt@300000000/lib
+1840 22 -1 /apex/com.android.conscrypt@300000000/lib/libjavacrypto.so
+1840 21 -1 /apex/com.android.conscrypt@300000000/lib/libcrypto.so
+1840 23 -1 /apex/com.android.conscrypt@300000000/lib/libssl.so
+1840 20 -1 /apex/com.android.conscrypt@300000000/lib/libc++.so
+1840 29 -1 /apex/com.android.conscrypt@300000000/apex_manifest.json
+1840 17 -1 /apex/com.android.conscrypt@300000000/javalib
+1840 18 -1 /apex/com.android.conscrypt@300000000/javalib/conscrypt.jar
+1832 2 -1 /apex/com.android.resolv
+1832 11 -1 /apex/com.android.resolv/lost+found
+1832 12 -1 /apex/com.android.resolv/lib64
+1832 14 -1 /apex/com.android.resolv/lib64/libnetd_resolv.so
+1832 13 -1 /apex/com.android.resolv/lib64/libcrypto.so
+1832 15 -1 /apex/com.android.resolv/lib64/libssl.so
+1832 16 -1 /apex/com.android.resolv/apex_manifest.json
+1832 2 -1 /apex/com.android.resolv@300000000
+1832 11 -1 /apex/com.android.resolv@300000000/lost+found
+1832 12 -1 /apex/com.android.resolv@300000000/lib64
+1832 14 -1 /apex/com.android.resolv@300000000/lib64/libnetd_resolv.so
+1832 13 -1 /apex/com.android.resolv@300000000/lib64/libcrypto.so
+1832 15 -1 /apex/com.android.resolv@300000000/lib64/libssl.so
+1832 16 -1 /apex/com.android.resolv@300000000/apex_manifest.json
+1888 2 -1 /apex/com.android.runtime
+1888 11 -1 /apex/com.android.runtime/lost+found
+1888 12 -1 /apex/com.android.runtime/bin
+1888 13 -1 /apex/com.android.runtime/bin/linker
+1888 13 -1 /apex/com.android.runtime/bin/linker_asan
+1888 14 -1 /apex/com.android.runtime/bin/linker64
+1888 14 -1 /apex/com.android.runtime/bin/linker_asan64
+1888 32 -1 /apex/com.android.runtime/lib64
+1888 40 -1 /apex/com.android.runtime/lib64/libc_malloc_debug.so
+1888 37 -1 /apex/com.android.runtime/lib64/ld-android.so
+1888 33 -1 /apex/com.android.runtime/lib64/bionic
+1888 36 -1 /apex/com.android.runtime/lib64/bionic/libm.so
+1888 34 -1 /apex/com.android.runtime/lib64/bionic/libc.so
+1888 35 -1 /apex/com.android.runtime/lib64/bionic/libdl.so
+1888 44 -1 /apex/com.android.runtime/lib64/libunwindstack.so
+1888 42 -1 /apex/com.android.runtime/lib64/libdexfile_support.so
+1888 38 -1 /apex/com.android.runtime/lib64/libbase.so
+1888 41 -1 /apex/com.android.runtime/lib64/libc_malloc_hooks.so
+1888 39 -1 /apex/com.android.runtime/lib64/libc++.so
+1888 43 -1 /apex/com.android.runtime/lib64/liblzma.so
+1888 17 -1 /apex/com.android.runtime/etc
+1888 18 -1 /apex/com.android.runtime/etc/ld.config.txt
+1888 19 -1 /apex/com.android.runtime/lib
+1888 27 -1 /apex/com.android.runtime/lib/libc_malloc_debug.so
+1888 24 -1 /apex/com.android.runtime/lib/ld-android.so
+1888 20 -1 /apex/com.android.runtime/lib/bionic
+1888 23 -1 /apex/com.android.runtime/lib/bionic/libm.so
+1888 21 -1 /apex/com.android.runtime/lib/bionic/libc.so
+1888 22 -1 /apex/com.android.runtime/lib/bionic/libdl.so
+1888 31 -1 /apex/com.android.runtime/lib/libunwindstack.so
+1888 29 -1 /apex/com.android.runtime/lib/libdexfile_support.so
+1888 25 -1 /apex/com.android.runtime/lib/libbase.so
+1888 28 -1 /apex/com.android.runtime/lib/libc_malloc_hooks.so
+1888 26 -1 /apex/com.android.runtime/lib/libc++.so
+1888 30 -1 /apex/com.android.runtime/lib/liblzma.so
+1888 45 -1 /apex/com.android.runtime/apex_manifest.json
+1888 2 -1 /apex/com.android.runtime@1
+1888 11 -1 /apex/com.android.runtime@1/lost+found
+1888 12 -1 /apex/com.android.runtime@1/bin
+1888 13 -1 /apex/com.android.runtime@1/bin/linker
+1888 13 -1 /apex/com.android.runtime@1/bin/linker_asan
+1888 14 -1 /apex/com.android.runtime@1/bin/linker64
+1888 14 -1 /apex/com.android.runtime@1/bin/linker_asan64
+1888 32 -1 /apex/com.android.runtime@1/lib64
+1888 40 -1 /apex/com.android.runtime@1/lib64/libc_malloc_debug.so
+1888 37 -1 /apex/com.android.runtime@1/lib64/ld-android.so
+1888 33 -1 /apex/com.android.runtime@1/lib64/bionic
+1888 36 -1 /apex/com.android.runtime@1/lib64/bionic/libm.so
+1888 34 -1 /apex/com.android.runtime@1/lib64/bionic/libc.so
+1888 35 -1 /apex/com.android.runtime@1/lib64/bionic/libdl.so
+1888 44 -1 /apex/com.android.runtime@1/lib64/libunwindstack.so
+1888 42 -1 /apex/com.android.runtime@1/lib64/libdexfile_support.so
+1888 38 -1 /apex/com.android.runtime@1/lib64/libbase.so
+1888 41 -1 /apex/com.android.runtime@1/lib64/libc_malloc_hooks.so
+1888 39 -1 /apex/com.android.runtime@1/lib64/libc++.so
+1888 43 -1 /apex/com.android.runtime@1/lib64/liblzma.so
+1888 17 -1 /apex/com.android.runtime@1/etc
+1888 18 -1 /apex/com.android.runtime@1/etc/ld.config.txt
+1888 19 -1 /apex/com.android.runtime@1/lib
+1888 27 -1 /apex/com.android.runtime@1/lib/libc_malloc_debug.so
+1888 24 -1 /apex/com.android.runtime@1/lib/ld-android.so
+1888 20 -1 /apex/com.android.runtime@1/lib/bionic
+1888 23 -1 /apex/com.android.runtime@1/lib/bionic/libm.so
+1888 21 -1 /apex/com.android.runtime@1/lib/bionic/libc.so
+1888 22 -1 /apex/com.android.runtime@1/lib/bionic/libdl.so
+1888 31 -1 /apex/com.android.runtime@1/lib/libunwindstack.so
+1888 29 -1 /apex/com.android.runtime@1/lib/libdexfile_support.so
+1888 25 -1 /apex/com.android.runtime@1/lib/libbase.so
+1888 28 -1 /apex/com.android.runtime@1/lib/libc_malloc_hooks.so
+1888 26 -1 /apex/com.android.runtime@1/lib/libc++.so
+1888 30 -1 /apex/com.android.runtime@1/lib/liblzma.so
+1888 45 -1 /apex/com.android.runtime@1/apex_manifest.json
+1872 2 -1 /apex/com.android.tzdata
+1872 11 -1 /apex/com.android.tzdata/lost+found
+1872 12 -1 /apex/com.android.tzdata/etc
+1872 13 -1 /apex/com.android.tzdata/etc/icu
+1872 14 -1 /apex/com.android.tzdata/etc/icu/icu_tzdata.dat
+1872 15 -1 /apex/com.android.tzdata/etc/tz
+1872 16 -1 /apex/com.android.tzdata/etc/tz/tz_version
+1872 17 -1 /apex/com.android.tzdata/etc/tz/tzdata
+1872 18 -1 /apex/com.android.tzdata/etc/tz/tzlookup.xml
+1872 19 -1 /apex/com.android.tzdata/apex_manifest.json
+1872 2 -1 /apex/com.android.tzdata@300000000
+1872 11 -1 /apex/com.android.tzdata@300000000/lost+found
+1872 12 -1 /apex/com.android.tzdata@300000000/etc
+1872 13 -1 /apex/com.android.tzdata@300000000/etc/icu
+1872 14 -1 /apex/com.android.tzdata@300000000/etc/icu/icu_tzdata.dat
+1872 15 -1 /apex/com.android.tzdata@300000000/etc/tz
+1872 16 -1 /apex/com.android.tzdata@300000000/etc/tz/tz_version
+1872 17 -1 /apex/com.android.tzdata@300000000/etc/tz/tzdata
+1872 18 -1 /apex/com.android.tzdata@300000000/etc/tz/tzlookup.xml
+1872 19 -1 /apex/com.android.tzdata@300000000/apex_manifest.json
+1848 2 -1 /apex/com.android.i18n
+1848 11 -1 /apex/com.android.i18n/lost+found
+1848 12 -1 /apex/com.android.i18n/etc
+1848 13 -1 /apex/com.android.i18n/etc/icu
+1848 14 -1 /apex/com.android.i18n/etc/icu/icudt64l.dat
+1848 15 -1 /apex/com.android.i18n/apex_manifest.json
+1848 2 -1 /apex/com.android.i18n@1
+1848 11 -1 /apex/com.android.i18n@1/lost+found
+1848 12 -1 /apex/com.android.i18n@1/etc
+1848 13 -1 /apex/com.android.i18n@1/etc/icu
+1848 14 -1 /apex/com.android.i18n@1/etc/icu/icudt64l.dat
+1848 15 -1 /apex/com.android.i18n@1/apex_manifest.json
+1824 2 -1 /apex/com.android.art
+1824 11 -1 /apex/com.android.art/lost+found
+1824 12 -1 /apex/com.android.art/bin
+1824 36 -1 /apex/com.android.art/bin/imgdiagd64
+1824 19 -1 /apex/com.android.art/bin/dalvikvm32
+1824 28 -1 /apex/com.android.art/bin/dexlist
+1824 27 -1 /apex/com.android.art/bin/dexlayoutd
+1824 30 -1 /apex/com.android.art/bin/dexoptanalyzerd
+1824 33 -1 /apex/com.android.art/bin/imgdiag64
+1824 29 -1 /apex/com.android.art/bin/dexoptanalyzer
+1824 13 -1 /apex/com.android.art/bin/art_postinstall_hook
+1824 20 -1 /apex/com.android.art/bin/dalvikvm
+1824 15 -1 /apex/com.android.art/bin/art_preinstall_hook_boot
+1824 24 -1 /apex/com.android.art/bin/dexdiag
+1824 36 -1 /apex/com.android.art/bin/imgdiagd
+1824 32 -1 /apex/com.android.art/bin/imgdiag32
+1824 22 -1 /apex/com.android.art/bin/dex2oatd
+1824 40 -1 /apex/com.android.art/bin/profmand
+1824 33 -1 /apex/com.android.art/bin/imgdiag
+1824 21 -1 /apex/com.android.art/bin/dex2oat
+1824 38 -1 /apex/com.android.art/bin/oatdumpd
+1824 23 -1 /apex/com.android.art/bin/dexanalyze
+1824 26 -1 /apex/com.android.art/bin/dexlayout
+1824 16 -1 /apex/com.android.art/bin/art_preinstall_hook_system_server
+1824 20 -1 /apex/com.android.art/bin/dalvikvm64
+1824 35 -1 /apex/com.android.art/bin/imgdiagd32
+1824 17 -1 /apex/com.android.art/bin/art_prepostinstall_utils
+1824 39 -1 /apex/com.android.art/bin/profman
+1824 25 -1 /apex/com.android.art/bin/dexdump
+1824 14 -1 /apex/com.android.art/bin/art_preinstall_hook
+1824 37 -1 /apex/com.android.art/bin/oatdump
+1824 104 -1 /apex/com.android.art/lib64
+1824 144 -1 /apex/com.android.art/lib64/libopenjdkjvm.so
+1824 114 -1 /apex/com.android.art/lib64/libartbased.so
+1824 141 -1 /apex/com.android.art/lib64/libnpt.so
+1824 157 -1 /apex/com.android.art/lib64/libvixld.so
+1824 140 -1 /apex/com.android.art/lib64/libnativeloader.so
+1824 115 -1 /apex/com.android.art/lib64/libartd-compiler.so
+1824 112 -1 /apex/com.android.art/lib64/libart.so
+1824 129 -1 /apex/com.android.art/lib64/libdt_fd_forward.so
+1824 145 -1 /apex/com.android.art/lib64/libopenjdkjvmd.so
+1824 146 -1 /apex/com.android.art/lib64/libopenjdkjvmti.so
+1824 128 -1 /apex/com.android.art/lib64/libdexfiled_external.so
+1824 130 -1 /apex/com.android.art/lib64/libdt_socket.so
+1824 113 -1 /apex/com.android.art/lib64/libartbase.so
+1824 132 -1 /apex/com.android.art/lib64/libicui18n.so
+1824 125 -1 /apex/com.android.art/lib64/libdexfile_external.so
+1824 137 -1 /apex/com.android.art/lib64/libmeminfo.so
+1824 143 -1 /apex/com.android.art/lib64/libopenjdkd.so
+1824 127 -1 /apex/com.android.art/lib64/libdexfiled.so
+1824 135 -1 /apex/com.android.art/lib64/libjdwp.so
+1824 105 -1 /apex/com.android.art/lib64/libadbconnection.so
+1824 150 -1 /apex/com.android.art/lib64/libperfetto_hprofd.so
+1824 149 -1 /apex/com.android.art/lib64/libperfetto_hprof.so
+1824 156 -1 /apex/com.android.art/lib64/libvixl.so
+1824 154 -1 /apex/com.android.art/lib64/libsigchain.so
+1824 131 -1 /apex/com.android.art/lib64/libexpat.so
+1824 152 -1 /apex/com.android.art/lib64/libprofile.so
+1824 124 -1 /apex/com.android.art/lib64/libdexfile.so
+1824 148 -1 /apex/com.android.art/lib64/libpac.so
+1824 155 -1 /apex/com.android.art/lib64/libunwindstack.so
+1824 147 -1 /apex/com.android.art/lib64/libopenjdkjvmtid.so
+1824 153 -1 /apex/com.android.art/lib64/libprofiled.so
+1824 123 -1 /apex/com.android.art/lib64/libcrypto.so
+1824 133 -1 /apex/com.android.art/lib64/libicuuc.so
+1824 108 -1 /apex/com.android.art/lib64/libandroidio.so
+1824 116 -1 /apex/com.android.art/lib64/libartd-dexlayout.so
+1824 118 -1 /apex/com.android.art/lib64/libartd.so
+1824 158 -1 /apex/com.android.art/lib64/libz.so
+1824 111 -1 /apex/com.android.art/lib64/libart-disassembler.so
+1824 134 -1 /apex/com.android.art/lib64/libjavacore.so
+1824 126 -1 /apex/com.android.art/lib64/libdexfile_support.so
+1824 109 -1 /apex/com.android.art/lib64/libart-compiler.so
+1824 121 -1 /apex/com.android.art/lib64/libbase.so
+1824 119 -1 /apex/com.android.art/lib64/libartpalette.so
+1824 142 -1 /apex/com.android.art/lib64/libopenjdk.so
+1824 122 -1 /apex/com.android.art/lib64/libc++.so
+1824 106 -1 /apex/com.android.art/lib64/libadbconnectiond.so
+1824 120 -1 /apex/com.android.art/lib64/libbacktrace.so
+1824 138 -1 /apex/com.android.art/lib64/libnativebridge.so
+1824 159 -1 /apex/com.android.art/lib64/libziparchive.so
+1824 110 -1 /apex/com.android.art/lib64/libart-dexlayout.so
+1824 136 -1 /apex/com.android.art/lib64/liblzma.so
+1824 139 -1 /apex/com.android.art/lib64/libnativehelper.so
+1824 117 -1 /apex/com.android.art/lib64/libartd-disassembler.so
+1824 107 -1 /apex/com.android.art/lib64/libandroidicu.so
+1824 151 -1 /apex/com.android.art/lib64/libprocinfo.so
+1824 41 -1 /apex/com.android.art/etc
+1824 42 -1 /apex/com.android.art/etc/ld.config.txt
+1824 50 -1 /apex/com.android.art/lib
+1824 89 -1 /apex/com.android.art/lib/libopenjdkjvm.so
+1824 60 -1 /apex/com.android.art/lib/libartbased.so
+1824 86 -1 /apex/com.android.art/lib/libnpt.so
+1824 101 -1 /apex/com.android.art/lib/libvixld.so
+1824 85 -1 /apex/com.android.art/lib/libnativeloader.so
+1824 61 -1 /apex/com.android.art/lib/libartd-compiler.so
+1824 58 -1 /apex/com.android.art/lib/libart.so
+1824 75 -1 /apex/com.android.art/lib/libdt_fd_forward.so
+1824 90 -1 /apex/com.android.art/lib/libopenjdkjvmd.so
+1824 91 -1 /apex/com.android.art/lib/libopenjdkjvmti.so
+1824 74 -1 /apex/com.android.art/lib/libdexfiled_external.so
+1824 76 -1 /apex/com.android.art/lib/libdt_socket.so
+1824 59 -1 /apex/com.android.art/lib/libartbase.so
+1824 78 -1 /apex/com.android.art/lib/libicui18n.so
+1824 71 -1 /apex/com.android.art/lib/libdexfile_external.so
+1824 88 -1 /apex/com.android.art/lib/libopenjdkd.so
+1824 73 -1 /apex/com.android.art/lib/libdexfiled.so
+1824 81 -1 /apex/com.android.art/lib/libjdwp.so
+1824 51 -1 /apex/com.android.art/lib/libadbconnection.so
+1824 95 -1 /apex/com.android.art/lib/libperfetto_hprofd.so
+1824 94 -1 /apex/com.android.art/lib/libperfetto_hprof.so
+1824 100 -1 /apex/com.android.art/lib/libvixl.so
+1824 98 -1 /apex/com.android.art/lib/libsigchain.so
+1824 77 -1 /apex/com.android.art/lib/libexpat.so
+1824 96 -1 /apex/com.android.art/lib/libprofile.so
+1824 70 -1 /apex/com.android.art/lib/libdexfile.so
+1824 93 -1 /apex/com.android.art/lib/libpac.so
+1824 99 -1 /apex/com.android.art/lib/libunwindstack.so
+1824 92 -1 /apex/com.android.art/lib/libopenjdkjvmtid.so
+1824 97 -1 /apex/com.android.art/lib/libprofiled.so
+1824 69 -1 /apex/com.android.art/lib/libcrypto.so
+1824 79 -1 /apex/com.android.art/lib/libicuuc.so
+1824 54 -1 /apex/com.android.art/lib/libandroidio.so
+1824 62 -1 /apex/com.android.art/lib/libartd-dexlayout.so
+1824 64 -1 /apex/com.android.art/lib/libartd.so
+1824 102 -1 /apex/com.android.art/lib/libz.so
+1824 57 -1 /apex/com.android.art/lib/libart-disassembler.so
+1824 80 -1 /apex/com.android.art/lib/libjavacore.so
+1824 72 -1 /apex/com.android.art/lib/libdexfile_support.so
+1824 55 -1 /apex/com.android.art/lib/libart-compiler.so
+1824 67 -1 /apex/com.android.art/lib/libbase.so
+1824 65 -1 /apex/com.android.art/lib/libartpalette.so
+1824 87 -1 /apex/com.android.art/lib/libopenjdk.so
+1824 68 -1 /apex/com.android.art/lib/libc++.so
+1824 52 -1 /apex/com.android.art/lib/libadbconnectiond.so
+1824 66 -1 /apex/com.android.art/lib/libbacktrace.so
+1824 83 -1 /apex/com.android.art/lib/libnativebridge.so
+1824 103 -1 /apex/com.android.art/lib/libziparchive.so
+1824 56 -1 /apex/com.android.art/lib/libart-dexlayout.so
+1824 82 -1 /apex/com.android.art/lib/liblzma.so
+1824 84 -1 /apex/com.android.art/lib/libnativehelper.so
+1824 63 -1 /apex/com.android.art/lib/libartd-disassembler.so
+1824 53 -1 /apex/com.android.art/lib/libandroidicu.so
+1824 160 -1 /apex/com.android.art/apex_manifest.json
+1824 43 -1 /apex/com.android.art/javalib
+1824 48 -1 /apex/com.android.art/javalib/core-oj.jar
+1824 46 -1 /apex/com.android.art/javalib/core-icu4j.jar
+1824 49 -1 /apex/com.android.art/javalib/okhttp.jar
+1824 45 -1 /apex/com.android.art/javalib/bouncycastle.jar
+1824 44 -1 /apex/com.android.art/javalib/apache-xml.jar
+1824 47 -1 /apex/com.android.art/javalib/core-libart.jar
+1824 2 -1 /apex/com.android.art@1
+1824 11 -1 /apex/com.android.art@1/lost+found
+1824 12 -1 /apex/com.android.art@1/bin
+1824 36 -1 /apex/com.android.art@1/bin/imgdiagd64
+1824 19 -1 /apex/com.android.art@1/bin/dalvikvm32
+1824 28 -1 /apex/com.android.art@1/bin/dexlist
+1824 27 -1 /apex/com.android.art@1/bin/dexlayoutd
+1824 30 -1 /apex/com.android.art@1/bin/dexoptanalyzerd
+1824 33 -1 /apex/com.android.art@1/bin/imgdiag64
+1824 29 -1 /apex/com.android.art@1/bin/dexoptanalyzer
+1824 13 -1 /apex/com.android.art@1/bin/art_postinstall_hook
+1824 20 -1 /apex/com.android.art@1/bin/dalvikvm
+1824 15 -1 /apex/com.android.art@1/bin/art_preinstall_hook_boot
+1824 24 -1 /apex/com.android.art@1/bin/dexdiag
+1824 36 -1 /apex/com.android.art@1/bin/imgdiagd
+1824 32 -1 /apex/com.android.art@1/bin/imgdiag32
+1824 22 -1 /apex/com.android.art@1/bin/dex2oatd
+1824 40 -1 /apex/com.android.art@1/bin/profmand
+1824 33 -1 /apex/com.android.art@1/bin/imgdiag
+1824 21 -1 /apex/com.android.art@1/bin/dex2oat
+1824 38 -1 /apex/com.android.art@1/bin/oatdumpd
+1824 23 -1 /apex/com.android.art@1/bin/dexanalyze
+1824 26 -1 /apex/com.android.art@1/bin/dexlayout
+1824 16 -1 /apex/com.android.art@1/bin/art_preinstall_hook_system_server
+1824 20 -1 /apex/com.android.art@1/bin/dalvikvm64
+1824 35 -1 /apex/com.android.art@1/bin/imgdiagd32
+1824 17 -1 /apex/com.android.art@1/bin/art_prepostinstall_utils
+1824 39 -1 /apex/com.android.art@1/bin/profman
+1824 25 -1 /apex/com.android.art@1/bin/dexdump
+1824 14 -1 /apex/com.android.art@1/bin/art_preinstall_hook
+1824 37 -1 /apex/com.android.art@1/bin/oatdump
+1824 104 -1 /apex/com.android.art@1/lib64
+1824 144 -1 /apex/com.android.art@1/lib64/libopenjdkjvm.so
+1824 114 -1 /apex/com.android.art@1/lib64/libartbased.so
+1824 141 -1 /apex/com.android.art@1/lib64/libnpt.so
+1824 157 -1 /apex/com.android.art@1/lib64/libvixld.so
+1824 140 -1 /apex/com.android.art@1/lib64/libnativeloader.so
+1824 115 -1 /apex/com.android.art@1/lib64/libartd-compiler.so
+1824 112 -1 /apex/com.android.art@1/lib64/libart.so
+1824 129 -1 /apex/com.android.art@1/lib64/libdt_fd_forward.so
+1824 145 -1 /apex/com.android.art@1/lib64/libopenjdkjvmd.so
+1824 146 -1 /apex/com.android.art@1/lib64/libopenjdkjvmti.so
+1824 128 -1 /apex/com.android.art@1/lib64/libdexfiled_external.so
+1824 130 -1 /apex/com.android.art@1/lib64/libdt_socket.so
+1824 113 -1 /apex/com.android.art@1/lib64/libartbase.so
+1824 132 -1 /apex/com.android.art@1/lib64/libicui18n.so
+1824 125 -1 /apex/com.android.art@1/lib64/libdexfile_external.so
+1824 137 -1 /apex/com.android.art@1/lib64/libmeminfo.so
+1824 143 -1 /apex/com.android.art@1/lib64/libopenjdkd.so
+1824 127 -1 /apex/com.android.art@1/lib64/libdexfiled.so
+1824 135 -1 /apex/com.android.art@1/lib64/libjdwp.so
+1824 105 -1 /apex/com.android.art@1/lib64/libadbconnection.so
+1824 150 -1 /apex/com.android.art@1/lib64/libperfetto_hprofd.so
+1824 149 -1 /apex/com.android.art@1/lib64/libperfetto_hprof.so
+1824 156 -1 /apex/com.android.art@1/lib64/libvixl.so
+1824 154 -1 /apex/com.android.art@1/lib64/libsigchain.so
+1824 131 -1 /apex/com.android.art@1/lib64/libexpat.so
+1824 152 -1 /apex/com.android.art@1/lib64/libprofile.so
+1824 124 -1 /apex/com.android.art@1/lib64/libdexfile.so
+1824 148 -1 /apex/com.android.art@1/lib64/libpac.so
+1824 155 -1 /apex/com.android.art@1/lib64/libunwindstack.so
+1824 147 -1 /apex/com.android.art@1/lib64/libopenjdkjvmtid.so
+1824 153 -1 /apex/com.android.art@1/lib64/libprofiled.so
+1824 123 -1 /apex/com.android.art@1/lib64/libcrypto.so
+1824 133 -1 /apex/com.android.art@1/lib64/libicuuc.so
+1824 108 -1 /apex/com.android.art@1/lib64/libandroidio.so
+1824 116 -1 /apex/com.android.art@1/lib64/libartd-dexlayout.so
+1824 118 -1 /apex/com.android.art@1/lib64/libartd.so
+1824 158 -1 /apex/com.android.art@1/lib64/libz.so
+1824 111 -1 /apex/com.android.art@1/lib64/libart-disassembler.so
+1824 134 -1 /apex/com.android.art@1/lib64/libjavacore.so
+1824 126 -1 /apex/com.android.art@1/lib64/libdexfile_support.so
+1824 109 -1 /apex/com.android.art@1/lib64/libart-compiler.so
+1824 121 -1 /apex/com.android.art@1/lib64/libbase.so
+1824 119 -1 /apex/com.android.art@1/lib64/libartpalette.so
+1824 142 -1 /apex/com.android.art@1/lib64/libopenjdk.so
+1824 122 -1 /apex/com.android.art@1/lib64/libc++.so
+1824 106 -1 /apex/com.android.art@1/lib64/libadbconnectiond.so
+1824 120 -1 /apex/com.android.art@1/lib64/libbacktrace.so
+1824 138 -1 /apex/com.android.art@1/lib64/libnativebridge.so
+1824 159 -1 /apex/com.android.art@1/lib64/libziparchive.so
+1824 110 -1 /apex/com.android.art@1/lib64/libart-dexlayout.so
+1824 136 -1 /apex/com.android.art@1/lib64/liblzma.so
+1824 139 -1 /apex/com.android.art@1/lib64/libnativehelper.so
+1824 117 -1 /apex/com.android.art@1/lib64/libartd-disassembler.so
+1824 107 -1 /apex/com.android.art@1/lib64/libandroidicu.so
+1824 151 -1 /apex/com.android.art@1/lib64/libprocinfo.so
+1824 41 -1 /apex/com.android.art@1/etc
+1824 42 -1 /apex/com.android.art@1/etc/ld.config.txt
+1824 50 -1 /apex/com.android.art@1/lib
+1824 89 -1 /apex/com.android.art@1/lib/libopenjdkjvm.so
+1824 60 -1 /apex/com.android.art@1/lib/libartbased.so
+1824 86 -1 /apex/com.android.art@1/lib/libnpt.so
+1824 101 -1 /apex/com.android.art@1/lib/libvixld.so
+1824 85 -1 /apex/com.android.art@1/lib/libnativeloader.so
+1824 61 -1 /apex/com.android.art@1/lib/libartd-compiler.so
+1824 58 -1 /apex/com.android.art@1/lib/libart.so
+1824 75 -1 /apex/com.android.art@1/lib/libdt_fd_forward.so
+1824 90 -1 /apex/com.android.art@1/lib/libopenjdkjvmd.so
+1824 91 -1 /apex/com.android.art@1/lib/libopenjdkjvmti.so
+1824 74 -1 /apex/com.android.art@1/lib/libdexfiled_external.so
+1824 76 -1 /apex/com.android.art@1/lib/libdt_socket.so
+1824 59 -1 /apex/com.android.art@1/lib/libartbase.so
+1824 78 -1 /apex/com.android.art@1/lib/libicui18n.so
+1824 71 -1 /apex/com.android.art@1/lib/libdexfile_external.so
+1824 88 -1 /apex/com.android.art@1/lib/libopenjdkd.so
+1824 73 -1 /apex/com.android.art@1/lib/libdexfiled.so
+1824 81 -1 /apex/com.android.art@1/lib/libjdwp.so
+1824 51 -1 /apex/com.android.art@1/lib/libadbconnection.so
+1824 95 -1 /apex/com.android.art@1/lib/libperfetto_hprofd.so
+1824 94 -1 /apex/com.android.art@1/lib/libperfetto_hprof.so
+1824 100 -1 /apex/com.android.art@1/lib/libvixl.so
+1824 98 -1 /apex/com.android.art@1/lib/libsigchain.so
+1824 77 -1 /apex/com.android.art@1/lib/libexpat.so
+1824 96 -1 /apex/com.android.art@1/lib/libprofile.so
+1824 70 -1 /apex/com.android.art@1/lib/libdexfile.so
+1824 93 -1 /apex/com.android.art@1/lib/libpac.so
+1824 99 -1 /apex/com.android.art@1/lib/libunwindstack.so
+1824 92 -1 /apex/com.android.art@1/lib/libopenjdkjvmtid.so
+1824 97 -1 /apex/com.android.art@1/lib/libprofiled.so
+1824 69 -1 /apex/com.android.art@1/lib/libcrypto.so
+1824 79 -1 /apex/com.android.art@1/lib/libicuuc.so
+1824 54 -1 /apex/com.android.art@1/lib/libandroidio.so
+1824 62 -1 /apex/com.android.art@1/lib/libartd-dexlayout.so
+1824 64 -1 /apex/com.android.art@1/lib/libartd.so
+1824 102 -1 /apex/com.android.art@1/lib/libz.so
+1824 57 -1 /apex/com.android.art@1/lib/libart-disassembler.so
+1824 80 -1 /apex/com.android.art@1/lib/libjavacore.so
+1824 72 -1 /apex/com.android.art@1/lib/libdexfile_support.so
+1824 55 -1 /apex/com.android.art@1/lib/libart-compiler.so
+1824 67 -1 /apex/com.android.art@1/lib/libbase.so
+1824 65 -1 /apex/com.android.art@1/lib/libartpalette.so
+1824 87 -1 /apex/com.android.art@1/lib/libopenjdk.so
+1824 68 -1 /apex/com.android.art@1/lib/libc++.so
+1824 52 -1 /apex/com.android.art@1/lib/libadbconnectiond.so
+1824 66 -1 /apex/com.android.art@1/lib/libbacktrace.so
+1824 83 -1 /apex/com.android.art@1/lib/libnativebridge.so
+1824 103 -1 /apex/com.android.art@1/lib/libziparchive.so
+1824 56 -1 /apex/com.android.art@1/lib/libart-dexlayout.so
+1824 82 -1 /apex/com.android.art@1/lib/liblzma.so
+1824 84 -1 /apex/com.android.art@1/lib/libnativehelper.so
+1824 63 -1 /apex/com.android.art@1/lib/libartd-disassembler.so
+1824 53 -1 /apex/com.android.art@1/lib/libandroidicu.so
+1824 160 -1 /apex/com.android.art@1/apex_manifest.json
+1824 43 -1 /apex/com.android.art@1/javalib
+1824 48 -1 /apex/com.android.art@1/javalib/core-oj.jar
+1824 46 -1 /apex/com.android.art@1/javalib/core-icu4j.jar
+1824 49 -1 /apex/com.android.art@1/javalib/okhttp.jar
+1824 45 -1 /apex/com.android.art@1/javalib/bouncycastle.jar
+1824 44 -1 /apex/com.android.art@1/javalib/apache-xml.jar
+1824 47 -1 /apex/com.android.art@1/javalib/core-libart.jar
+25 19553 -1 /vendor
+64769 2602 -1 /vendor/ueventd.rc
+2061 1 -1 /vendor/firmware_mnt
+2061 81 -1 /vendor/firmware_mnt/image
+2061 117 -1 /vendor/firmware_mnt/image/version.cfg
+2061 118 -1 /vendor/firmware_mnt/image/mba.mbn
+2061 119 -1 /vendor/firmware_mnt/image/modem.b00
+2061 120 -1 /vendor/firmware_mnt/image/modem.b01
+2061 121 -1 /vendor/firmware_mnt/image/modem.b02
+2061 122 -1 /vendor/firmware_mnt/image/modem.b03
+2061 123 -1 /vendor/firmware_mnt/image/modem.b04
+2061 124 -1 /vendor/firmware_mnt/image/modem.b05
+2061 125 -1 /vendor/firmware_mnt/image/modem.b06
+2061 126 -1 /vendor/firmware_mnt/image/modem.b07
+2061 127 -1 /vendor/firmware_mnt/image/modem.b08
+2061 128 -1 /vendor/firmware_mnt/image/modem.b09
+2061 129 -1 /vendor/firmware_mnt/image/modem.b10
+2061 130 -1 /vendor/firmware_mnt/image/modem.b11
+2061 131 -1 /vendor/firmware_mnt/image/modem.b12
+2061 132 -1 /vendor/firmware_mnt/image/modem.b13
+2061 133 -1 /vendor/firmware_mnt/image/modem.b14
+2061 134 -1 /vendor/firmware_mnt/image/modem.b15
+2061 135 -1 /vendor/firmware_mnt/image/modem.b16
+2061 136 -1 /vendor/firmware_mnt/image/modem.b17
+2061 137 -1 /vendor/firmware_mnt/image/modem.b18
+2061 138 -1 /vendor/firmware_mnt/image/modem.b19
+2061 139 -1 /vendor/firmware_mnt/image/modem.b20
+2061 140 -1 /vendor/firmware_mnt/image/modem.b21
+2061 141 -1 /vendor/firmware_mnt/image/modem.b22
+2061 142 -1 /vendor/firmware_mnt/image/modem.b23
+2061 143 -1 /vendor/firmware_mnt/image/modem.b24
+2061 144 -1 /vendor/firmware_mnt/image/modem.b25
+2061 145 -1 /vendor/firmware_mnt/image/modem.b26
+2061 146 -1 /vendor/firmware_mnt/image/modem.b27
+2061 147 -1 /vendor/firmware_mnt/image/modem.b28
+2061 148 -1 /vendor/firmware_mnt/image/modem.b29
+2061 149 -1 /vendor/firmware_mnt/image/modem.mdt
+2061 150 -1 /vendor/firmware_mnt/image/qdsp6m.qdb
+2061 151 -1 /vendor/firmware_mnt/image/modemr.jsn
+2061 152 -1 /vendor/firmware_mnt/verinfo
+2061 154 -1 /vendor/firmware_mnt/verinfo/ver_info.txt
+25 1547401 -1 /vendor/app
+25 1559547 -1 /vendor/app/crosshatch_game_driver
+64769 20 -1 /vendor/app/crosshatch_game_driver/crosshatch_game_driver.apk
+25 1547402 -1 /vendor/app/TimeService
+25 1559549 -1 /vendor/app/TimeService/oat
+25 1559550 -1 /vendor/app/TimeService/oat/arm64
+64769 18 -1 /vendor/app/TimeService/oat/arm64/TimeService.vdex
+64769 17 -1 /vendor/app/TimeService/oat/arm64/TimeService.odex
+64769 14 -1 /vendor/app/TimeService/TimeService.apk
+25 1559553 -1 /vendor/app/embms
+25 1559554 -1 /vendor/app/embms/oem
+25 1559555 -1 /vendor/app/embms/oem/vzw
+64769 26 -1 /vendor/app/embms/oem/vzw/verizon_config_params.txt
+64769 25 -1 /vendor/app/embms/oem/vzw/provisioning_params.xml
+64769 24 -1 /vendor/app/embms/oem/vzw/config_params.xml
+25 18598 -1 /vendor/lib
+64769 995 -1 /vendor/lib/android.hardware.audio.common-util.so
+64769 996 -1 /vendor/lib/android.hardware.audio.common@5.0-util.so
+64769 997 -1 /vendor/lib/android.hardware.automotive.vehicle@2.0-manager-lib.so
+64769 998 -1 /vendor/lib/android.hardware.camera.provider@2.4-external.so
+64769 999 -1 /vendor/lib/android.hardware.camera.provider@2.4-legacy.so
+64769 1000 -1 /vendor/lib/android.hardware.sensors@2.0-impl.so
+64769 1001 -1 /vendor/lib/btaudio_offload_if.so
+64769 1002 -1 /vendor/lib/camera.device@1.0-impl.so
+64769 1003 -1 /vendor/lib/camera.device@3.2-impl.so
+64769 1004 -1 /vendor/lib/camera.device@3.3-impl.so
+64769 1005 -1 /vendor/lib/camera.device@3.4-external-impl.so
+64769 1006 -1 /vendor/lib/camera.device@3.4-impl.so
+64769 1007 -1 /vendor/lib/camera.device@3.5-external-impl.so
+64769 1008 -1 /vendor/lib/camera.device@3.5-impl.so
+64769 1009 -1 /vendor/lib/com.qualcomm.qti.imscmservice@1.0.so
+64769 1010 -1 /vendor/lib/com.qualcomm.qti.uceservice@2.0.so
+64769 1011 -1 /vendor/lib/com.quicinc.cne.api@1.0.so
+64769 1012 -1 /vendor/lib/com.quicinc.cne.api@1.1.so
+64769 1013 -1 /vendor/lib/com.quicinc.cne.constants@1.0.so
+64769 1014 -1 /vendor/lib/com.quicinc.cne.constants@2.0.so
+64769 1015 -1 /vendor/lib/com.quicinc.cne.constants@2.1.so
+64769 1016 -1 /vendor/lib/com.quicinc.cne.server@1.0.so
+64769 1017 -1 /vendor/lib/com.quicinc.cne.server@2.0.so
+64769 1018 -1 /vendor/lib/com.quicinc.cne.server@2.1.so
+25 180935 -1 /vendor/lib/egl
+64769 1026 -1 /vendor/lib/egl/libq3dtools_esx.so
+64769 1023 -1 /vendor/lib/egl/libGLESv2_adreno.so
+64769 1024 -1 /vendor/lib/egl/libQTapGLES.so
+64769 1022 -1 /vendor/lib/egl/libGLESv1_CM_adreno.so
+64769 1025 -1 /vendor/lib/egl/libq3dtools_adreno.so
+64769 1020 -1 /vendor/lib/egl/eglSubDriverAndroid.so
+64769 1021 -1 /vendor/lib/egl/libEGL_adreno.so
+64769 1027 -1 /vendor/lib/hardware.google.light@1.0.so
+25 18601 -1 /vendor/lib/hw
+64769 1049 -1 /vendor/lib/hw/audio.usb.default.so
+64769 1043 -1 /vendor/lib/hw/android.hardware.soundtrigger@2.2-impl.so
+64769 1037 -1 /vendor/lib/hw/android.hardware.drm@1.0-impl.so
+64769 1041 -1 /vendor/lib/hw/android.hardware.memtrack@1.0-impl.so
+64769 1042 -1 /vendor/lib/hw/android.hardware.renderscript@1.0-impl.so
+64769 1044 -1 /vendor/lib/hw/android.hardware.vibrator@1.2-impl.crosshatch.so
+64769 1046 -1 /vendor/lib/hw/audio.primary.default.so
+64769 1053 -1 /vendor/lib/hw/hwcomposer.sdm845.so
+64769 1038 -1 /vendor/lib/hw/android.hardware.gatekeeper@1.0-impl-qti.so
+64769 1056 -1 /vendor/lib/hw/memtrack.sdm845.so
+64769 1040 -1 /vendor/lib/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so
+64769 1061 -1 /vendor/lib/hw/vibrator.default.so
+64769 1057 -1 /vendor/lib/hw/power.default.so
+64769 1034 -1 /vendor/lib/hw/android.hardware.broadcastradio@1.0-impl.so
+64769 1059 -1 /vendor/lib/hw/sound_trigger.primary.sdm845.so
+64769 1045 -1 /vendor/lib/hw/audio.bluetooth.default.so
+64769 1060 -1 /vendor/lib/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so
+64769 1058 -1 /vendor/lib/hw/sensors.crosshatch.so
+64769 1039 -1 /vendor/lib/hw/android.hardware.gnss@1.1-impl-qti.so
+64769 1051 -1 /vendor/lib/hw/gralloc.default.so
+64769 1052 -1 /vendor/lib/hw/gralloc.sdm845.so
+64769 1054 -1 /vendor/lib/hw/lights.sdm845.so
+64769 1031 -1 /vendor/lib/hw/android.hardware.bluetooth.audio@2.0-impl.so
+64769 1047 -1 /vendor/lib/hw/audio.primary.sdm845.so
+64769 1048 -1 /vendor/lib/hw/audio.r_submix.default.so
+64769 1030 -1 /vendor/lib/hw/android.hardware.audio@5.0-impl.so
+64769 1036 -1 /vendor/lib/hw/android.hardware.contexthub@1.0-impl.generic.so
+64769 1055 -1 /vendor/lib/hw/local_time.default.so
+64769 1050 -1 /vendor/lib/hw/bootctrl.sdm845.so
+64769 1062 -1 /vendor/lib/hw/vulkan.sdm845.so
+64769 1029 -1 /vendor/lib/hw/android.hardware.audio.effect@5.0-impl.so
+64769 1032 -1 /vendor/lib/hw/android.hardware.bluetooth@1.0-impl-qti.so
+64769 1035 -1 /vendor/lib/hw/android.hardware.camera.provider@2.4-impl.so
+64769 1033 -1 /vendor/lib/hw/android.hardware.boot@1.0-impl.so
+64769 1063 -1 /vendor/lib/lib-dplmedia.so
+64769 1064 -1 /vendor/lib/lib-imsdpl.so
+64769 1065 -1 /vendor/lib/lib-imsqimf.so
+64769 1066 -1 /vendor/lib/lib-imsrcs-v2.so
+64769 1067 -1 /vendor/lib/lib-imsxml.so
+64769 1068 -1 /vendor/lib/lib-rtpcommon.so
+64769 1069 -1 /vendor/lib/lib-rtpcore.so
+64769 1070 -1 /vendor/lib/lib-rtpdaemoninterface.so
+64769 1071 -1 /vendor/lib/lib-rtpsl.so
+64769 1072 -1 /vendor/lib/lib-uceservice.so
+64769 1073 -1 /vendor/lib/libAlacSwDec.so
+64769 1074 -1 /vendor/lib/libApeSwDec.so
+64769 1075 -1 /vendor/lib/libC2D2.so
+64769 1076 -1 /vendor/lib/libCB.so
+64769 1077 -1 /vendor/lib/libCommandSvc.so
+64769 1078 -1 /vendor/lib/libFlacSwDec.so
+64769 1079 -1 /vendor/lib/libGPQTEEC_vendor.so
+64769 1080 -1 /vendor/lib/libGPTEE_vendor.so
+64769 1081 -1 /vendor/lib/libGPreqcancel.so
+64769 1082 -1 /vendor/lib/libGPreqcancel_svc.so
+64769 1083 -1 /vendor/lib/libMpeg4SwEncoder.so
+64769 1084 -1 /vendor/lib/libOmxAlacDecSw.so
+64769 1085 -1 /vendor/lib/libOmxAmrwbplusDec.so
+64769 1086 -1 /vendor/lib/libOmxApeDecSw.so
+64769 1087 -1 /vendor/lib/libOmxCore.so
+64769 1088 -1 /vendor/lib/libOmxDsdDec.so
+64769 1089 -1 /vendor/lib/libOmxEvrcDec.so
+64769 1090 -1 /vendor/lib/libOmxQcelp13Dec.so
+64769 1091 -1 /vendor/lib/libOmxVdec.so
+64769 1092 -1 /vendor/lib/libOmxVenc.so
+64769 1093 -1 /vendor/lib/libOpenCL-pixel.so
+64769 1094 -1 /vendor/lib/libOpenCL.so
+64769 1095 -1 /vendor/lib/libQSEEComAPI.so
+64769 1096 -1 /vendor/lib/libQTEEConnector_vendor.so
+64769 1097 -1 /vendor/lib/libRSDriver_adreno.so
+64769 1098 -1 /vendor/lib/libSecureUILib.so
+64769 1099 -1 /vendor/lib/libStDrvInt.so
+64769 1100 -1 /vendor/lib/libSubSystemShutdown.so
+64769 1101 -1 /vendor/lib/lib_aion_buffer.so
+64769 1102 -1 /vendor/lib/lib_camera_sensors.so
+64769 1103 -1 /vendor/lib/libacdb-fts.so
+64769 1104 -1 /vendor/lib/libacdbloader.so
+64769 1105 -1 /vendor/lib/libacdbrtac.so
+64769 1106 -1 /vendor/lib/libadiertac.so
+64769 1107 -1 /vendor/lib/libadm.so
+64769 1108 -1 /vendor/lib/libadpcmdec.so
+64769 1109 -1 /vendor/lib/libadreno_utils.so
+64769 1110 -1 /vendor/lib/libadsp_default_listener.so
+64769 1111 -1 /vendor/lib/libadsprpc.so
+64769 1112 -1 /vendor/lib/libalsautils.so
+64769 1113 -1 /vendor/lib/libash.so
+64769 1114 -1 /vendor/lib/libaudcal.so
+64769 1115 -1 /vendor/lib/libaudioalsa.so
+64769 1116 -1 /vendor/lib/libaudiofoundation.so
+64769 1117 -1 /vendor/lib/libavservices_minijail_vendor.so
+64769 1118 -1 /vendor/lib/libbase64.so
+64769 1119 -1 /vendor/lib/libbccQTI.so
+64769 1120 -1 /vendor/lib/libbluetooth_audio_session.so
+64769 1121 -1 /vendor/lib/libbluetooth_audio_session_qti.so
+64769 1122 -1 /vendor/lib/libbthost_if.so
+64769 1123 -1 /vendor/lib/libbthost_if_qti.so
+64769 1124 -1 /vendor/lib/libbtnv.so
+64769 1125 -1 /vendor/lib/libc2d30_bltlib.so
+64769 1126 -1 /vendor/lib/libc2dcolorconvert.so
+64769 1127 -1 /vendor/lib/libcameradepthcalibrator.so
+64769 1128 -1 /vendor/lib/libcdsp_default_listener.so
+64769 1129 -1 /vendor/lib/libcdsprpc.so
+64769 1130 -1 /vendor/lib/libcld80211.so
+64769 1131 -1 /vendor/lib/libcne.so
+64769 1132 -1 /vendor/lib/libcneapiclient.so
+64769 1133 -1 /vendor/lib/libcneoplookup.so
+64769 1134 -1 /vendor/lib/libcneqmiutils.so
+64769 1135 -1 /vendor/lib/libcodec2_hidl@1.0.so
+64769 1136 -1 /vendor/lib/libcodec2_vndk.so
+64769 1137 -1 /vendor/lib/libconfigdb.so
+64769 1138 -1 /vendor/lib/libcpion.so
+64769 1139 -1 /vendor/lib/libcppf.so
+64769 1140 -1 /vendor/lib/libdataitems.so
+64769 1141 -1 /vendor/lib/libdiag.so
+64769 1142 -1 /vendor/lib/libdiagjni.so
+64769 1143 -1 /vendor/lib/libdisp-aba.so
+64769 1144 -1 /vendor/lib/libdisplayconfig.so
+64769 1145 -1 /vendor/lib/libdisplaydebug.so
+64769 1146 -1 /vendor/lib/libdisplayqos.so
+64769 1147 -1 /vendor/lib/libdrm.so
+64769 1148 -1 /vendor/lib/libdrmfs.so
+64769 1149 -1 /vendor/lib/libdrmtime.so
+64769 1150 -1 /vendor/lib/libdrmutils.so
+64769 1151 -1 /vendor/lib/libdsd2pcm.so
+64769 1152 -1 /vendor/lib/libdsi_netctrl.so
+64769 1153 -1 /vendor/lib/libdsutils.so
+64769 1154 -1 /vendor/lib/libeaselcomm.so
+64769 1155 -1 /vendor/lib/libeaselmanager_client.so
+64769 1156 -1 /vendor/lib/libeffects.so
+64769 1157 -1 /vendor/lib/libeffectsconfig.so
+64769 1158 -1 /vendor/lib/libelmyra-protos.so
+64769 1159 -1 /vendor/lib/libfastcrc.so
+64769 1160 -1 /vendor/lib/libfastcvdsp_stub.so
+64769 1161 -1 /vendor/lib/libfastcvopt.so
+64769 1162 -1 /vendor/lib/libflp.so
+64769 1163 -1 /vendor/lib/libgcs-calwrapper.so
+64769 1164 -1 /vendor/lib/libgcs-ipc.so
+64769 1165 -1 /vendor/lib/libgcs-osal.so
+64769 1166 -1 /vendor/lib/libgcs.so
+64769 1167 -1 /vendor/lib/libgeofence.so
+64769 1168 -1 /vendor/lib/libgnss.so
+64769 1169 -1 /vendor/lib/libgnsspps.so
+64769 1170 -1 /vendor/lib/libgoog_llv_gpu.so
+64769 1171 -1 /vendor/lib/libgoogle_camera_hal_tests.so
+64769 1172 -1 /vendor/lib/libgooglecamerahal.so
+64769 1173 -1 /vendor/lib/libgooglecamerahalutils.so
+64769 1174 -1 /vendor/lib/libgps.utils.so
+64769 1175 -1 /vendor/lib/libgpu_tonemapper.so
+64769 1176 -1 /vendor/lib/libgralloccore.so
+64769 1177 -1 /vendor/lib/libgrallocutils.so
+64769 1178 -1 /vendor/lib/libgsl.so
+64769 1179 -1 /vendor/lib/libhdcp1prov.so
+64769 1180 -1 /vendor/lib/libhdcp2p2prov.so
+64769 1181 -1 /vendor/lib/libhdcpsrm.so
+64769 1182 -1 /vendor/lib/libhdr_tm.so
+64769 1183 -1 /vendor/lib/libhidltransport.so
+64769 1184 -1 /vendor/lib/libhwbinder.so
+64769 1185 -1 /vendor/lib/libidl.so
+64769 1186 -1 /vendor/lib/libizat_core.so
+64769 1187 -1 /vendor/lib/libjson.so
+64769 1188 -1 /vendor/lib/libkeymasterdeviceutils.so
+64769 1189 -1 /vendor/lib/libkeymasterprovision.so
+64769 1190 -1 /vendor/lib/libkeymasterutils.so
+64769 1191 -1 /vendor/lib/liblbs_core.so
+64769 1192 -1 /vendor/lib/libllvm-glnext.so
+64769 1193 -1 /vendor/lib/libllvm-qcom.so
+64769 1194 -1 /vendor/lib/libloc_api_v02.so
+64769 1195 -1 /vendor/lib/libloc_core.so
+64769 1196 -1 /vendor/lib/libloc_ds_api.so
+64769 1197 -1 /vendor/lib/liblocation_api.so
+64769 1198 -1 /vendor/lib/liblowi_client.so
+64769 1199 -1 /vendor/lib/liblowi_wifihal.so
+64769 1200 -1 /vendor/lib/liblqe.so
+64769 1201 -1 /vendor/lib/libmaxxaudioqdsp.so
+64769 1202 -1 /vendor/lib/libmdmdetect.so
+64769 1203 -1 /vendor/lib/libmdsprpc.so
+64769 1204 -1 /vendor/lib/libmm-hdcpmgr.so
+64769 1205 -1 /vendor/lib/libmm-omxcore.so
+64769 1206 -1 /vendor/lib/libmulawdec.so
+64769 1207 -1 /vendor/lib/libnbaio_mono.so
+64769 1208 -1 /vendor/lib/libnetmgr.so
+64769 1209 -1 /vendor/lib/liboemcrypto.so
+64769 1210 -1 /vendor/lib/libopus.so
+64769 1211 -1 /vendor/lib/libpdmapper.so
+64769 1212 -1 /vendor/lib/libpdnotifier.so
+64769 1213 -1 /vendor/lib/libperipheral_client.so
+64769 1214 -1 /vendor/lib/libplatformconfig.so
+64769 1215 -1 /vendor/lib/libprotobuf-cpp-full.so
+64769 1216 -1 /vendor/lib/libqcbor.so
+64769 1217 -1 /vendor/lib/libqcci_legacy.so
+64769 1218 -1 /vendor/lib/libqcmaputils.so
+64769 1219 -1 /vendor/lib/libqcodec2.so
+64769 1220 -1 /vendor/lib/libqcrilFramework.so
+64769 1221 -1 /vendor/lib/libqdMetaData.so
+64769 1222 -1 /vendor/lib/libqdi.so
+64769 1223 -1 /vendor/lib/libqdp.so
+64769 1224 -1 /vendor/lib/libqdutils.so
+64769 1225 -1 /vendor/lib/libqisl.so
+64769 1226 -1 /vendor/lib/libqmi.so
+64769 1227 -1 /vendor/lib/libqmi_cci.so
+64769 1228 -1 /vendor/lib/libqmi_client_helper.so
+64769 1229 -1 /vendor/lib/libqmi_client_qmux.so
+64769 1230 -1 /vendor/lib/libqmi_common_so.so
+64769 1231 -1 /vendor/lib/libqmi_csi.so
+64769 1232 -1 /vendor/lib/libqmi_csvt_srvc.so
+64769 1233 -1 /vendor/lib/libqmi_encdec.so
+64769 1234 -1 /vendor/lib/libqmi_vs-google-1.so
+64769 1235 -1 /vendor/lib/libqmiservices.so
+64769 1236 -1 /vendor/lib/libqrtr.so
+64769 1237 -1 /vendor/lib/libqseed3.so
+64769 1238 -1 /vendor/lib/libqservice.so
+64769 1239 -1 /vendor/lib/libqsocket.so
+64769 1240 -1 /vendor/lib/libqti-utils.so
+64769 1241 -1 /vendor/lib/libqtikeymaster4.so
+64769 1242 -1 /vendor/lib/libquipc_os_api.so
+64769 1243 -1 /vendor/lib/libreference-ril.so
+64769 1244 -1 /vendor/lib/libril-qc-ltedirectdisc.so
+64769 1245 -1 /vendor/lib/libril-qc-radioconfig.so
+64769 1246 -1 /vendor/lib/libril-qcril-hook-oem.so
+64769 1247 -1 /vendor/lib/libril.so
+64769 1248 -1 /vendor/lib/libril_glog.so
+64769 1249 -1 /vendor/lib/librilqmiservices.so
+64769 1250 -1 /vendor/lib/librilutils.so
+64769 1251 -1 /vendor/lib/librpmb.so
+64769 1252 -1 /vendor/lib/librs_adreno.so
+64769 1253 -1 /vendor/lib/librs_adreno_sha1.so
+64769 1254 -1 /vendor/lib/libsdedrm.so
+64769 1255 -1 /vendor/lib/libsdm-color.so
+64769 1256 -1 /vendor/lib/libsdm-diag.so
+64769 1257 -1 /vendor/lib/libsdm-disp-vndapis.so
+64769 1258 -1 /vendor/lib/libsdmcore.so
+64769 1259 -1 /vendor/lib/libsdmextension.so
+64769 1260 -1 /vendor/lib/libsdmutils.so
+64769 1261 -1 /vendor/lib/libsdsprpc.so
+64769 1262 -1 /vendor/lib/libsecureui.so
+64769 1263 -1 /vendor/lib/libsecureui_svcsock.so
+64769 1264 -1 /vendor/lib/libsensorslog.so
+64769 1265 -1 /vendor/lib/libsettings.so
+64769 1266 -1 /vendor/lib/libsi.so
+64769 1267 -1 /vendor/lib/libsns_device_mode_stub.so
+64769 1268 -1 /vendor/lib/libsns_fastRPC_util.so
+64769 1269 -1 /vendor/lib/libsns_low_lat_stream_stub.so
+64769 1270 -1 /vendor/lib/libsnsapi.so
+64769 1271 -1 /vendor/lib/libsnsdiaglog.so
+64769 1272 -1 /vendor/lib/libspcom.so
+64769 1273 -1 /vendor/lib/libspiris.so
+64769 1274 -1 /vendor/lib/libspl.so
+64769 1275 -1 /vendor/lib/libssc.so
+64769 1276 -1 /vendor/lib/libssc_default_listener.so
+64769 1277 -1 /vendor/lib/libssc_proto.so
+64769 1278 -1 /vendor/lib/libssd.so
+64769 1279 -1 /vendor/lib/libstagefright_amrnb_common.so
+64769 1280 -1 /vendor/lib/libstagefright_bufferpool@2.0.1.so
+64769 1281 -1 /vendor/lib/libstagefright_enc_common.so
+64769 1282 -1 /vendor/lib/libstagefright_flacdec.so
+64769 1283 -1 /vendor/lib/libstagefright_soft_aacdec.so
+64769 1284 -1 /vendor/lib/libstagefright_soft_aacenc.so
+64769 1285 -1 /vendor/lib/libstagefright_soft_amrdec.so
+64769 1286 -1 /vendor/lib/libstagefright_soft_amrnbenc.so
+64769 1287 -1 /vendor/lib/libstagefright_soft_amrwbenc.so
+64769 1288 -1 /vendor/lib/libstagefright_soft_avcdec.so
+64769 1289 -1 /vendor/lib/libstagefright_soft_avcenc.so
+64769 1290 -1 /vendor/lib/libstagefright_soft_flacdec.so
+64769 1291 -1 /vendor/lib/libstagefright_soft_flacenc.so
+64769 1292 -1 /vendor/lib/libstagefright_soft_g711dec.so
+64769 1293 -1 /vendor/lib/libstagefright_soft_gsmdec.so
+64769 1294 -1 /vendor/lib/libstagefright_soft_hevcdec.so
+64769 1295 -1 /vendor/lib/libstagefright_soft_mp3dec.so
+64769 1296 -1 /vendor/lib/libstagefright_soft_mpeg2dec.so
+64769 1297 -1 /vendor/lib/libstagefright_soft_mpeg4dec.so
+64769 1298 -1 /vendor/lib/libstagefright_soft_mpeg4enc.so
+64769 1299 -1 /vendor/lib/libstagefright_soft_opusdec.so
+64769 1300 -1 /vendor/lib/libstagefright_soft_rawdec.so
+64769 1301 -1 /vendor/lib/libstagefright_soft_vorbisdec.so
+64769 1302 -1 /vendor/lib/libstagefright_soft_vpxdec.so
+64769 1303 -1 /vendor/lib/libstagefright_soft_vpxenc.so
+64769 1304 -1 /vendor/lib/libstagefright_softomx.so
+64769 1305 -1 /vendor/lib/libstagefright_softomx_plugin.so
+64769 1306 -1 /vendor/lib/libstagefrighthw.so
+64769 1307 -1 /vendor/lib/libstreamparser.so
+64769 1308 -1 /vendor/lib/libsubsystem_control.so
+64769 1309 -1 /vendor/lib/libswregistrationalgo.so
+64769 1310 -1 /vendor/lib/libswvdec.so
+64769 1311 -1 /vendor/lib/libsysmon_cdsp_skel.so
+64769 1312 -1 /vendor/lib/libsystem_health_mon.so
+64769 1313 -1 /vendor/lib/libthermalclient.so
+64769 1314 -1 /vendor/lib/libtime_genoff.so
+64769 1315 -1 /vendor/lib/libtinycompress.so
+64769 1316 -1 /vendor/lib/libtinyxml.so
+64769 1317 -1 /vendor/lib/libtinyxml2_1.so
+64769 1318 -1 /vendor/lib/libtzdrmgenprov.so
+64769 1319 -1 /vendor/lib/libvd6281.so
+64769 1320 -1 /vendor/lib/libvideoutils.so
+64769 1321 -1 /vendor/lib/libvorbisidec.so
+64769 1322 -1 /vendor/lib/libvpx.so
+64769 1323 -1 /vendor/lib/libvqzip.so
+64769 1324 -1 /vendor/lib/libvsc.so
+64769 1325 -1 /vendor/lib/libwebrtc_audio_preprocessing.so
+64769 1326 -1 /vendor/lib/libwifi-hal-ctrl.so
+64769 1327 -1 /vendor/lib/libwifi-hal-qcom.so
+64769 1328 -1 /vendor/lib/libwms.so
+64769 1329 -1 /vendor/lib/libwpa_client.so
+64769 1330 -1 /vendor/lib/libwqe.so
+64769 1331 -1 /vendor/lib/libxml.so
+25 1559839 -1 /vendor/lib/mediacas
+64769 1333 -1 /vendor/lib/mediacas/libclearkeycasplugin.so
+25 1559841 -1 /vendor/lib/mediadrm
+64769 1335 -1 /vendor/lib/mediadrm/libdrmclearkeyplugin.so
+25 1559843 -1 /vendor/lib/modules
+64769 1347 -1 /vendor/lib/modules/snd-soc-sdm845.ko
+64769 1350 -1 /vendor/lib/modules/snd-soc-wcd9xxx.ko
+64769 1354 -1 /vendor/lib/modules/wcd-dsp-glink.ko
+64769 1344 -1 /vendor/lib/modules/sec_touch.ko
+64769 1342 -1 /vendor/lib/modules/modules.softdep
+64769 1353 -1 /vendor/lib/modules/wcd-core.ko
+64769 1337 -1 /vendor/lib/modules/ftm5.ko
+64769 1348 -1 /vendor/lib/modules/snd-soc-wcd-spi.ko
+64769 1355 -1 /vendor/lib/modules/wlan.ko
+64769 1340 -1 /vendor/lib/modules/modules.dep
+64769 1339 -1 /vendor/lib/modules/modules.alias
+64769 1338 -1 /vendor/lib/modules/heatmap.ko
+64769 1352 -1 /vendor/lib/modules/videobuf2-vmalloc.ko
+64769 1341 -1 /vendor/lib/modules/modules.load
+64769 1345 -1 /vendor/lib/modules/snd-soc-cs35l36.ko
+64769 1349 -1 /vendor/lib/modules/snd-soc-wcd934x.ko
+64769 1346 -1 /vendor/lib/modules/snd-soc-sdm845-max98927.ko
+64769 1343 -1 /vendor/lib/modules/pinctrl-wcd.ko
+64769 1351 -1 /vendor/lib/modules/videobuf2-memops.ko
+25 1559863 -1 /vendor/lib/qcdrm
+25 1559864 -1 /vendor/lib/qcdrm/playready
+25 1559865 -1 /vendor/lib/qcdrm/playready/lib
+64769 1359 -1 /vendor/lib/qcdrm/playready/lib/libtzplayready_customer.so
+64769 1360 -1 /vendor/lib/qcrild_librilutils.so
+25 1559868 -1 /vendor/lib/rfsa
+25 1559869 -1 /vendor/lib/rfsa/adsp
+64769 1368 -1 /vendor/lib/rfsa/adsp/libdsp_streamer_skel.so
+64769 1363 -1 /vendor/lib/rfsa/adsp/capi_v2_aptX_Classic.so
+64769 1373 -1 /vendor/lib/rfsa/adsp/libsns_low_lat_stream_skel.so
+64769 1372 -1 /vendor/lib/rfsa/adsp/libsns_device_mode_skel.so
+64769 1371 -1 /vendor/lib/rfsa/adsp/libhexagon_nn_skel.so
+64769 1364 -1 /vendor/lib/rfsa/adsp/capi_v2_aptX_HD.so
+64769 1365 -1 /vendor/lib/rfsa/adsp/libVC1Dec.so
+64769 1367 -1 /vendor/lib/rfsa/adsp/libdspCV_skel.so
+64769 1369 -1 /vendor/lib/rfsa/adsp/libfastcvadsp.so
+64769 1370 -1 /vendor/lib/rfsa/adsp/libfastcvdsp_skel.so
+64769 1366 -1 /vendor/lib/rfsa/adsp/libapps_mem_heap.so
+64769 1374 -1 /vendor/lib/sensors.ssc.so
+25 33224 -1 /vendor/lib/soundfx
+64769 1376 -1 /vendor/lib/soundfx/libaudiopreprocessing.so
+64769 1378 -1 /vendor/lib/soundfx/libdownmix.so
+64769 1377 -1 /vendor/lib/soundfx/libbundlewrapper.so
+64769 1383 -1 /vendor/lib/soundfx/libqcompostprocbundle.so
+64769 1387 -1 /vendor/lib/soundfx/libreverbwrapper.so
+64769 1384 -1 /vendor/lib/soundfx/libqcomvisualizer.so
+64769 1386 -1 /vendor/lib/soundfx/libqcomvoiceprocessingdescriptors.so
+64769 1388 -1 /vendor/lib/soundfx/libvisualizer.so
+64769 1385 -1 /vendor/lib/soundfx/libqcomvoiceprocessing.so
+64769 1380 -1 /vendor/lib/soundfx/libeffectproxy.so
+64769 1382 -1 /vendor/lib/soundfx/libmalistener.so
+64769 1389 -1 /vendor/lib/soundfx/libvolumelistener.so
+64769 1381 -1 /vendor/lib/soundfx/libldnhncr.so
+64769 1379 -1 /vendor/lib/soundfx/libdynproc.so
+64769 1390 -1 /vendor/lib/vendor.display.color@1.0.so
+64769 1391 -1 /vendor/lib/vendor.display.color@1.1.so
+64769 1392 -1 /vendor/lib/vendor.display.color@1.2.so
+64769 1393 -1 /vendor/lib/vendor.display.config@1.0.so
+64769 1394 -1 /vendor/lib/vendor.display.config@1.1.so
+64769 1395 -1 /vendor/lib/vendor.display.config@1.2.so
+64769 1396 -1 /vendor/lib/vendor.display.config@1.3.so
+64769 1397 -1 /vendor/lib/vendor.display.postproc@1.0.so
+64769 1398 -1 /vendor/lib/vendor.google.radioext@1.0.so
+64769 1399 -1 /vendor/lib/vendor.google.radioext@1.1.so
+64769 1400 -1 /vendor/lib/vendor.google_paintbox@1.0.so
+64769 1401 -1 /vendor/lib/vendor.qti.esepowermanager@1.0.so
+64769 1402 -1 /vendor/lib/vendor.qti.hardware.automotive.vehicle@1.0.so
+64769 1403 -1 /vendor/lib/vendor.qti.hardware.bluetooth_audio@2.0.so
+64769 1404 -1 /vendor/lib/vendor.qti.hardware.data.latency@1.0.so
+64769 1405 -1 /vendor/lib/vendor.qti.hardware.fingerprint@1.0.so
+64769 1406 -1 /vendor/lib/vendor.qti.hardware.iop@1.0.so
+64769 1407 -1 /vendor/lib/vendor.qti.hardware.perf@1.0.so
+64769 1408 -1 /vendor/lib/vendor.qti.hardware.qdutils_disp@1.0.so
+64769 1409 -1 /vendor/lib/vendor.qti.hardware.qteeconnector@1.0.so
+64769 1410 -1 /vendor/lib/vendor.qti.hardware.radio.am@1.0.so
+64769 1411 -1 /vendor/lib/vendor.qti.hardware.radio.atcmdfwd@1.0.so
+64769 1412 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.0.so
+64769 1413 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.1.so
+64769 1414 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.2.so
+64769 1415 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.3.so
+64769 1416 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.4.so
+64769 1417 -1 /vendor/lib/vendor.qti.hardware.radio.qcrilhook@1.0.so
+64769 1418 -1 /vendor/lib/vendor.qti.hardware.radio.qtiradio@1.0.so
+64769 1419 -1 /vendor/lib/vendor.qti.hardware.radio.qtiradio@2.0.so
+64769 1420 -1 /vendor/lib/vendor.qti.hardware.radio.uim@1.0.so
+64769 1421 -1 /vendor/lib/vendor.qti.hardware.radio.uim@1.1.so
+64769 1422 -1 /vendor/lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so
+64769 1423 -1 /vendor/lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so
+64769 1424 -1 /vendor/lib/vendor.qti.hardware.soter@1.0.so
+64769 1425 -1 /vendor/lib/vendor.qti.hardware.tui_comm@1.0.so
+64769 1426 -1 /vendor/lib/vendor.qti.hardware.vpp@1.1.so
+64769 1427 -1 /vendor/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so
+64769 1428 -1 /vendor/lib/vendor.qti.ims.callinfo@1.0.so
+64769 1429 -1 /vendor/lib/vendor.qti.imsrtpservice@1.0-service-Impl.so
+64769 1430 -1 /vendor/lib/vendor.qti.imsrtpservice@1.0.so
+64769 1431 -1 /vendor/lib/vendor.qti.voiceprint@1.0.so
+25 1559925 -1 /vendor/lost+found
+64769 381 -1 /vendor/build.prop
+25 1451993 -1 /vendor/framework
+25 1451994 -1 /vendor/framework/oat
+25 1451995 -1 /vendor/framework/oat/arm64
+64769 993 -1 /vendor/framework/oat/arm64/com.google.android.camera.experimental2018.vdex
+64769 992 -1 /vendor/framework/oat/arm64/com.google.android.camera.experimental2018.odex
+25 1559927 -1 /vendor/framework/oat/arm
+64769 990 -1 /vendor/framework/oat/arm/com.google.android.camera.experimental2018.vdex
+64769 989 -1 /vendor/framework/oat/arm/com.google.android.camera.experimental2018.odex
+64769 986 -1 /vendor/framework/com.google.android.camera.experimental2018.jar
+25 1465198 -1 /vendor/odm
+25 1452750 -1 /vendor/odm/etc
+25 1559930 -1 /vendor/odm/etc/permissions
+25 1559931 -1 /vendor/odm/etc/permissions/sku_G013D
+64769 1940 -1 /vendor/odm/etc/permissions/sku_G013D/com.google.hardware.pixel.japan.xml
+64769 1939 -1 /vendor/odm/etc/permissions/sku_G013D/android.hardware.nfc.ese.xml
+25 1559934 -1 /vendor/odm/etc/permissions/sku_G013C
+64769 1937 -1 /vendor/odm/etc/permissions/sku_G013C/android.hardware.nfc.uicc.xml
+25 1559936 -1 /vendor/odm/etc/permissions/sku_G013B
+64769 1935 -1 /vendor/odm/etc/permissions/sku_G013B/com.google.hardware.pixel.japan.xml
+64769 1934 -1 /vendor/odm/etc/permissions/sku_G013B/android.hardware.nfc.ese.xml
+25 1559939 -1 /vendor/odm/etc/permissions/sku_G013A
+64769 1932 -1 /vendor/odm/etc/permissions/sku_G013A/android.hardware.nfc.uicc.xml
+64769 1927 -1 /vendor/odm/etc/build.prop
+64769 1929 -1 /vendor/odm/etc/passwd
+64769 1926 -1 /vendor/odm/etc/NOTICE.xml.gz
+64769 1928 -1 /vendor/odm/etc/group
+25 1559944 -1 /vendor/odm/etc/vintf
+64769 1944 -1 /vendor/odm/etc/vintf/manifest_G013C.xml
+64769 1942 -1 /vendor/odm/etc/vintf/manifest_G013A.xml
+64769 1943 -1 /vendor/odm/etc/vintf/manifest_G013B.xml
+64769 1945 -1 /vendor/odm/etc/vintf/manifest_G013D.xml
+25 1559949 -1 /vendor/usr
+25 1559950 -1 /vendor/usr/keylayout
+64769 2607 -1 /vendor/usr/keylayout/uinput-fpc.kl
+25 1559952 -1 /vendor/usr/idc
+64769 2605 -1 /vendor/usr/idc/uinput-fpc.idc
+25 34899 -1 /vendor/overlay
+64769 1950 -1 /vendor/overlay/TeleService__auto_generated_rro_vendor.apk
+64769 1948 -1 /vendor/overlay/NfcNci__auto_generated_rro_vendor.apk
+64769 1951 -1 /vendor/overlay/framework-res__auto_generated_rro_vendor.apk
+64769 1949 -1 /vendor/overlay/SystemUIGoogle__auto_generated_rro_vendor.apk
+64769 1947 -1 /vendor/overlay/Bluetooth__auto_generated_rro_vendor.apk
+64769 382 -1 /vendor/default.prop
+25 20057 -1 /vendor/bin
+64769 28 -1 /vendor/bin/ATFWD-daemon
+64769 29 -1 /vendor/bin/CitadelProvision
+64769 30 -1 /vendor/bin/KmInstallKeybox
+64769 31 -1 /vendor/bin/PktRspTest
+64769 32 -1 /vendor/bin/StoreKeybox
+64769 347 -1 /vendor/bin/acpi
+64769 34 -1 /vendor/bin/adsprpcd
+64769 35 -1 /vendor/bin/applypatch
+64769 36 -1 /vendor/bin/athdiag
+64769 37 -1 /vendor/bin/audioflacapp
+64769 38 -1 /vendor/bin/awk
+64769 347 -1 /vendor/bin/base64
+64769 347 -1 /vendor/bin/basename
+64769 347 -1 /vendor/bin/bc
+64769 347 -1 /vendor/bin/blockdev
+64769 43 -1 /vendor/bin/boringssl_self_test32
+64769 44 -1 /vendor/bin/boringssl_self_test64
+64769 45 -1 /vendor/bin/btconfig
+64769 347 -1 /vendor/bin/cal
+64769 347 -1 /vendor/bin/cat
+64769 48 -1 /vendor/bin/ccid_daemon
+64769 49 -1 /vendor/bin/cdsprpcd
+64769 347 -1 /vendor/bin/chcon
+64769 51 -1 /vendor/bin/checkpoint_gc
+64769 347 -1 /vendor/bin/chgrp
+64769 347 -1 /vendor/bin/chmod
+64769 347 -1 /vendor/bin/chown
+64769 55 -1 /vendor/bin/chre
+64769 56 -1 /vendor/bin/chre_test_client
+64769 347 -1 /vendor/bin/chroot
+64769 347 -1 /vendor/bin/chrt
+64769 347 -1 /vendor/bin/cksum
+64769 347 -1 /vendor/bin/clear
+64769 347 -1 /vendor/bin/cmp
+64769 62 -1 /vendor/bin/cnd
+64769 63 -1 /vendor/bin/cnss-daemon
+64769 64 -1 /vendor/bin/cnss_diag
+64769 347 -1 /vendor/bin/comm
+64769 347 -1 /vendor/bin/cp
+64769 347 -1 /vendor/bin/cpio
+64769 68 -1 /vendor/bin/cplay
+64769 347 -1 /vendor/bin/cut
+64769 347 -1 /vendor/bin/date
+64769 347 -1 /vendor/bin/dd
+64769 347 -1 /vendor/bin/devmem
+64769 347 -1 /vendor/bin/df
+64769 74 -1 /vendor/bin/diag_callback_sample
+64769 75 -1 /vendor/bin/diag_dci_sample
+64769 76 -1 /vendor/bin/diag_klog
+64769 77 -1 /vendor/bin/diag_mdlog
+64769 78 -1 /vendor/bin/diag_socket_log
+64769 79 -1 /vendor/bin/diag_uart_log
+64769 347 -1 /vendor/bin/diff
+64769 347 -1 /vendor/bin/dirname
+64769 347 -1 /vendor/bin/dmesg
+64769 347 -1 /vendor/bin/dos2unix
+64769 347 -1 /vendor/bin/du
+64769 85 -1 /vendor/bin/dumpsys
+64769 86 -1 /vendor/bin/easel_power_test
+64769 87 -1 /vendor/bin/easelmanagerd
+64769 347 -1 /vendor/bin/echo
+64769 347 -1 /vendor/bin/egrep
+64769 90 -1 /vendor/bin/elmyra_test
+64769 347 -1 /vendor/bin/env
+64769 347 -1 /vendor/bin/expand
+64769 347 -1 /vendor/bin/expr
+64769 94 -1 /vendor/bin/ezlsh
+64769 347 -1 /vendor/bin/fallocate
+64769 347 -1 /vendor/bin/false
+64769 347 -1 /vendor/bin/fgrep
+64769 347 -1 /vendor/bin/file
+64769 347 -1 /vendor/bin/find
+64769 347 -1 /vendor/bin/flock
+64769 347 -1 /vendor/bin/fmt
+64769 347 -1 /vendor/bin/free
+64769 347 -1 /vendor/bin/fsync
+64769 104 -1 /vendor/bin/ftmdaemon
+64769 347 -1 /vendor/bin/getconf
+64769 347 -1 /vendor/bin/getenforce
+64769 344 -1 /vendor/bin/getevent
+64769 344 -1 /vendor/bin/getprop
+64769 347 -1 /vendor/bin/grep
+64769 347 -1 /vendor/bin/groups
+64769 347 -1 /vendor/bin/gunzip
+64769 347 -1 /vendor/bin/gzip
+64769 113 -1 /vendor/bin/halutil
+64769 114 -1 /vendor/bin/hdcp1prov
+64769 115 -1 /vendor/bin/hdcp2p2prov
+64769 347 -1 /vendor/bin/head
+64769 117 -1 /vendor/bin/hostapd_cli
+64769 347 -1 /vendor/bin/hostname
+64769 119 -1 /vendor/bin/hvdcp_opti
+25 20089 -1 /vendor/bin/hw
+64769 121 -1 /vendor/bin/hw/android.hardware.atrace@1.0-service.pixel
+64769 144 -1 /vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-paintbox
+64769 124 -1 /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.fpc
+64769 163 -1 /vendor/bin/hw/vendor.google.radioext@1.0-service
+64769 129 -1 /vendor/bin/hw/android.hardware.configstore@1.1-service
+64769 160 -1 /vendor/bin/hw/qcrild
+64769 149 -1 /vendor/bin/hw/android.hardware.power@1.3-service.pixel-libperfmgr
+64769 154 -1 /vendor/bin/hw/android.hardware.weaver@1.0-service.citadel
+64769 161 -1 /vendor/bin/hw/small_hals.crosshatch-service
+64769 143 -1 /vendor/bin/hw/android.hardware.media.omx@1.0-service
+64769 126 -1 /vendor/bin/hw/android.hardware.boot@1.0-service
+64769 162 -1 /vendor/bin/hw/test_citadel
+64769 155 -1 /vendor/bin/hw/citadel_updater
+64769 146 -1 /vendor/bin/hw/android.hardware.nfc@1.2-service
+64769 139 -1 /vendor/bin/hw/android.hardware.health.storage@1.0-service
+64769 152 -1 /vendor/bin/hw/android.hardware.thermal@2.0-service.pixel
+64769 151 -1 /vendor/bin/hw/android.hardware.sensors@2.0-service
+64769 168 -1 /vendor/bin/hw/vendor.qti.media.c2@1.0-service
+64769 122 -1 /vendor/bin/hw/android.hardware.audio@2.0-service
+64769 153 -1 /vendor/bin/hw/android.hardware.usb@1.1-service.crosshatch
+64769 148 -1 /vendor/bin/hw/android.hardware.power.stats@1.0-service.pixel
+64769 131 -1 /vendor/bin/hw/android.hardware.contexthub@1.0-service
+64769 125 -1 /vendor/bin/hw/android.hardware.bluetooth@1.0-service-qti
+64769 134 -1 /vendor/bin/hw/android.hardware.drm@1.2-service.widevine
+64769 140 -1 /vendor/bin/hw/android.hardware.health@2.0-service.crosshatch
+64769 158 -1 /vendor/bin/hw/hostapd
+64769 159 -1 /vendor/bin/hw/init_citadel
+64769 137 -1 /vendor/bin/hw/android.hardware.gnss@1.1-service-qti
+64769 145 -1 /vendor/bin/hw/android.hardware.neuralnetworks@1.2-service-qti
+64769 157 -1 /vendor/bin/hw/hardware.google.light@1.0-service
+64769 147 -1 /vendor/bin/hw/android.hardware.oemlock@1.0-service.citadel
+64769 138 -1 /vendor/bin/hw/android.hardware.graphics.composer@2.3-service
+64769 156 -1 /vendor/bin/hw/citadeld
+64769 135 -1 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.crosshatch
+64769 128 -1 /vendor/bin/hw/android.hardware.cas@1.1-service
+64769 142 -1 /vendor/bin/hw/android.hardware.keymaster@4.0-service.citadel
+64769 164 -1 /vendor/bin/hw/vendor.google.wifi_ext@1.0-service-vendor
+64769 141 -1 /vendor/bin/hw/android.hardware.keymaster@4.0-service-qti
+64769 127 -1 /vendor/bin/hw/android.hardware.camera.provider@2.4-service_64
+64769 150 -1 /vendor/bin/hw/android.hardware.secure_element@1.1-service-disabled
+64769 130 -1 /vendor/bin/hw/android.hardware.confirmationui@1.0-service-crosshatch
+64769 136 -1 /vendor/bin/hw/android.hardware.gatekeeper@1.0-service-qti
+64769 123 -1 /vendor/bin/hw/android.hardware.authsecret@1.0-service.citadel
+64769 166 -1 /vendor/bin/hw/vendor.qti.hardware.display.allocator@1.0-service
+64769 169 -1 /vendor/bin/hw/wait_for_strongbox
+64769 165 -1 /vendor/bin/hw/vendor.google.wireless_charger@1.0-service-vendor
+64769 133 -1 /vendor/bin/hw/android.hardware.drm@1.2-service.clearkey
+64769 167 -1 /vendor/bin/hw/vendor.qti.hardware.tui_comm@1.0-service-qti
+64769 170 -1 /vendor/bin/hw/wpa_supplicant
+64769 132 -1 /vendor/bin/hw/android.hardware.drm@1.0-service
+64769 347 -1 /vendor/bin/hwclock
+64769 347 -1 /vendor/bin/i2cdetect
+64769 347 -1 /vendor/bin/i2cdump
+64769 347 -1 /vendor/bin/i2cget
+64769 347 -1 /vendor/bin/i2cset
+64769 347 -1 /vendor/bin/iconv
+64769 347 -1 /vendor/bin/id
+64769 347 -1 /vendor/bin/ifconfig
+64769 179 -1 /vendor/bin/ims_rtp_daemon
+64769 180 -1 /vendor/bin/imsdatadaemon
+64769 181 -1 /vendor/bin/imsqmidaemon
+64769 182 -1 /vendor/bin/imsrcsd
+64769 183 -1 /vendor/bin/init.edge_sense.sh
+64769 184 -1 /vendor/bin/init.fingerprint.sh
+64769 185 -1 /vendor/bin/init.firstboot.sh
+64769 186 -1 /vendor/bin/init.insmod.sh
+64769 187 -1 /vendor/bin/init.qcom.devstart.sh
+64769 188 -1 /vendor/bin/init.qcom.ipastart.sh
+64769 189 -1 /vendor/bin/init.radio.sh
+64769 190 -1 /vendor/bin/init.ramoops.sh
+64769 347 -1 /vendor/bin/inotifyd
+64769 347 -1 /vendor/bin/insmod
+64769 347 -1 /vendor/bin/install
+64769 347 -1 /vendor/bin/ionice
+64769 347 -1 /vendor/bin/iorenice
+64769 196 -1 /vendor/bin/ipacm
+64769 197 -1 /vendor/bin/irsc_util
+64769 347 -1 /vendor/bin/kill
+64769 347 -1 /vendor/bin/killall
+64769 347 -1 /vendor/bin/ln
+64769 347 -1 /vendor/bin/load_policy
+64769 202 -1 /vendor/bin/loc_launcher
+64769 347 -1 /vendor/bin/log
+64769 347 -1 /vendor/bin/logname
+64769 205 -1 /vendor/bin/logwrapper
+64769 347 -1 /vendor/bin/losetup
+64769 207 -1 /vendor/bin/lowi-server
+64769 347 -1 /vendor/bin/ls
+64769 347 -1 /vendor/bin/lsmod
+64769 347 -1 /vendor/bin/lsof
+64769 347 -1 /vendor/bin/lspci
+64769 347 -1 /vendor/bin/lsusb
+64769 347 -1 /vendor/bin/md5sum
+64769 214 -1 /vendor/bin/mdm_helper
+64769 215 -1 /vendor/bin/mdm_helper_proxy
+64769 347 -1 /vendor/bin/microcom
+64769 217 -1 /vendor/bin/misc_writer
+64769 347 -1 /vendor/bin/mkdir
+64769 347 -1 /vendor/bin/mkfifo
+64769 347 -1 /vendor/bin/mknod
+64769 347 -1 /vendor/bin/mkswap
+64769 347 -1 /vendor/bin/mktemp
+64769 223 -1 /vendor/bin/mm-adec-omxamrwbplus-test
+64769 224 -1 /vendor/bin/mm-audio-alsa-test
+64769 225 -1 /vendor/bin/mm-pp-dpps
+64769 226 -1 /vendor/bin/mm-vidc-omx-test
+64769 227 -1 /vendor/bin/modem_svc
+64769 347 -1 /vendor/bin/modinfo
+64769 344 -1 /vendor/bin/modprobe
+64769 347 -1 /vendor/bin/more
+64769 347 -1 /vendor/bin/mount
+64769 347 -1 /vendor/bin/mountpoint
+64769 233 -1 /vendor/bin/msm_irqbalance
+64769 347 -1 /vendor/bin/mv
+64769 235 -1 /vendor/bin/myftm
+64769 347 -1 /vendor/bin/nc
+64769 347 -1 /vendor/bin/netcat
+64769 238 -1 /vendor/bin/netmgrd
+64769 347 -1 /vendor/bin/netstat
+64769 347 -1 /vendor/bin/nice
+64769 347 -1 /vendor/bin/nl
+64769 347 -1 /vendor/bin/nohup
+64769 347 -1 /vendor/bin/nproc
+64769 347 -1 /vendor/bin/nsenter
+64769 347 -1 /vendor/bin/od
+64769 347 -1 /vendor/bin/paste
+64769 347 -1 /vendor/bin/patch
+64769 248 -1 /vendor/bin/pd-mapper
+64769 347 -1 /vendor/bin/pgrep
+64769 347 -1 /vendor/bin/pidof
+64769 251 -1 /vendor/bin/pixelstats-vendor
+64769 347 -1 /vendor/bin/pkill
+64769 253 -1 /vendor/bin/pktlogconf
+64769 254 -1 /vendor/bin/pm-proxy
+64769 255 -1 /vendor/bin/pm-service
+64769 347 -1 /vendor/bin/pmap
+64769 257 -1 /vendor/bin/port-bridge
+64769 347 -1 /vendor/bin/printenv
+64769 347 -1 /vendor/bin/printf
+64769 347 -1 /vendor/bin/ps
+64769 261 -1 /vendor/bin/ptt_socket_app
+64769 347 -1 /vendor/bin/pwd
+64769 263 -1 /vendor/bin/qcat_unbuffered
+25 1560126 -1 /vendor/bin/qmi-framework-tests
+64769 270 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_2000
+64769 265 -1 /vendor/bin/qmi-framework-tests/qmi_test_mt_client_init_instance
+64769 266 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_0000
+64769 267 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_0001
+64769 269 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_1001
+64769 271 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_3000
+64769 268 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_1000
+64769 276 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_test
+64769 273 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_4000
+64769 275 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_start_svc
+64769 274 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_4001
+64769 272 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_3001
+64769 277 -1 /vendor/bin/qrtr-cfg
+64769 278 -1 /vendor/bin/qrtr-lookup
+64769 279 -1 /vendor/bin/qrtr-ns
+64769 280 -1 /vendor/bin/qseecom_sample_client
+64769 281 -1 /vendor/bin/qseecomd
+64769 282 -1 /vendor/bin/qti
+64769 283 -1 /vendor/bin/ramdump
+64769 284 -1 /vendor/bin/ramoops
+64769 347 -1 /vendor/bin/readlink
+64769 347 -1 /vendor/bin/realpath
+64769 347 -1 /vendor/bin/renice
+64769 347 -1 /vendor/bin/restorecon
+64769 347 -1 /vendor/bin/rm
+64769 347 -1 /vendor/bin/rmdir
+64769 347 -1 /vendor/bin/rmmod
+64769 292 -1 /vendor/bin/rmt_storage
+64769 347 -1 /vendor/bin/runcon
+64769 347 -1 /vendor/bin/sed
+64769 347 -1 /vendor/bin/sendevent
+64769 296 -1 /vendor/bin/sensors.qti
+64769 347 -1 /vendor/bin/seq
+64769 347 -1 /vendor/bin/setenforce
+64769 344 -1 /vendor/bin/setprop
+64769 347 -1 /vendor/bin/setsid
+64769 301 -1 /vendor/bin/sh
+64769 347 -1 /vendor/bin/sha1sum
+64769 347 -1 /vendor/bin/sha224sum
+64769 347 -1 /vendor/bin/sha256sum
+64769 347 -1 /vendor/bin/sha384sum
+64769 347 -1 /vendor/bin/sha512sum
+64769 347 -1 /vendor/bin/sleep
+64769 308 -1 /vendor/bin/sns_cal
+64769 309 -1 /vendor/bin/sns_oem_bus_access
+64769 310 -1 /vendor/bin/sns_oem_register_rw
+64769 311 -1 /vendor/bin/sns_oem_self_test
+64769 312 -1 /vendor/bin/sns_wait_for_sensor
+64769 347 -1 /vendor/bin/sort
+64769 314 -1 /vendor/bin/spdaemon
+64769 315 -1 /vendor/bin/spectraltool
+64769 347 -1 /vendor/bin/split
+64769 317 -1 /vendor/bin/ssc_poke
+64769 318 -1 /vendor/bin/sscrpcd
+64769 319 -1 /vendor/bin/ssr_diag
+64769 320 -1 /vendor/bin/ssr_setup
+64769 344 -1 /vendor/bin/start
+64769 347 -1 /vendor/bin/stat
+64769 344 -1 /vendor/bin/stop
+64769 347 -1 /vendor/bin/strings
+64769 347 -1 /vendor/bin/stty
+64769 326 -1 /vendor/bin/subsystem_ramdump
+64769 347 -1 /vendor/bin/swapoff
+64769 347 -1 /vendor/bin/swapon
+64769 347 -1 /vendor/bin/sync
+64769 347 -1 /vendor/bin/sysctl
+64769 347 -1 /vendor/bin/tac
+64769 347 -1 /vendor/bin/tail
+64769 347 -1 /vendor/bin/tar
+64769 347 -1 /vendor/bin/taskset
+64769 335 -1 /vendor/bin/tcpdump_logger
+64769 347 -1 /vendor/bin/tee
+64769 337 -1 /vendor/bin/test_diag
+64769 338 -1 /vendor/bin/tftp_server
+64769 339 -1 /vendor/bin/thermal-engine
+64769 347 -1 /vendor/bin/time
+64769 341 -1 /vendor/bin/time_daemon
+64769 347 -1 /vendor/bin/timeout
+64769 343 -1 /vendor/bin/tloc_daemon
+64769 344 -1 /vendor/bin/toolbox
+64769 347 -1 /vendor/bin/top
+64769 347 -1 /vendor/bin/touch
+64769 347 -1 /vendor/bin/toybox_vendor
+64769 347 -1 /vendor/bin/tr
+64769 347 -1 /vendor/bin/true
+64769 347 -1 /vendor/bin/truncate
+64769 347 -1 /vendor/bin/tty
+64769 347 -1 /vendor/bin/ulimit
+64769 347 -1 /vendor/bin/umount
+64769 347 -1 /vendor/bin/uname
+64769 347 -1 /vendor/bin/uniq
+64769 347 -1 /vendor/bin/unix2dos
+64769 347 -1 /vendor/bin/unlink
+64769 347 -1 /vendor/bin/unshare
+64769 347 -1 /vendor/bin/uptime
+64769 347 -1 /vendor/bin/usleep
+64769 347 -1 /vendor/bin/uudecode
+64769 347 -1 /vendor/bin/uuencode
+64769 347 -1 /vendor/bin/uuidgen
+64769 364 -1 /vendor/bin/vd6281_test
+64769 365 -1 /vendor/bin/vendor.qti.hardware.soter@1.0-provision
+64769 366 -1 /vendor/bin/vendor_cmd_tool
+64769 347 -1 /vendor/bin/vmstat
+64769 368 -1 /vendor/bin/vndservice
+64769 369 -1 /vendor/bin/vndservicemanager
+64769 347 -1 /vendor/bin/watch
+64769 347 -1 /vendor/bin/wc
+64769 372 -1 /vendor/bin/wdsdaemon
+64769 347 -1 /vendor/bin/which
+64769 347 -1 /vendor/bin/whoami
+64769 375 -1 /vendor/bin/wpa_cli
+64769 347 -1 /vendor/bin/xargs
+64769 377 -1 /vendor/bin/xtra-daemon
+64769 347 -1 /vendor/bin/xxd
+64769 347 -1 /vendor/bin/yes
+64769 347 -1 /vendor/bin/zcat
+25 1560231 -1 /vendor/firmware
+64769 837 -1 /vendor/firmware/cdspr.jsn
+64769 967 -1 /vendor/firmware/widevine.b00
+64769 827 -1 /vendor/firmware/cdsp.b03
+64769 798 -1 /vendor/firmware/a630_zap.elf
+64769 926 -1 /vendor/firmware/ipa_fws.b03
+64769 879 -1 /vendor/firmware/cpe_9340.b11
+64769 965 -1 /vendor/firmware/venus.mbn
+64769 832 -1 /vendor/firmware/cdsp.b08
+64769 859 -1 /vendor/firmware/confirmationui.b02
+64769 800 -1 /vendor/firmware/adsp.b00
+64769 914 -1 /vendor/firmware/fpctzappfingerprint.b02
+64769 847 -1 /vendor/firmware/cmnlib.mbn
+64769 916 -1 /vendor/firmware/fpctzappfingerprint.b04
+64769 876 -1 /vendor/firmware/cpe_9340.b06
+64769 835 -1 /vendor/firmware/cdsp.b11
+64769 961 -1 /vendor/firmware/venus.b01
+64769 883 -1 /vendor/firmware/cpe_9340.b18
+64769 819 -1 /vendor/firmware/bdwlan-blueline-EVT1.0.bin
+64769 922 -1 /vendor/firmware/ftm5_p1_fw.ftb
+64769 842 -1 /vendor/firmware/cmnlib.b01
+64769 849 -1 /vendor/firmware/cmnlib64.b00
+64769 799 -1 /vendor/firmware/a630_zap.mdt
+64769 972 -1 /vendor/firmware/widevine.b05
+64769 836 -1 /vendor/firmware/cdsp.mdt
+64769 875 -1 /vendor/firmware/cpe_9340.b05
+64769 815 -1 /vendor/firmware/adsp.b15
+64769 899 -1 /vendor/firmware/crus_sp_config_b1_tx.bin
+64769 935 -1 /vendor/firmware/slpi.b00
+64769 966 -1 /vendor/firmware/venus.mdt
+64769 947 -1 /vendor/firmware/slpi.b12
+64769 882 -1 /vendor/firmware/cpe_9340.b16
+64769 809 -1 /vendor/firmware/adsp.b09
+64769 844 -1 /vendor/firmware/cmnlib.b03
+64769 878 -1 /vendor/firmware/cpe_9340.b09
+64769 971 -1 /vendor/firmware/widevine.b04
+64769 964 -1 /vendor/firmware/venus.b04
+64769 795 -1 /vendor/firmware/a630_zap.b00
+64769 858 -1 /vendor/firmware/confirmationui.b01
+64769 841 -1 /vendor/firmware/cmnlib.b00
+64769 977 -1 /vendor/firmware/wil6210.brd
+64769 919 -1 /vendor/firmware/fpctzappfingerprint.b07
+64769 970 -1 /vendor/firmware/widevine.b03
+64769 848 -1 /vendor/firmware/cmnlib.mdt
+64769 794 -1 /vendor/firmware/a630_sqe.fw
+64769 959 -1 /vendor/firmware/slpi.mdt
+64769 885 -1 /vendor/firmware/cpe_9340.mdt
+64769 945 -1 /vendor/firmware/slpi.b10
+64769 812 -1 /vendor/firmware/adsp.b12
+64769 952 -1 /vendor/firmware/slpi.b17
+64769 917 -1 /vendor/firmware/fpctzappfingerprint.b05
+64769 888 -1 /vendor/firmware/cppf.b02
+64769 940 -1 /vendor/firmware/slpi.b05
+25 1560284 -1 /vendor/firmware/easel
+64769 906 -1 /vendor/firmware/easel/Image
+64769 907 -1 /vendor/firmware/easel/fip.bin
+64769 911 -1 /vendor/firmware/easel/ramdisk.img
+64769 910 -1 /vendor/firmware/easel/mnh.dtb
+25 1560289 -1 /vendor/firmware/easel/hdrplus_shot_pcgs
+64769 909 -1 /vendor/firmware/easel/hdrplus_shot_pcgs/empty.txt
+64769 944 -1 /vendor/firmware/slpi.b09
+64769 806 -1 /vendor/firmware/adsp.b06
+64769 830 -1 /vendor/firmware/cdsp.b06
+64769 896 -1 /vendor/firmware/crbtfw21.tlv
+64769 804 -1 /vendor/firmware/adsp.b04
+64769 863 -1 /vendor/firmware/confirmationui.b06
+64769 902 -1 /vendor/firmware/cs40l20.bin
+64769 816 -1 /vendor/firmware/adsp.mdt
+25 1560299 -1 /vendor/firmware/citadel
+64769 840 -1 /vendor/firmware/citadel/ec.bin
+64769 880 -1 /vendor/firmware/cpe_9340.b13
+64769 826 -1 /vendor/firmware/cdsp.b02
+64769 814 -1 /vendor/firmware/adsp.b14
+64769 953 -1 /vendor/firmware/slpi.b18
+64769 897 -1 /vendor/firmware/crnv21.bin
+64769 957 -1 /vendor/firmware/slpi.b22
+64769 969 -1 /vendor/firmware/widevine.b02
+64769 874 -1 /vendor/firmware/cpe_9340.b03
+64769 887 -1 /vendor/firmware/cppf.b01
+64769 968 -1 /vendor/firmware/widevine.b01
+25 1560312 -1 /vendor/firmware/confirmationui_fonts
+64769 869 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Google_Sans_Display_Medium_70.bin
+64769 872 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Roboto_70.bin
+64769 868 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Google_Sans_Display_Medium_49.bin
+64769 871 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Roboto_56.bin
+64769 867 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Google_Sans_Display_77.bin
+64769 870 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Roboto_49.bin
+64769 802 -1 /vendor/firmware/adsp.b02
+64769 824 -1 /vendor/firmware/cdsp.b00
+64769 949 -1 /vendor/firmware/slpi.b14
+64769 834 -1 /vendor/firmware/cdsp.b10
+64769 857 -1 /vendor/firmware/confirmationui.b00
+64769 889 -1 /vendor/firmware/cppf.b03
+64769 918 -1 /vendor/firmware/fpctzappfingerprint.b06
+64769 979 -1 /vendor/firmware/wil6210_sparrow_plus_ftm.fw
+64769 821 -1 /vendor/firmware/bdwlan-blueline.bin
+64769 820 -1 /vendor/firmware/bdwlan-blueline-EVT1.1.bin
+64769 807 -1 /vendor/firmware/adsp.b07
+64769 898 -1 /vendor/firmware/crus_sp_config_b1_rx.bin
+64769 808 -1 /vendor/firmware/adsp.b08
+64769 937 -1 /vendor/firmware/slpi.b02
+64769 924 -1 /vendor/firmware/ipa_fws.b01
+64769 803 -1 /vendor/firmware/adsp.b03
+64769 854 -1 /vendor/firmware/cmnlib64.b05
+64769 886 -1 /vendor/firmware/cppf.b00
+64769 955 -1 /vendor/firmware/slpi.b20
+64769 903 -1 /vendor/firmware/cs40l20.wmfw
+64769 904 -1 /vendor/firmware/drv2624.bin
+64769 983 -1 /vendor/firmware/wlanmdsp.mbn
+64769 801 -1 /vendor/firmware/adsp.b01
+64769 941 -1 /vendor/firmware/slpi.b06
+64769 912 -1 /vendor/firmware/fpctzappfingerprint.b00
+64769 893 -1 /vendor/firmware/cppf.b07
+64769 796 -1 /vendor/firmware/a630_zap.b01
+64769 856 -1 /vendor/firmware/cmnlib64.mdt
+64769 831 -1 /vendor/firmware/cdsp.b07
+64769 851 -1 /vendor/firmware/cmnlib64.b02
+64769 791 -1 /vendor/firmware/Data.msc
+64769 853 -1 /vendor/firmware/cmnlib64.b04
+64769 817 -1 /vendor/firmware/adspr.jsn
+64769 797 -1 /vendor/firmware/a630_zap.b02
+64769 793 -1 /vendor/firmware/a630_gmu.bin
+64769 865 -1 /vendor/firmware/confirmationui.mdt
+64769 950 -1 /vendor/firmware/slpi.b15
+64769 943 -1 /vendor/firmware/slpi.b08
+64769 823 -1 /vendor/firmware/bdwlan-crosshatch.bin
+64769 790 -1 /vendor/firmware/CAMERA_ICP.elf
+64769 877 -1 /vendor/firmware/cpe_9340.b07
+64769 951 -1 /vendor/firmware/slpi.b16
+64769 934 -1 /vendor/firmware/s6sy761.fw
+64769 894 -1 /vendor/firmware/cppf.mbn
+64769 813 -1 /vendor/firmware/adsp.b13
+64769 829 -1 /vendor/firmware/cdsp.b05
+64769 923 -1 /vendor/firmware/ipa_fws.b00
+64769 978 -1 /vendor/firmware/wil6210.fw
+64769 855 -1 /vendor/firmware/cmnlib64.mbn
+64769 931 -1 /vendor/firmware/modemuw.jsn
+64769 973 -1 /vendor/firmware/widevine.b06
+64769 913 -1 /vendor/firmware/fpctzappfingerprint.b01
+64769 825 -1 /vendor/firmware/cdsp.b01
+25 1560372 -1 /vendor/firmware/wlan
+25 1560373 -1 /vendor/firmware/wlan/qca_cld
+64769 982 -1 /vendor/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini
+64769 852 -1 /vendor/firmware/cmnlib64.b03
+64769 846 -1 /vendor/firmware/cmnlib.b05
+64769 818 -1 /vendor/firmware/adspua.jsn
+64769 892 -1 /vendor/firmware/cppf.b06
+64769 828 -1 /vendor/firmware/cdsp.b04
+64769 915 -1 /vendor/firmware/fpctzappfingerprint.b03
+64769 936 -1 /vendor/firmware/slpi.b01
+64769 822 -1 /vendor/firmware/bdwlan-crosshatch-EVT1.0.bin
+64769 881 -1 /vendor/firmware/cpe_9340.b15
+64769 920 -1 /vendor/firmware/fpctzappfingerprint.mdt
+64769 963 -1 /vendor/firmware/venus.b03
+64769 932 -1 /vendor/firmware/nanoapp_config.textproto
+64769 938 -1 /vendor/firmware/slpi.b03
+64769 895 -1 /vendor/firmware/cppf.mdt
+64769 811 -1 /vendor/firmware/adsp.b11
+64769 956 -1 /vendor/firmware/slpi.b21
+64769 873 -1 /vendor/firmware/cpe_9340.b01
+64769 974 -1 /vendor/firmware/widevine.b07
+64769 958 -1 /vendor/firmware/slpi.b23
+64769 901 -1 /vendor/firmware/crus_sp_config_c1_tx.bin
+64769 975 -1 /vendor/firmware/widevine.mbn
+64769 884 -1 /vendor/firmware/cpe_9340.b20
+64769 891 -1 /vendor/firmware/cppf.b05
+64769 942 -1 /vendor/firmware/slpi.b07
+64769 939 -1 /vendor/firmware/slpi.b04
+64769 930 -1 /vendor/firmware/leia_pm4_470.fw
+64769 976 -1 /vendor/firmware/widevine.mdt
+64769 929 -1 /vendor/firmware/leia_pfp_470.fw
+64769 928 -1 /vendor/firmware/ipa_fws.mdt
+64769 833 -1 /vendor/firmware/cdsp.b09
+64769 925 -1 /vendor/firmware/ipa_fws.b02
+64769 810 -1 /vendor/firmware/adsp.b10
+64769 861 -1 /vendor/firmware/confirmationui.b04
+64769 900 -1 /vendor/firmware/crus_sp_config_c1_rx.bin
+64769 845 -1 /vendor/firmware/cmnlib.b04
+64769 948 -1 /vendor/firmware/slpi.b13
+64769 946 -1 /vendor/firmware/slpi.b11
+64769 850 -1 /vendor/firmware/cmnlib64.b01
+64769 933 -1 /vendor/firmware/pn557.bin
+64769 843 -1 /vendor/firmware/cmnlib.b02
+64769 860 -1 /vendor/firmware/confirmationui.b03
+64769 921 -1 /vendor/firmware/ftm5_fw.ftb
+64769 805 -1 /vendor/firmware/adsp.b05
+64769 954 -1 /vendor/firmware/slpi.b19
+64769 960 -1 /vendor/firmware/venus.b00
+64769 862 -1 /vendor/firmware/confirmationui.b05
+64769 927 -1 /vendor/firmware/ipa_fws.b04
+64769 864 -1 /vendor/firmware/confirmationui.b07
+64769 792 -1 /vendor/firmware/TEST_MAPPING
+64769 890 -1 /vendor/firmware/cppf.b04
+64769 962 -1 /vendor/firmware/venus.b02
+25 1486930 -1 /vendor/rfs
+25 1560426 -1 /vendor/rfs/mdm
+25 1560427 -1 /vendor/rfs/mdm/tn
+2130 52 -1 /vendor/rfs/mdm/tn/readwrite
+64772 204 -1 /vendor/rfs/mdm/tn/ramdumps
+25 1560430 -1 /vendor/rfs/mdm/tn/readonly
+25 1560431 -1 /vendor/rfs/mdm/tn/readonly/vendor
+25 1560231 -1 /vendor/rfs/mdm/tn/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/mdm/tn/readonly/firmware
+2130 55 -1 /vendor/rfs/mdm/tn/hlos
+2130 38 -1 /vendor/rfs/mdm/tn/shared
+25 1560436 -1 /vendor/rfs/mdm/cdsp
+2130 329 -1 /vendor/rfs/mdm/cdsp/readwrite
+64772 206 -1 /vendor/rfs/mdm/cdsp/ramdumps
+25 1560439 -1 /vendor/rfs/mdm/cdsp/readonly
+25 1560440 -1 /vendor/rfs/mdm/cdsp/readonly/vendor
+25 1560231 -1 /vendor/rfs/mdm/cdsp/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/mdm/cdsp/readonly/firmware
+2130 55 -1 /vendor/rfs/mdm/cdsp/hlos
+2130 38 -1 /vendor/rfs/mdm/cdsp/shared
+25 1560445 -1 /vendor/rfs/mdm/slpi
+2130 51 -1 /vendor/rfs/mdm/slpi/readwrite
+64772 205 -1 /vendor/rfs/mdm/slpi/ramdumps
+25 1560448 -1 /vendor/rfs/mdm/slpi/readonly
+25 1560449 -1 /vendor/rfs/mdm/slpi/readonly/vendor
+25 1560231 -1 /vendor/rfs/mdm/slpi/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/mdm/slpi/readonly/firmware
+2130 55 -1 /vendor/rfs/mdm/slpi/hlos
+2130 38 -1 /vendor/rfs/mdm/slpi/shared
+25 1560454 -1 /vendor/rfs/mdm/mpss
+2130 49 -1 /vendor/rfs/mdm/mpss/readwrite
+64772 202 -1 /vendor/rfs/mdm/mpss/ramdumps
+25 1560457 -1 /vendor/rfs/mdm/mpss/readonly
+25 1560458 -1 /vendor/rfs/mdm/mpss/readonly/vendor
+25 1560231 -1 /vendor/rfs/mdm/mpss/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/mdm/mpss/readonly/firmware
+2130 55 -1 /vendor/rfs/mdm/mpss/hlos
+2130 38 -1 /vendor/rfs/mdm/mpss/shared
+25 1560463 -1 /vendor/rfs/mdm/adsp
+2130 50 -1 /vendor/rfs/mdm/adsp/readwrite
+64772 203 -1 /vendor/rfs/mdm/adsp/ramdumps
+25 1560466 -1 /vendor/rfs/mdm/adsp/readonly
+25 1560467 -1 /vendor/rfs/mdm/adsp/readonly/vendor
+25 1560231 -1 /vendor/rfs/mdm/adsp/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/mdm/adsp/readonly/firmware
+2130 55 -1 /vendor/rfs/mdm/adsp/hlos
+2130 38 -1 /vendor/rfs/mdm/adsp/shared
+25 1471894 -1 /vendor/rfs/msm
+25 1560472 -1 /vendor/rfs/msm/cdsp
+2130 328 -1 /vendor/rfs/msm/cdsp/readwrite
+64772 206 -1 /vendor/rfs/msm/cdsp/ramdumps
+25 1560475 -1 /vendor/rfs/msm/cdsp/readonly
+25 1560476 -1 /vendor/rfs/msm/cdsp/readonly/vendor
+25 1560231 -1 /vendor/rfs/msm/cdsp/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/msm/cdsp/readonly/firmware
+2130 55 -1 /vendor/rfs/msm/cdsp/hlos
+2130 38 -1 /vendor/rfs/msm/cdsp/shared
+25 1560481 -1 /vendor/rfs/msm/slpi
+2130 47 -1 /vendor/rfs/msm/slpi/readwrite
+64772 205 -1 /vendor/rfs/msm/slpi/ramdumps
+25 1560484 -1 /vendor/rfs/msm/slpi/readonly
+25 1560485 -1 /vendor/rfs/msm/slpi/readonly/vendor
+25 1560231 -1 /vendor/rfs/msm/slpi/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/msm/slpi/readonly/firmware
+2130 55 -1 /vendor/rfs/msm/slpi/hlos
+2130 38 -1 /vendor/rfs/msm/slpi/shared
+25 1471895 -1 /vendor/rfs/msm/mpss
+64772 157 -1 /vendor/rfs/msm/mpss/readwrite
+64772 368 -1 /vendor/rfs/msm/mpss/ramdumps
+25 1560491 -1 /vendor/rfs/msm/mpss/readonly
+25 1560492 -1 /vendor/rfs/msm/mpss/readonly/vendor
+25 1560493 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn
+25 1560494 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw
+64769 2154 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/mbn_hw.dig
+64769 2155 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/mbn_hw.txt
+25 1560497 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic
+25 1560498 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common
+25 1560499 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670
+25 1560500 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/cmcc_subsidized
+25 1560501 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/cmcc_subsidized/SR_DSDS
+64769 2117 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn
+25 1560503 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA
+25 1560504 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/7+7_mode
+25 1560505 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/7+7_mode/SR_DSDS
+64769 2112 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560507 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/SS
+64769 2114 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/SS/mcfg_hw.mbn
+25 1560509 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55
+25 1560510 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode
+25 1560511 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/SR_DSDS
+64769 2061 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560513 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/DR_DSDS
+64769 2059 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/DR_DSDS/mcfg_hw.mbn
+25 1560515 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/SS
+64769 2063 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/SS/mcfg_hw.mbn
+25 1560517 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998
+25 1560518 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/cmcc_subsidized
+25 1560519 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/cmcc_subsidized/SR_DSDS
+64769 2097 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn
+25 1560521 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA
+25 1560522 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode
+25 1560523 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/SR_DSDS
+64769 2078 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560525 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/DR_DSDS
+64769 2076 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/DR_DSDS/mcfg_hw.mbn
+25 1560527 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/SS
+64769 2080 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/SS/mcfg_hw.mbn
+25 1560529 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8
+25 1560530 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode
+25 1560531 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/SR_DSDS
+64769 2092 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560533 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/DR_DSDS
+64769 2090 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/DR_DSDS/mcfg_hw.mbn
+25 1560535 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/SS
+64769 2094 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/SS/mcfg_hw.mbn
+25 1560537 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD
+25 1560538 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/7+7_mode
+25 1560539 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/7+7_mode/SR_DSDS
+64769 2084 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560541 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/SS
+64769 2086 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/SS/mcfg_hw.mbn
+25 1560543 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion
+25 1560544 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode
+25 1560545 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/SR_DSDS
+64769 2069 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560547 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/DR_DSDS
+64769 2067 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/DR_DSDS/mcfg_hw.mbn
+25 1560549 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/SS
+64769 2071 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/SS/mcfg_hw.mbn
+25 1560551 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845
+25 1560552 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/cmcc_subsidized
+25 1560553 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/cmcc_subsidized/SR_DSDS
+64769 2139 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn
+25 1560555 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA
+25 1560556 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/7+7_mode
+25 1560557 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/7+7_mode/SR_DSDS
+64769 2122 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560559 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/SS
+64769 2124 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/SS/mcfg_hw.mbn
+25 1560561 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8
+25 1560562 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/7+7_mode
+25 1560563 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/7+7_mode/SR_DSDS
+64769 2134 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560565 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/SS
+64769 2136 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/SS/mcfg_hw.mbn
+25 1560567 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD
+25 1560568 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/7+7_mode
+25 1560569 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/7+7_mode/SR_DSDS
+64769 2128 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560571 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/SS
+64769 2130 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/SS/mcfg_hw.mbn
+25 1560573 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion
+25 1560574 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode
+25 1560575 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/SR_DSDS
+64769 2151 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560577 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/DR_DSDS
+64769 2149 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/DR_DSDS/mcfg_hw.mbn
+25 1560579 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/SS
+64769 2153 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/SS/mcfg_hw.mbn
+25 1560581 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20
+25 1560582 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/7+7_mode
+25 1560583 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/7+7_mode/SR_DSDS
+64769 2143 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560585 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/SS
+64769 2145 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/SS/mcfg_hw.mbn
+25 1560587 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660
+25 1560588 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/cmcc_subsidized
+25 1560589 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/cmcc_subsidized/SR_DSDS
+64769 2107 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn
+25 1560591 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA
+25 1560592 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/7+7_mode
+25 1560593 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/7+7_mode/SR_DSDS
+64769 2102 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn
+25 1560595 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/SS
+64769 2104 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/SS/mcfg_hw.mbn
+25 1560597 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw
+64769 2589 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/mbn_sw.dig
+64769 2590 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/mbn_sw.txt
+25 1560600 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic
+25 1560601 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM
+25 1560602 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica
+25 1560603 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica/Commercial
+25 1560604 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica/Commercial/Peru
+64769 2376 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica/Commercial/Peru/mcfg_sw.mbn
+25 1560606 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro
+25 1560607 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro/Commercial
+25 1560608 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro/Commercial/Colombia
+64769 2372 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro/Commercial/Colombia/mcfg_sw.mbn
+25 1560610 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX
+25 1560611 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Non_VoLTE
+64769 2366 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Non_VoLTE/mcfg_sw.mbn
+25 1560613 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/VoLTE
+64769 2368 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/VoLTE/mcfg_sw.mbn
+25 1560615 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Commercial
+25 1560616 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Commercial/MX
+64769 2364 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Commercial/MX/mcfg_sw.mbn
+25 1560618 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China
+25 1560619 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT
+25 1560620 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab
+25 1560621 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_EPS_ONLY
+64769 2218 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_EPS_ONLY/mcfg_sw.mbn
+25 1560623 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_NO_APN
+64769 2220 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_NO_APN/mcfg_sw.mbn
+25 1560625 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST
+64769 2216 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST/mcfg_sw.mbn
+25 1560627 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/VoLTE_Conf
+64769 2222 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/VoLTE_Conf/mcfg_sw.mbn
+25 1560629 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/CTA
+64769 2214 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/CTA/mcfg_sw.mbn
+25 1560631 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial
+25 1560632 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/OpenMkt
+64769 2207 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/OpenMkt/mcfg_sw.mbn
+25 1560634 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/hVoLTE_OpenMkt
+64769 2211 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/hVoLTE_OpenMkt/mcfg_sw.mbn
+25 1560636 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/VoLTE_OpenMkt
+64769 2209 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/VoLTE_OpenMkt/mcfg_sw.mbn
+25 1560638 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC
+25 1560639 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab
+25 1560640 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Nsiot_VoLTE
+64769 2197 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Nsiot_VoLTE/mcfg_sw.mbn
+25 1560642 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/AGNSS_LocTech
+64769 2189 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/AGNSS_LocTech/mcfg_sw.mbn
+25 1560644 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/RRLP_LocTech
+64769 2199 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/RRLP_LocTech/mcfg_sw.mbn
+25 1560646 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/EPS_Only
+64769 2193 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/EPS_Only/mcfg_sw.mbn
+25 1560648 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/W_IRAT_Comb_Attach
+64769 2203 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/W_IRAT_Comb_Attach/mcfg_sw.mbn
+25 1560650 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/LPP_LocTech
+64769 2195 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/LPP_LocTech/mcfg_sw.mbn
+25 1560652 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Conf_VoLTE
+64769 2191 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Conf_VoLTE/mcfg_sw.mbn
+25 1560654 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/TGL_Comb_Attach
+64769 2201 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/TGL_Comb_Attach/mcfg_sw.mbn
+25 1560656 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Commercial
+25 1560657 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Commercial/Volte_OpenMkt
+64769 2186 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Commercial/Volte_OpenMkt/mcfg_sw.mbn
+25 1560659 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU
+25 1560660 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Lab
+25 1560661 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Lab/Test
+64769 2231 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Lab/Test/mcfg_sw.mbn
+25 1560663 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial
+25 1560664 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/OpenMkt
+64769 2226 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/OpenMkt/mcfg_sw.mbn
+25 1560666 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/VoLTE
+64769 2228 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/VoLTE/mcfg_sw.mbn
+25 1560668 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA
+25 1560669 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone
+25 1560670 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone/Commercial
+25 1560671 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone/Commercial/HK
+64769 2551 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone/Commercial/HK/mcfg_sw.mbn
+25 1560673 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe
+25 1560674 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe/Commercial
+25 1560675 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe/Commercial/PH
+64769 2531 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe/Commercial/PH/mcfg_sw.mbn
+25 1560677 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/APT
+25 1560678 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/APT/Commercial
+64769 2516 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/APT/Commercial/mcfg_sw.mbn
+25 1560680 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/YTL
+25 1560681 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/YTL/Commercial
+64769 2578 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/YTL/Commercial/mcfg_sw.mbn
+25 1560683 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel
+25 1560684 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel/Commercial
+25 1560685 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel/Commercial/TW
+64769 2520 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel/Commercial/TW/mcfg_sw.mbn
+25 1560687 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1
+25 1560688 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1/Commercial
+25 1560689 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1/Commercial/SG
+64769 2539 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1/Commercial/SG/mcfg_sw.mbn
+25 1560691 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK
+25 1560692 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK/Commercial
+25 1560693 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK/Commercial/HK
+64769 2509 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK/Commercial/HK/mcfg_sw.mbn
+25 1560695 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove
+25 1560696 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove/Commercial
+25 1560697 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove/Commercial/VoLTE
+64769 2571 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove/Commercial/VoLTE/mcfg_sw.mbn
+25 1560699 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar
+25 1560700 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar/Commercial
+25 1560701 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar/Commercial/TW
+64769 2567 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar/Commercial/TW/mcfg_sw.mbn
+25 1560703 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub
+25 1560704 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub/Commercial
+25 1560705 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub/Commercial/SG
+64769 2560 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub/Commercial/SG/mcfg_sw.mbn
+25 1560707 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC
+25 1560708 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC/Commercial
+25 1560709 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC/Commercial/VoLTE
+64769 2524 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC/Commercial/VoLTE/mcfg_sw.mbn
+25 1560711 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/FarEastOne
+25 1560712 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/FarEastOne/Commercial
+64769 2527 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/FarEastOne/Commercial/mcfg_sw.mbn
+25 1560714 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile
+25 1560715 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile/Commercial
+25 1560716 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile/Commercial/Malaysia
+64769 2575 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile/Commercial/Malaysia/mcfg_sw.mbn
+25 1560718 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel
+25 1560719 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel/Commercial
+25 1560720 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel/Commercial/Singapore
+64769 2547 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel/Commercial/Singapore/mcfg_sw.mbn
+25 1560722 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1
+25 1560723 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1/Commercial
+25 1560724 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1/Commercial/Malaysia
+64769 2543 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1/Commercial/Malaysia/mcfg_sw.mbn
+25 1560726 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TM
+25 1560727 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TM/Commercial
+64769 2563 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TM/Commercial/mcfg_sw.mbn
+25 1560729 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS
+25 1560730 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS/Commercial
+25 1560731 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS/Commercial/Thailand
+64769 2513 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS/Commercial/Thailand/mcfg_sw.mbn
+25 1560733 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT
+25 1560734 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT/Commercial
+25 1560735 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT/Commercial/HK
+64769 2535 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT/Commercial/HK/mcfg_sw.mbn
+25 1560737 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren
+25 1560738 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial
+25 1560739 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial/VoWiFi
+64769 2555 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial/VoWiFi/mcfg_sw.mbn
+64769 2556 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial/mcfg_sw.mbn
+25 1560742 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA
+25 1560743 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA/Brazil
+25 1560744 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA/Brazil/Commercial
+64769 2504 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA/Brazil/Commercial/mcfg_sw.mbn
+25 1560746 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ
+25 1560747 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus
+25 1560748 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus/Commercial
+25 1560749 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus/Commercial/AU
+64769 2175 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus/Commercial/AU/mcfg_sw.mbn
+25 1560751 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Telstra
+25 1560752 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Telstra/Commercial
+64769 2178 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Telstra/Commercial/mcfg_sw.mbn
+25 1560754 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Vodafone
+25 1560755 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Vodafone/Commercial
+64769 2181 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Vodafone/Commercial/mcfg_sw.mbn
+25 1560757 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC
+25 1560758 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/DCM
+25 1560759 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/DCM/Commercial
+64769 2161 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/DCM/Commercial/mcfg_sw.mbn
+25 1560761 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/KDDI
+25 1560762 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/KDDI/Commercial
+64769 2164 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/KDDI/Commercial/mcfg_sw.mbn
+25 1560764 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/Reliance
+25 1560765 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/Reliance/Commercial
+64769 2167 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/Reliance/Commercial/mcfg_sw.mbn
+25 1560767 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/SBM
+25 1560768 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/SBM/Commercial
+64769 2170 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/SBM/Commercial/mcfg_sw.mbn
+25 1560770 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel
+25 1560771 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/PTCRB
+25 1560772 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/PTCRB/PTCRB
+64769 2489 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/PTCRB/PTCRB/mcfg_sw.mbn
+25 1560774 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC
+25 1560775 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Vodafone
+25 1560776 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Vodafone/Commercial
+64769 2430 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Vodafone/Commercial/mcfg_sw.mbn
+25 1560778 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Airtel
+25 1560779 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Airtel/Commercial
+64769 2427 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Airtel/Commercial/mcfg_sw.mbn
+25 1560781 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU
+25 1560782 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone
+25 1560783 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab
+25 1560784 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab/VoLTE
+25 1560785 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab/VoLTE/Germany
+64769 2436 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab/VoLTE/Germany/mcfg_sw.mbn
+25 1560787 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA
+25 1560788 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Videotron
+25 1560789 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Videotron/VoLTE
+64769 2480 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Videotron/VoLTE/mcfg_sw.mbn
+25 1560791 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Freedom
+25 1560792 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Freedom/VoLTE
+64769 2446 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Freedom/VoLTE/mcfg_sw.mbn
+25 1560794 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Ztar
+25 1560795 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Ztar/NonVoLTE
+64769 2486 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Ztar/NonVoLTE/mcfg_sw.mbn
+25 1560797 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Koodo
+25 1560798 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Koodo/VoLTE
+64769 2449 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Koodo/VoLTE/mcfg_sw.mbn
+25 1560800 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/USCC_FI
+25 1560801 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/USCC_FI/Commercial
+64769 2477 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/USCC_FI/Commercial/mcfg_sw.mbn
+25 1560803 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky
+25 1560804 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky/Commercial
+25 1560805 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky/Commercial/CA
+64769 2453 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky/Commercial/CA/mcfg_sw.mbn
+25 1560807 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TMO_FI
+25 1560808 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TMO_FI/Commercial
+64769 2467 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TMO_FI/Commercial/mcfg_sw.mbn
+25 1560810 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Sprint_FI
+25 1560811 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Sprint_FI/Commercial
+64769 2464 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Sprint_FI/Commercial/mcfg_sw.mbn
+25 1560813 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Chatr
+25 1560814 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Chatr/NonVoLTE
+64769 2443 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Chatr/NonVoLTE/mcfg_sw.mbn
+25 1560816 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus
+25 1560817 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus/Lab
+25 1560818 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus/Lab/CA
+64769 2474 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus/Lab/CA/mcfg_sw.mbn
+25 1560820 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/CBRS
+25 1560821 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/CBRS/cbrs
+64769 2440 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/CBRS/cbrs/mcfg_sw.mbn
+25 1560823 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Visible
+25 1560824 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Visible/visible
+64769 2483 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Visible/visible/mcfg_sw.mbn
+25 1560826 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS
+25 1560827 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS/Commercial
+25 1560828 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS/Commercial/CA
+64769 2457 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS/Commercial/CA/mcfg_sw.mbn
+25 1560830 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC
+25 1560831 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC/Commercial
+25 1560832 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC/Commercial/CA
+64769 2461 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC/Commercial/CA/mcfg_sw.mbn
+25 1560834 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TbayCity
+25 1560835 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TbayCity/NonVoLTE
+64769 2470 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TbayCity/NonVoLTE/mcfg_sw.mbn
+25 1560837 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/TestSIM
+25 1560838 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/TestSIM/TestSIM
+64769 2492 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/TestSIM/TestSIM/mcfg_sw.mbn
+25 1560840 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU
+25 1560841 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica
+25 1560842 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Non_VoLTE
+25 1560843 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Non_VoLTE/Spain
+64769 2312 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Non_VoLTE/Spain/mcfg_sw.mbn
+25 1560845 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial
+25 1560846 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/DE
+64769 2307 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/DE/mcfg_sw.mbn
+25 1560848 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/UK
+64769 2309 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/UK/mcfg_sw.mbn
+25 1560850 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2
+25 1560851 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial
+25 1560852 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/NL
+64769 2301 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/NL/mcfg_sw.mbn
+25 1560854 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/Sweden
+64769 2303 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/Sweden/mcfg_sw.mbn
+25 1560856 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/EE
+25 1560857 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/EE/Commercial
+64769 2255 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/EE/Commercial/mcfg_sw.mbn
+25 1560859 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia
+25 1560860 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial
+25 1560861 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Sweden
+64769 2324 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Sweden/mcfg_sw.mbn
+25 1560863 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Norway
+64769 2322 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Norway/mcfg_sw.mbn
+25 1560865 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa
+25 1560866 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa/Commercial
+25 1560867 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa/Commercial/FI
+64769 2259 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa/Commercial/FI/mcfg_sw.mbn
+25 1560869 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor
+25 1560870 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial
+25 1560871 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Denmark
+64769 2316 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Denmark/mcfg_sw.mbn
+25 1560873 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Norway
+64769 2318 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Norway/mcfg_sw.mbn
+25 1560875 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange
+25 1560876 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial
+25 1560877 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Spain
+64769 2281 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Spain/mcfg_sw.mbn
+25 1560879 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Romania
+64769 2279 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Romania/mcfg_sw.mbn
+25 1560881 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/France
+64769 2273 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/France/mcfg_sw.mbn
+25 1560883 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Group_Non_IMS
+64769 2275 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Group_Non_IMS/mcfg_sw.mbn
+25 1560885 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Poland
+64769 2277 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Poland/mcfg_sw.mbn
+25 1560887 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM
+25 1560888 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM/Commercial
+25 1560889 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM/Commercial/Italy
+64769 2297 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM/Commercial/Italy/mcfg_sw.mbn
+25 1560891 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G
+25 1560892 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial
+25 1560893 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Italy
+64769 2265 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Italy/mcfg_sw.mbn
+25 1560895 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/SE
+64769 2267 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/SE/mcfg_sw.mbn
+25 1560897 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Denmark
+64769 2263 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Denmark/mcfg_sw.mbn
+25 1560899 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/UK
+64769 2269 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/UK/mcfg_sw.mbn
+25 1560901 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone
+25 1560902 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/Non_VoLTE
+64769 2327 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/Non_VoLTE/mcfg_sw.mbn
+25 1560904 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE
+25 1560905 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/SAfrica
+64769 2340 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/SAfrica/mcfg_sw.mbn
+25 1560907 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Italy
+64769 2334 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Italy/mcfg_sw.mbn
+25 1560909 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Spain
+64769 2342 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Spain/mcfg_sw.mbn
+25 1560911 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Turkey
+64769 2344 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Turkey/mcfg_sw.mbn
+25 1560913 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Portugal
+64769 2338 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Portugal/mcfg_sw.mbn
+25 1560915 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Germany
+64769 2332 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Germany/mcfg_sw.mbn
+25 1560917 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/UK
+64769 2346 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/UK/mcfg_sw.mbn
+25 1560919 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Netherlands
+64769 2336 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Netherlands/mcfg_sw.mbn
+25 1560921 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/CZ
+64769 2330 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/CZ/mcfg_sw.mbn
+25 1560923 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC
+25 1560924 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC/Commercial
+25 1560925 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC/Commercial/Denmark
+64769 2293 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC/Commercial/Denmark/mcfg_sw.mbn
+25 1560927 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT
+25 1560928 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Non_VoLTE
+25 1560929 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Non_VoLTE/Commercial
+64769 2249 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Non_VoLTE/Commercial/mcfg_sw.mbn
+25 1560931 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/VoLTE
+25 1560932 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/VoLTE/Commercial
+64769 2252 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/VoLTE/Commercial/mcfg_sw.mbn
+25 1560934 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial
+25 1560935 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Greece
+64769 2244 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Greece/mcfg_sw.mbn
+25 1560937 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/PL
+64769 2246 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/PL/mcfg_sw.mbn
+25 1560939 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/CZ
+64769 2240 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/CZ/mcfg_sw.mbn
+25 1560941 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Croatia
+64769 2242 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Croatia/mcfg_sw.mbn
+25 1560943 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues
+25 1560944 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues/Commercial
+25 1560945 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues/Commercial/France
+64769 2236 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues/Commercial/France/mcfg_sw.mbn
+25 1560947 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom
+25 1560948 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom/Commercial
+25 1560949 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom/Commercial/Swiss
+64769 2289 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom/Commercial/Swiss/mcfg_sw.mbn
+25 1560951 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR
+25 1560952 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR/Commercial
+25 1560953 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR/Commercial/FR
+64769 2285 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR/Commercial/FR/mcfg_sw.mbn
+25 1560955 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA
+25 1560956 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT
+25 1560957 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Cricket
+64769 2380 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Cricket/mcfg_sw.mbn
+25 1560959 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/FirstNet
+64769 2382 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/FirstNet/mcfg_sw.mbn
+25 1560961 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Non_VoLTE
+64769 2384 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Non_VoLTE/mcfg_sw.mbn
+25 1560963 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/VoLTE
+64769 2386 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/VoLTE/mcfg_sw.mbn
+25 1560965 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Inland
+25 1560966 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Inland/Commercial
+64769 2396 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Inland/Commercial/mcfg_sw.mbn
+25 1560968 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon
+25 1560969 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/CDMAless
+64769 2418 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/CDMAless/mcfg_sw.mbn
+25 1560971 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/hVoLTE
+64769 2422 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/hVoLTE/mcfg_sw.mbn
+25 1560973 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/IMSless
+64769 2420 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/IMSless/mcfg_sw.mbn
+25 1560975 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint
+25 1560976 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/VoWiFi
+64769 2405 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/VoWiFi/mcfg_sw.mbn
+25 1560978 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/Commercial
+64769 2403 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/Commercial/mcfg_sw.mbn
+25 1560980 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/CSpire
+25 1560981 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/CSpire/IMSless
+64769 2393 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/CSpire/IMSless/mcfg_sw.mbn
+25 1560983 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell
+25 1560984 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell/Commercial
+25 1560985 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell/Commercial/CA
+64769 2390 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell/Commercial/CA/mcfg_sw.mbn
+25 1560987 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers
+25 1560988 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers/Commercial
+25 1560989 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers/Commercial/CA
+64769 2400 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers/Commercial/CA/mcfg_sw.mbn
+25 1560991 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/USCC
+25 1560992 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/USCC/Commercial
+64769 2415 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/USCC/Commercial/mcfg_sw.mbn
+25 1560994 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus
+25 1560995 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus/Commercial
+25 1560996 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus/Commercial/CA
+64769 2412 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus/Commercial/CA/mcfg_sw.mbn
+25 1560998 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/TMO
+25 1560999 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/TMO/Commercial
+64769 2408 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/TMO/Commercial/mcfg_sw.mbn
+25 1561001 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea
+25 1561002 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/LGU
+25 1561003 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/LGU/Commercial
+64769 2353 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/LGU/Commercial/mcfg_sw.mbn
+25 1561005 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/TTA
+25 1561006 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/TTA/Commercial
+64769 2359 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/TTA/Commercial/mcfg_sw.mbn
+25 1561008 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/KT
+25 1561009 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/KT/Commercial_KT_LTE
+64769 2350 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/KT/Commercial_KT_LTE/mcfg_sw.mbn
+25 1561011 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/SKT
+25 1561012 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/SKT/Commercial
+64769 2356 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/SKT/Commercial/mcfg_sw.mbn
+25 1561014 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common
+25 1561015 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/WildCard
+25 1561016 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/WildCard/Wildcard
+64769 2588 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/WildCard/Wildcard/mcfg_sw.mbn
+25 1561018 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/W_One
+25 1561019 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/W_One/Commercial
+64769 2585 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/W_One/Commercial/mcfg_sw.mbn
+25 1561021 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/ROW
+25 1561022 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/ROW/Commercial
+64769 2582 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/ROW/Commercial/mcfg_sw.mbn
+25 1561024 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia
+25 1561025 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/Beeline
+25 1561026 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/Beeline/Gen_3GPP
+64769 2496 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/Beeline/Gen_3GPP/mcfg_sw.mbn
+25 1561028 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon
+25 1561029 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon/Commercial
+25 1561030 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon/Commercial/RU
+64769 2500 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon/Commercial/RU/mcfg_sw.mbn
+64769 2052 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg.version
+25 1560231 -1 /vendor/rfs/msm/mpss/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/msm/mpss/readonly/firmware
+2130 55 -1 /vendor/rfs/msm/mpss/hlos
+2130 38 -1 /vendor/rfs/msm/mpss/shared
+25 1561037 -1 /vendor/rfs/msm/adsp
+2130 46 -1 /vendor/rfs/msm/adsp/readwrite
+64772 203 -1 /vendor/rfs/msm/adsp/ramdumps
+25 1561040 -1 /vendor/rfs/msm/adsp/readonly
+25 1561041 -1 /vendor/rfs/msm/adsp/readonly/vendor
+25 1560231 -1 /vendor/rfs/msm/adsp/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/msm/adsp/readonly/firmware
+2130 55 -1 /vendor/rfs/msm/adsp/hlos
+2130 38 -1 /vendor/rfs/msm/adsp/shared
+25 1561046 -1 /vendor/rfs/apq
+25 1561047 -1 /vendor/rfs/apq/gnss
+2130 54 -1 /vendor/rfs/apq/gnss/readwrite
+64772 202 -1 /vendor/rfs/apq/gnss/ramdumps
+25 1561050 -1 /vendor/rfs/apq/gnss/readonly
+25 1561051 -1 /vendor/rfs/apq/gnss/readonly/vendor
+25 1560231 -1 /vendor/rfs/apq/gnss/readonly/vendor/firmware
+2061 1 -1 /vendor/rfs/apq/gnss/readonly/firmware
+2130 55 -1 /vendor/rfs/apq/gnss/hlos
+2130 38 -1 /vendor/rfs/apq/gnss/shared
+25 1561056 -1 /vendor/dsp
+25 1561057 -1 /vendor/dsp/cdsp
+64769 417 -1 /vendor/dsp/cdsp/libvpp_qbr.so
+64769 412 -1 /vendor/dsp/cdsp/libvpp_aie.so
+64769 411 -1 /vendor/dsp/cdsp/libsysmondomain_skel.so
+64769 419 -1 /vendor/dsp/cdsp/ubwcdma_dynlib.so
+64769 408 -1 /vendor/dsp/cdsp/libbenchmark_skel.so
+64769 416 -1 /vendor/dsp/cdsp/libvpp_nr.so
+64769 410 -1 /vendor/dsp/cdsp/libsysmon_skel.so
+64769 409 -1 /vendor/dsp/cdsp/libhcp_rpc_skel.so
+64769 415 -1 /vendor/dsp/cdsp/libvpp_mvp.so
+64769 418 -1 /vendor/dsp/cdsp/libvpp_svc_skel.so
+64769 414 -1 /vendor/dsp/cdsp/libvpp_frc.so
+64769 413 -1 /vendor/dsp/cdsp/libvpp_diagtools.so
+64769 407 -1 /vendor/dsp/cdsp/fastrpc_shell_3
+25 1561071 -1 /vendor/dsp/sdsp
+64769 431 -1 /vendor/dsp/sdsp/drop.napp_header
+64769 424 -1 /vendor/dsp/sdsp/blue.so
+64769 426 -1 /vendor/dsp/sdsp/cc.so
+64769 441 -1 /vendor/dsp/sdsp/imu_cal.so
+64769 432 -1 /vendor/dsp/sdsp/drop.so
+64769 452 -1 /vendor/dsp/sdsp/vibratortest.napp_header
+64769 451 -1 /vendor/dsp/sdsp/smartbatching.so
+64769 442 -1 /vendor/dsp/sdsp/libFastRPC_UTF_Forward_800s_sdm845_skel.so
+64769 423 -1 /vendor/dsp/sdsp/blue.napp_header
+64769 443 -1 /vendor/dsp/sdsp/libchre_slpi_skel.so
+64769 450 -1 /vendor/dsp/sdsp/smartbatching.napp_header
+64769 428 -1 /vendor/dsp/sdsp/chre_drv_modem.so
+64769 446 -1 /vendor/dsp/sdsp/libsysmondomain_skel.so
+64769 444 -1 /vendor/dsp/sdsp/libstabilitydomain_skel.so
+64769 437 -1 /vendor/dsp/sdsp/geofence.so
+64769 438 -1 /vendor/dsp/sdsp/gesture.napp_header
+64769 439 -1 /vendor/dsp/sdsp/gesture.so
+64769 434 -1 /vendor/dsp/sdsp/elmyra.so
+64769 422 -1 /vendor/dsp/sdsp/activity.so
+64769 445 -1 /vendor/dsp/sdsp/libsysmon_skel.so
+64769 449 -1 /vendor/dsp/sdsp/sleep.so
+64769 435 -1 /vendor/dsp/sdsp/fastrpc_shell_2
+64769 429 -1 /vendor/dsp/sdsp/chre_drv_wifi.so
+64769 427 -1 /vendor/dsp/sdsp/chre_drv_loc.so
+64769 433 -1 /vendor/dsp/sdsp/elmyra.napp_header
+64769 425 -1 /vendor/dsp/sdsp/cc.napp_header
+64769 430 -1 /vendor/dsp/sdsp/chre_pal.so
+64769 436 -1 /vendor/dsp/sdsp/geofence.napp_header
+64769 448 -1 /vendor/dsp/sdsp/sleep.napp_header
+64769 447 -1 /vendor/dsp/sdsp/lowi_client.so
+64769 421 -1 /vendor/dsp/sdsp/activity.napp_header
+64769 453 -1 /vendor/dsp/sdsp/vibratortest.so
+64769 440 -1 /vendor/dsp/sdsp/imu_cal.napp_header
+25 1561105 -1 /vendor/dsp/adsp
+64769 392 -1 /vendor/dsp/adsp/HeaacDecoderModule.so.1
+64769 400 -1 /vendor/dsp/adsp/fastrpc_shell_0
+64769 399 -1 /vendor/dsp/adsp/WmaStdDecoderModule.so.1
+64769 389 -1 /vendor/dsp/adsp/CFCMModule.so.1
+64769 386 -1 /vendor/dsp/adsp/ApeDecoderModule.so.1
+64769 385 -1 /vendor/dsp/adsp/AlacDecoderModule.so.1
+64769 396 -1 /vendor/dsp/adsp/VoiceWakeup_V2_Module.so.1
+64769 394 -1 /vendor/dsp/adsp/SAPlusCmnModule.so.1
+64769 405 -1 /vendor/dsp/adsp/mmecns_module.so.1
+64769 404 -1 /vendor/dsp/adsp/libsysmondomain_skel.so
+64769 402 -1 /vendor/dsp/adsp/libstabilitydomain_skel.so
+64769 393 -1 /vendor/dsp/adsp/LdacModule.so.1
+64769 397 -1 /vendor/dsp/adsp/VorbisDecoderModule.so.1
+64769 398 -1 /vendor/dsp/adsp/WmaProDecoderModule.so.1
+64769 390 -1 /vendor/dsp/adsp/EtsiAmrWbPlusDecModule.so.1
+64769 403 -1 /vendor/dsp/adsp/libsysmon_skel.so
+64769 388 -1 /vendor/dsp/adsp/AudioSphereModule.so.1
+64769 391 -1 /vendor/dsp/adsp/EtsiEaacPlusEncAndCmnModule.so.1
+64769 395 -1 /vendor/dsp/adsp/SVACmnModule.so.1
+64769 387 -1 /vendor/dsp/adsp/AudioContextDetection.so.1
+64769 401 -1 /vendor/dsp/adsp/fluence_voiceplus_module.so.1
+25 19564 -1 /vendor/lib64
+64769 1433 -1 /vendor/lib64/android.hardware.authsecret@1.0-impl.nos.so
+64769 1434 -1 /vendor/lib64/android.hardware.automotive.vehicle@2.0-manager-lib.so
+64769 1435 -1 /vendor/lib64/android.hardware.camera.provider@2.4-external.so
+64769 1436 -1 /vendor/lib64/android.hardware.camera.provider@2.4-legacy.so
+64769 1437 -1 /vendor/lib64/android.hardware.graphics.composer@2.1-resources.so
+64769 1438 -1 /vendor/lib64/android.hardware.graphics.composer@2.2-resources.so
+64769 1439 -1 /vendor/lib64/android.hardware.keymaster@4.0-impl.nos.so
+64769 1440 -1 /vendor/lib64/android.hardware.oemlock@1.0-impl.nos.so
+64769 1441 -1 /vendor/lib64/android.hardware.sensors@2.0-impl.so
+64769 1442 -1 /vendor/lib64/android.hardware.weaver@1.0-impl.nos.so
+64769 1443 -1 /vendor/lib64/btaudio_offload_if.so
+25 29367 -1 /vendor/lib64/camera
+25 29368 -1 /vendor/lib64/camera/components
+64769 1476 -1 /vendor/lib64/camera/components/com.qti.node.eisv2.so
+64769 1481 -1 /vendor/lib64/camera/components/com.qti.node.stich.so
+64769 1478 -1 /vendor/lib64/camera/components/com.qti.node.gpu.so
+64769 1470 -1 /vendor/lib64/camera/components/com.qti.eisv2.so
+64769 1493 -1 /vendor/lib64/camera/components/com.qtistatic.stats.awb.so
+64769 1464 -1 /vendor/lib64/camera/components/com.google.node.fd.so
+64769 1480 -1 /vendor/lib64/camera/components/com.qti.node.remosaic.so
+64769 1469 -1 /vendor/lib64/camera/components/com.google.stats.pdlibwrapper.so
+64769 1474 -1 /vendor/lib64/camera/components/com.qti.node.dummyrtb.so
+64769 1457 -1 /vendor/lib64/camera/components/com.custom.stats.awb.so
+64769 1484 -1 /vendor/lib64/camera/components/com.qti.stats.afd.so
+64769 1489 -1 /vendor/lib64/camera/components/com.qti.stats.pdlibsony.so
+64769 1475 -1 /vendor/lib64/camera/components/com.qti.node.dummysat.so
+64769 1482 -1 /vendor/lib64/camera/components/com.qti.stats.aec.so
+64769 1487 -1 /vendor/lib64/camera/components/com.qti.stats.awbwrapper.so
+64769 1458 -1 /vendor/lib64/camera/components/com.google.3atuning.default.so
+64769 1473 -1 /vendor/lib64/camera/components/com.qti.hvx.binning.so
+64769 1471 -1 /vendor/lib64/camera/components/com.qti.eisv3.so
+64769 1488 -1 /vendor/lib64/camera/components/com.qti.stats.pdlib.so
+64769 1479 -1 /vendor/lib64/camera/components/com.qti.node.memcpy.so
+64769 1491 -1 /vendor/lib64/camera/components/com.qtistatic.stats.aec.so
+64769 1477 -1 /vendor/lib64/camera/components/com.qti.node.eisv3.so
+64769 1472 -1 /vendor/lib64/camera/components/com.qti.hvx.addconstant.so
+64769 1490 -1 /vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so
+64769 1461 -1 /vendor/lib64/camera/components/com.google.3atuning.pixel3_imx363.so
+64769 1459 -1 /vendor/lib64/camera/components/com.google.3atuning.pixel3_imx355_normal.so
+64769 1483 -1 /vendor/lib64/camera/components/com.qti.stats.af.so
+64769 1486 -1 /vendor/lib64/camera/components/com.qti.stats.awb.so
+64769 1463 -1 /vendor/lib64/camera/components/com.google.node.eis.so
+64769 1466 -1 /vendor/lib64/camera/components/com.google.node.llv.so
+64769 1492 -1 /vendor/lib64/camera/components/com.qtistatic.stats.af.so
+64769 1467 -1 /vendor/lib64/camera/components/com.google.node.warping.so
+64769 1485 -1 /vendor/lib64/camera/components/com.qti.stats.asd.so
+64769 1465 -1 /vendor/lib64/camera/components/com.google.node.hdrp.so
+64769 1494 -1 /vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so
+64769 1462 -1 /vendor/lib64/camera/components/com.google.node.barebone.so
+64769 1468 -1 /vendor/lib64/camera/components/com.google.stats.af.so
+64769 1456 -1 /vendor/lib64/camera/components/com.custom.stats.aec.so
+64769 1460 -1 /vendor/lib64/camera/components/com.google.3atuning.pixel3_imx355_wide.so
+64769 1498 -1 /vendor/lib64/camera/fdconfigvideolite.bin
+64769 1497 -1 /vendor/lib64/camera/fdconfigvideo.bin
+64769 1454 -1 /vendor/lib64/camera/com.qti.tuned.default.bin
+64769 1450 -1 /vendor/lib64/camera/com.qti.sensor.imx363.so
+64769 1453 -1 /vendor/lib64/camera/com.qti.sensormodule.primax_imx355_wide.bin
+64769 1496 -1 /vendor/lib64/camera/fdconfigpreviewlite.bin
+64769 1495 -1 /vendor/lib64/camera/fdconfigpreview.bin
+64769 1445 -1 /vendor/lib64/camera/com.google.tuned.pixel3_imx355_normal.bin
+64769 1452 -1 /vendor/lib64/camera/com.qti.sensormodule.primax_imx355_normal.bin
+64769 1448 -1 /vendor/lib64/camera/com.qti.sensor.imx355_normal.so
+64769 1451 -1 /vendor/lib64/camera/com.qti.sensormodule.metric_imx363.bin
+64769 1449 -1 /vendor/lib64/camera/com.qti.sensor.imx355_wide.so
+64769 1446 -1 /vendor/lib64/camera/com.google.tuned.pixel3_imx355_wide.bin
+64769 1447 -1 /vendor/lib64/camera/com.google.tuned.pixel3_imx363.bin
+64769 1499 -1 /vendor/lib64/camera.device@1.0-impl.so
+64769 1500 -1 /vendor/lib64/camera.device@3.2-impl.so
+64769 1501 -1 /vendor/lib64/camera.device@3.3-impl.so
+64769 1502 -1 /vendor/lib64/camera.device@3.4-external-impl.so
+64769 1503 -1 /vendor/lib64/camera.device@3.4-impl.so
+64769 1504 -1 /vendor/lib64/camera.device@3.5-external-impl.so
+64769 1505 -1 /vendor/lib64/camera.device@3.5-impl.so
+64769 1506 -1 /vendor/lib64/com.fingerprints.extension@1.0.so
+64769 1507 -1 /vendor/lib64/com.qualcomm.qti.ant@1.0.so
+64769 1508 -1 /vendor/lib64/com.qualcomm.qti.imscmservice@1.0.so
+64769 1509 -1 /vendor/lib64/com.qualcomm.qti.uceservice@2.0.so
+64769 1510 -1 /vendor/lib64/com.quicinc.cne.api@1.0.so
+64769 1511 -1 /vendor/lib64/com.quicinc.cne.api@1.1.so
+64769 1512 -1 /vendor/lib64/com.quicinc.cne.constants@1.0.so
+64769 1513 -1 /vendor/lib64/com.quicinc.cne.constants@2.0.so
+64769 1514 -1 /vendor/lib64/com.quicinc.cne.constants@2.1.so
+64769 1515 -1 /vendor/lib64/com.quicinc.cne.server@1.0.so
+64769 1516 -1 /vendor/lib64/com.quicinc.cne.server@2.0.so
+64769 1517 -1 /vendor/lib64/com.quicinc.cne.server@2.1.so
+25 26657 -1 /vendor/lib64/egl
+64769 1525 -1 /vendor/lib64/egl/libq3dtools_esx.so
+64769 1522 -1 /vendor/lib64/egl/libGLESv2_adreno.so
+64769 1523 -1 /vendor/lib64/egl/libQTapGLES.so
+64769 1521 -1 /vendor/lib64/egl/libGLESv1_CM_adreno.so
+64769 1524 -1 /vendor/lib64/egl/libq3dtools_adreno.so
+64769 1519 -1 /vendor/lib64/egl/eglSubDriverAndroid.so
+64769 1520 -1 /vendor/lib64/egl/libEGL_adreno.so
+64769 1526 -1 /vendor/lib64/ese_spi_nxp.so
+64769 1527 -1 /vendor/lib64/hardware.google.light@1.0.so
+25 18482 -1 /vendor/lib64/hw
+64769 1547 -1 /vendor/lib64/hw/audio.usb.default.so
+64769 1541 -1 /vendor/lib64/hw/android.hardware.soundtrigger@2.2-impl.so
+64769 1535 -1 /vendor/lib64/hw/android.hardware.drm@1.0-impl.so
+64769 1539 -1 /vendor/lib64/hw/android.hardware.memtrack@1.0-impl.so
+64769 1540 -1 /vendor/lib64/hw/android.hardware.renderscript@1.0-impl.so
+64769 1542 -1 /vendor/lib64/hw/android.hardware.vibrator@1.2-impl.crosshatch.so
+64769 1544 -1 /vendor/lib64/hw/audio.primary.default.so
+64769 1553 -1 /vendor/lib64/hw/hwcomposer.sdm845.so
+64769 1536 -1 /vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so
+64769 1556 -1 /vendor/lib64/hw/memtrack.sdm845.so
+64769 1538 -1 /vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so
+64769 1561 -1 /vendor/lib64/hw/vibrator.default.so
+64769 1557 -1 /vendor/lib64/hw/power.default.so
+64769 1532 -1 /vendor/lib64/hw/android.hardware.broadcastradio@1.0-impl.so
+64769 1559 -1 /vendor/lib64/hw/sound_trigger.primary.sdm845.so
+64769 1543 -1 /vendor/lib64/hw/audio.bluetooth.default.so
+64769 1560 -1 /vendor/lib64/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so
+64769 1558 -1 /vendor/lib64/hw/sensors.crosshatch.so
+64769 1537 -1 /vendor/lib64/hw/android.hardware.gnss@1.1-impl-qti.so
+64769 1551 -1 /vendor/lib64/hw/gralloc.default.so
+64769 1552 -1 /vendor/lib64/hw/gralloc.sdm845.so
+64769 1554 -1 /vendor/lib64/hw/lights.sdm845.so
+64769 1529 -1 /vendor/lib64/hw/android.hardware.bluetooth.audio@2.0-impl.so
+64769 1545 -1 /vendor/lib64/hw/audio.primary.sdm845.so
+64769 1546 -1 /vendor/lib64/hw/audio.r_submix.default.so
+64769 1550 -1 /vendor/lib64/hw/com.qti.chi.override.so
+64769 1534 -1 /vendor/lib64/hw/android.hardware.contexthub@1.0-impl.generic.so
+64769 1555 -1 /vendor/lib64/hw/local_time.default.so
+64769 1549 -1 /vendor/lib64/hw/camera.sdm845.so
+64769 1548 -1 /vendor/lib64/hw/bootctrl.sdm845.so
+64769 1562 -1 /vendor/lib64/hw/vulkan.sdm845.so
+64769 1530 -1 /vendor/lib64/hw/android.hardware.bluetooth@1.0-impl-qti.so
+64769 1533 -1 /vendor/lib64/hw/android.hardware.camera.provider@2.4-impl.so
+64769 1531 -1 /vendor/lib64/hw/android.hardware.boot@1.0-impl.so
+64769 1563 -1 /vendor/lib64/lib-dplmedia.so
+64769 1564 -1 /vendor/lib64/lib-imsdpl.so
+64769 1565 -1 /vendor/lib64/lib-imsqimf.so
+64769 1566 -1 /vendor/lib64/lib-imsrcs-v2.so
+64769 1567 -1 /vendor/lib64/lib-imsxml.so
+64769 1568 -1 /vendor/lib64/lib-rtpcommon.so
+64769 1569 -1 /vendor/lib64/lib-rtpcore.so
+64769 1570 -1 /vendor/lib64/lib-rtpdaemoninterface.so
+64769 1571 -1 /vendor/lib64/lib-rtpsl.so
+64769 1572 -1 /vendor/lib64/lib-uceservice.so
+64769 1573 -1 /vendor/lib64/libAlacSwDec.so
+64769 1574 -1 /vendor/lib64/libApeSwDec.so
+64769 1575 -1 /vendor/lib64/libC2D2.so
+64769 1576 -1 /vendor/lib64/libCB.so
+64769 1577 -1 /vendor/lib64/libCommandSvc.so
+64769 1578 -1 /vendor/lib64/libFlacSwDec.so
+64769 1579 -1 /vendor/lib64/libGPQTEEC_vendor.so
+64769 1580 -1 /vendor/lib64/libGPTEE_vendor.so
+64769 1581 -1 /vendor/lib64/libGPreqcancel.so
+64769 1582 -1 /vendor/lib64/libGPreqcancel_svc.so
+64769 1583 -1 /vendor/lib64/libMpeg4SwEncoder.so
+64769 1584 -1 /vendor/lib64/libOmxAlacDecSw.so
+64769 1585 -1 /vendor/lib64/libOmxAmrwbplusDec.so
+64769 1586 -1 /vendor/lib64/libOmxApeDecSw.so
+64769 1587 -1 /vendor/lib64/libOmxCore.so
+64769 1588 -1 /vendor/lib64/libOmxEvrcDec.so
+64769 1589 -1 /vendor/lib64/libOmxQcelp13Dec.so
+64769 1590 -1 /vendor/lib64/libOmxVdec.so
+64769 1591 -1 /vendor/lib64/libOmxVenc.so
+64769 1592 -1 /vendor/lib64/libOpenCL-pixel.so
+64769 1593 -1 /vendor/lib64/libOpenCL.so
+64769 1594 -1 /vendor/lib64/libQSEEComAPI.so
+64769 1595 -1 /vendor/lib64/libQTEEConnector_vendor.so
+64769 1596 -1 /vendor/lib64/libRSDriver_adreno.so
+64769 1597 -1 /vendor/lib64/libSecureUILib.so
+64769 1598 -1 /vendor/lib64/libStDrvInt.so
+64769 1599 -1 /vendor/lib64/libSubSystemShutdown.so
+64769 1600 -1 /vendor/lib64/lib_aion_buffer.so
+64769 1601 -1 /vendor/lib64/lib_camera_sensors.so
+64769 1602 -1 /vendor/lib64/libacdb-fts.so
+64769 1603 -1 /vendor/lib64/libacdbloader.so
+64769 1604 -1 /vendor/lib64/libacdbrtac.so
+64769 1605 -1 /vendor/lib64/libadiertac.so
+64769 1606 -1 /vendor/lib64/libadreno_utils.so
+64769 1607 -1 /vendor/lib64/libadsp_default_listener.so
+64769 1608 -1 /vendor/lib64/libadsprpc.so
+64769 1609 -1 /vendor/lib64/libalsautils.so
+64769 1610 -1 /vendor/lib64/libash.so
+64769 1611 -1 /vendor/lib64/libaudcal.so
+64769 1612 -1 /vendor/lib64/libaudioalsa.so
+64769 1613 -1 /vendor/lib64/libbase64.so
+64769 1614 -1 /vendor/lib64/libbccQTI.so
+64769 1615 -1 /vendor/lib64/libbluetooth_audio_session.so
+64769 1616 -1 /vendor/lib64/libbluetooth_audio_session_qti.so
+64769 1617 -1 /vendor/lib64/libbt-hidlclient.so
+64769 1618 -1 /vendor/lib64/libbthost_if.so
+64769 1619 -1 /vendor/lib64/libbthost_if_qti.so
+64769 1620 -1 /vendor/lib64/libbtnv.so
+64769 1621 -1 /vendor/lib64/libc2d30_bltlib.so
+64769 1622 -1 /vendor/lib64/libc2dcolorconvert.so
+64769 1623 -1 /vendor/lib64/libcameradepthcalibrator.so
+64769 1624 -1 /vendor/lib64/libcamxfdalgov7.so
+64769 1625 -1 /vendor/lib64/libcamxfdengine.so
+64769 1626 -1 /vendor/lib64/libcamxncs.so
+64769 1627 -1 /vendor/lib64/libcamxstatscore.so
+64769 1628 -1 /vendor/lib64/libcamxtintlessalgo.so
+64769 1629 -1 /vendor/lib64/libcdsp_default_listener.so
+64769 1630 -1 /vendor/lib64/libcdsprpc.so
+64769 1631 -1 /vendor/lib64/libcld80211.so
+64769 1632 -1 /vendor/lib64/libcne.so
+64769 1633 -1 /vendor/lib64/libcneapiclient.so
+64769 1634 -1 /vendor/lib64/libcneoplookup.so
+64769 1635 -1 /vendor/lib64/libcneqmiutils.so
+64769 1636 -1 /vendor/lib64/libcodec2_vndk.so
+64769 1637 -1 /vendor/lib64/libcom.qti.chinodeutils.so
+64769 1638 -1 /vendor/lib64/libconfigdb.so
+64769 1639 -1 /vendor/lib64/libcpion.so
+64769 1640 -1 /vendor/lib64/libdataitems.so
+64769 1641 -1 /vendor/lib64/libdiag.so
+64769 1642 -1 /vendor/lib64/libdiagjni.so
+64769 1643 -1 /vendor/lib64/libdisp-aba.so
+64769 1644 -1 /vendor/lib64/libdisplayconfig.so
+64769 1645 -1 /vendor/lib64/libdisplaydebug.so
+64769 1646 -1 /vendor/lib64/libdisplayqos.so
+64769 1647 -1 /vendor/lib64/libdrm.so
+64769 1648 -1 /vendor/lib64/libdrmfs.so
+64769 1649 -1 /vendor/lib64/libdrmtime.so
+64769 1650 -1 /vendor/lib64/libdrmutils.so
+64769 1651 -1 /vendor/lib64/libdsi_netctrl.so
+64769 1652 -1 /vendor/lib64/libdsutils.so
+64769 1653 -1 /vendor/lib64/libeaselcomm.so
+64769 1654 -1 /vendor/lib64/libeaselmanager_client.so
+64769 1655 -1 /vendor/lib64/libeaselsystem.blue.so
+64769 1656 -1 /vendor/lib64/libeffects.so
+64769 1657 -1 /vendor/lib64/libeffectsconfig.so
+64769 1658 -1 /vendor/lib64/libelmyra-protos.so
+64769 1659 -1 /vendor/lib64/libfastcvdsp_stub.so
+64769 1660 -1 /vendor/lib64/libfastcvopt.so
+64769 1661 -1 /vendor/lib64/libflp.so
+64769 1662 -1 /vendor/lib64/libgcam.so
+64769 1663 -1 /vendor/lib64/libgcam_ae.so
+64769 1664 -1 /vendor/lib64/libgcam_frsdk.so
+64769 1665 -1 /vendor/lib64/libgcs-calwrapper.so
+64769 1666 -1 /vendor/lib64/libgcs-ipc.so
+64769 1667 -1 /vendor/lib64/libgcs-osal.so
+64769 1668 -1 /vendor/lib64/libgcs.so
+64769 1669 -1 /vendor/lib64/libgeofence.so
+64769 1670 -1 /vendor/lib64/libgnss.so
+64769 1671 -1 /vendor/lib64/libgnsspps.so
+64769 1672 -1 /vendor/lib64/libgoog_catpipe.so
+64769 1673 -1 /vendor/lib64/libgoog_flicker.so
+64769 1674 -1 /vendor/lib64/libgoog_llv_gpu.so
+64769 1675 -1 /vendor/lib64/libgoog_pdaf_core_imx363.so
+64769 1676 -1 /vendor/lib64/libgoogle_camera_hal_tests.so
+64769 1677 -1 /vendor/lib64/libgooglecamerahal.so
+64769 1678 -1 /vendor/lib64/libgooglecamerahalutils.so
+64769 1679 -1 /vendor/lib64/libgps.utils.so
+64769 1680 -1 /vendor/lib64/libgpu_tonemapper.so
+64769 1681 -1 /vendor/lib64/libgralloccore.so
+64769 1682 -1 /vendor/lib64/libgrallocutils.so
+64769 1683 -1 /vendor/lib64/libgsl.so
+64769 1684 -1 /vendor/lib64/libhdcp1prov.so
+64769 1685 -1 /vendor/lib64/libhdcp2p2prov.so
+64769 1686 -1 /vendor/lib64/libhdcpsrm.so
+64769 1687 -1 /vendor/lib64/libhdr_tm.so
+64769 1688 -1 /vendor/lib64/libhexagon_nn_stub.so
+64769 1689 -1 /vendor/lib64/libhidltransport.so
+64769 1690 -1 /vendor/lib64/libhwbinder.so
+64769 1691 -1 /vendor/lib64/libhwc2on1adapter.so
+64769 1692 -1 /vendor/lib64/libhwc2onfbadapter.so
+64769 1693 -1 /vendor/lib64/libhwminijail.so
+64769 1694 -1 /vendor/lib64/libidl.so
+64769 1695 -1 /vendor/lib64/libipanat.so
+64769 1696 -1 /vendor/lib64/libizat_core.so
+64769 1697 -1 /vendor/lib64/libjson.so
+64769 1698 -1 /vendor/lib64/libkeymaster4support.so
+64769 1699 -1 /vendor/lib64/libkeymasterdeviceutils.so
+64769 1700 -1 /vendor/lib64/libkeymasterprovision.so
+64769 1701 -1 /vendor/lib64/libkeymasterutils.so
+64769 1702 -1 /vendor/lib64/libkeystore-engine-wifi-hidl.so
+64769 1703 -1 /vendor/lib64/libkeystore-wifi-hidl.so
+64769 1704 -1 /vendor/lib64/liblbs_core.so
+64769 1705 -1 /vendor/lib64/libllvm-glnext.so
+64769 1706 -1 /vendor/lib64/libllvm-qcom.so
+64769 1707 -1 /vendor/lib64/libloc_api_v02.so
+64769 1708 -1 /vendor/lib64/libloc_core.so
+64769 1709 -1 /vendor/lib64/libloc_ds_api.so
+64769 1710 -1 /vendor/lib64/liblocation_api.so
+64769 1711 -1 /vendor/lib64/liblowi_client.so
+64769 1712 -1 /vendor/lib64/liblowi_wifihal.so
+64769 1713 -1 /vendor/lib64/liblqe.so
+64769 1714 -1 /vendor/lib64/libmdmdetect.so
+64769 1715 -1 /vendor/lib64/libmdmimgload.so
+64769 1716 -1 /vendor/lib64/libmdsprpc.so
+64769 1717 -1 /vendor/lib64/libmm-hdcpmgr.so
+64769 1718 -1 /vendor/lib64/libmm-omxcore.so
+64769 1719 -1 /vendor/lib64/libmotion_ae.so
+64769 1720 -1 /vendor/lib64/libmulawdec.so
+64769 1721 -1 /vendor/lib64/libnbaio_mono.so
+64769 1722 -1 /vendor/lib64/libnetfilter_conntrack.so
+64769 1723 -1 /vendor/lib64/libnetmgr.so
+64769 1724 -1 /vendor/lib64/libnfnetlink.so
+64769 1725 -1 /vendor/lib64/libnos.so
+64769 1726 -1 /vendor/lib64/libnos_citadeld_proxy.so
+64769 1727 -1 /vendor/lib64/libnos_client_citadel.so
+64769 1728 -1 /vendor/lib64/libnos_datagram.so
+64769 1729 -1 /vendor/lib64/libnos_datagram_citadel.so
+64769 1730 -1 /vendor/lib64/libnos_transport.so
+64769 1731 -1 /vendor/lib64/libnosprotos.so
+64769 1732 -1 /vendor/lib64/liboemcrypto.so
+64769 1733 -1 /vendor/lib64/liboffloadhal.so
+64769 1734 -1 /vendor/lib64/libpdmapper.so
+64769 1735 -1 /vendor/lib64/libpdnotifier.so
+64769 1736 -1 /vendor/lib64/libperfmgr.so
+64769 1737 -1 /vendor/lib64/libperipheral_client.so
+64769 1738 -1 /vendor/lib64/libpixelhealth.so
+64769 1739 -1 /vendor/lib64/libpixelstats.so
+64769 1740 -1 /vendor/lib64/libplatformconfig.so
+64769 1741 -1 /vendor/lib64/libpower_anomaly_data.so
+64769 1742 -1 /vendor/lib64/libprotobuf-cpp-full.so
+64769 1743 -1 /vendor/lib64/libqcbor.so
+64769 1744 -1 /vendor/lib64/libqcci_legacy.so
+64769 1745 -1 /vendor/lib64/libqcmaputils.so
+64769 1746 -1 /vendor/lib64/libqcodec2.so
+64769 1747 -1 /vendor/lib64/libqcrilFramework.so
+64769 1748 -1 /vendor/lib64/libqdMetaData.so
+64769 1749 -1 /vendor/lib64/libqdi.so
+64769 1750 -1 /vendor/lib64/libqdp.so
+64769 1751 -1 /vendor/lib64/libqdutils.so
+64769 1752 -1 /vendor/lib64/libqisl.so
+64769 1753 -1 /vendor/lib64/libqmi.so
+64769 1754 -1 /vendor/lib64/libqmi_cci.so
+64769 1755 -1 /vendor/lib64/libqmi_client_helper.so
+64769 1756 -1 /vendor/lib64/libqmi_client_qmux.so
+64769 1757 -1 /vendor/lib64/libqmi_common_so.so
+64769 1758 -1 /vendor/lib64/libqmi_csi.so
+64769 1759 -1 /vendor/lib64/libqmi_csvt_srvc.so
+64769 1760 -1 /vendor/lib64/libqmi_encdec.so
+64769 1761 -1 /vendor/lib64/libqmi_modem_svc.so
+64769 1762 -1 /vendor/lib64/libqmi_vs-google-1.so
+64769 1763 -1 /vendor/lib64/libqmiservices.so
+64769 1764 -1 /vendor/lib64/libqrtr.so
+64769 1765 -1 /vendor/lib64/libqseed3.so
+64769 1766 -1 /vendor/lib64/libqservice.so
+64769 1767 -1 /vendor/lib64/libqsocket.so
+64769 1768 -1 /vendor/lib64/libqti-utils.so
+64769 1769 -1 /vendor/lib64/libqtikeymaster4.so
+64769 1770 -1 /vendor/lib64/libquipc_os_api.so
+64769 1771 -1 /vendor/lib64/libreference-ril.so
+64769 1772 -1 /vendor/lib64/libril-qc-hal-qmi.so
+64769 1773 -1 /vendor/lib64/libril-qc-ltedirectdisc.so
+64769 1774 -1 /vendor/lib64/libril-qc-radioconfig.so
+64769 1775 -1 /vendor/lib64/libril-qcril-hook-oem.so
+64769 1776 -1 /vendor/lib64/libril.so
+64769 1777 -1 /vendor/lib64/libril_glog.so
+64769 1778 -1 /vendor/lib64/librilqmiservices.so
+64769 1779 -1 /vendor/lib64/librilutils.so
+64769 1780 -1 /vendor/lib64/librmnetctl.so
+64769 1781 -1 /vendor/lib64/librpmb.so
+64769 1782 -1 /vendor/lib64/librs_adreno.so
+64769 1783 -1 /vendor/lib64/librs_adreno_sha1.so
+64769 1784 -1 /vendor/lib64/libsdedrm.so
+64769 1785 -1 /vendor/lib64/libsdm-color.so
+64769 1786 -1 /vendor/lib64/libsdm-diag.so
+64769 1787 -1 /vendor/lib64/libsdm-disp-vndapis.so
+64769 1788 -1 /vendor/lib64/libsdmcore.so
+64769 1789 -1 /vendor/lib64/libsdmextension.so
+64769 1790 -1 /vendor/lib64/libsdmutils.so
+64769 1791 -1 /vendor/lib64/libsdsprpc.so
+64769 1792 -1 /vendor/lib64/libsecureui.so
+64769 1793 -1 /vendor/lib64/libsecureui_svcsock.so
+64769 1794 -1 /vendor/lib64/libsensorslog.so
+64769 1795 -1 /vendor/lib64/libsettings.so
+64769 1796 -1 /vendor/lib64/libsi.so
+64769 1797 -1 /vendor/lib64/libsns_device_mode_stub.so
+64769 1798 -1 /vendor/lib64/libsns_fastRPC_util.so
+64769 1799 -1 /vendor/lib64/libsns_low_lat_stream_stub.so
+64769 1800 -1 /vendor/lib64/libsnsapi.so
+64769 1801 -1 /vendor/lib64/libsnsdiaglog.so
+64769 1802 -1 /vendor/lib64/libspcom.so
+64769 1803 -1 /vendor/lib64/libspiris.so
+64769 1804 -1 /vendor/lib64/libspl.so
+64769 1805 -1 /vendor/lib64/libssc.so
+64769 1806 -1 /vendor/lib64/libssc_default_listener.so
+64769 1807 -1 /vendor/lib64/libssc_proto.so
+64769 1808 -1 /vendor/lib64/libssc_safe.so
+64769 1809 -1 /vendor/lib64/libssd.so
+64769 1810 -1 /vendor/lib64/libstagefright_bufferpool@2.0.1.so
+64769 1811 -1 /vendor/lib64/libstagefrighthw.so
+64769 1812 -1 /vendor/lib64/libsubsystem_control.so
+64769 1813 -1 /vendor/lib64/libswvdec.so
+64769 1814 -1 /vendor/lib64/libsysmon_cdsp_skel.so
+64769 1815 -1 /vendor/lib64/libsystem_health_mon.so
+64769 1816 -1 /vendor/lib64/libthermalclient.so
+64769 1817 -1 /vendor/lib64/libtime_genoff.so
+64769 1818 -1 /vendor/lib64/libtinycompress.so
+64769 1819 -1 /vendor/lib64/libtinyxml.so
+64769 1820 -1 /vendor/lib64/libtinyxml2_1.so
+64769 1821 -1 /vendor/lib64/libtzdrmgenprov.so
+64769 1822 -1 /vendor/lib64/libvd6281.so
+64769 1823 -1 /vendor/lib64/libvsc.so
+64769 1824 -1 /vendor/lib64/libwebrtc_audio_preprocessing.so
+64769 1825 -1 /vendor/lib64/libwifi-hal-ctrl.so
+64769 1826 -1 /vendor/lib64/libwifi-hal-qcom.so
+64769 1827 -1 /vendor/lib64/libwifi-hal.so
+64769 1828 -1 /vendor/lib64/libwlcproto.so
+64769 1829 -1 /vendor/lib64/libwms.so
+64769 1830 -1 /vendor/lib64/libwpa_client.so
+64769 1831 -1 /vendor/lib64/libwqe.so
+64769 1832 -1 /vendor/lib64/libwvhidl.so
+64769 1833 -1 /vendor/lib64/libxml.so
+64769 1834 -1 /vendor/lib64/ls_client.so
+25 1561266 -1 /vendor/lib64/mediacas
+64769 1836 -1 /vendor/lib64/mediacas/libclearkeycasplugin.so
+25 26453 -1 /vendor/lib64/mediadrm
+64769 1838 -1 /vendor/lib64/mediadrm/libdrmclearkeyplugin.so
+64769 1839 -1 /vendor/lib64/nfc_nci_nxp.so
+64769 1840 -1 /vendor/lib64/nos_app_avb.so
+64769 1841 -1 /vendor/lib64/nos_app_keymaster.so
+64769 1842 -1 /vendor/lib64/nos_app_weaver.so
+64769 1843 -1 /vendor/lib64/pixelatoms-cpp.so
+64769 1844 -1 /vendor/lib64/pixelpowerstats_provider_aidl_interface-cpp.so
+64769 1845 -1 /vendor/lib64/qcrild_librilutils.so
+25 1561268 -1 /vendor/lib64/rfsa
+25 1561269 -1 /vendor/lib64/rfsa/adsp
+64769 1848 -1 /vendor/lib64/rfsa/adsp/libdsp_streamer_add_constant.so
+64769 1849 -1 /vendor/lib64/sensors.ssc.so
+25 1561271 -1 /vendor/lib64/soundfx
+64769 1851 -1 /vendor/lib64/soundfx/libaudiopreprocessing.so
+64769 1853 -1 /vendor/lib64/soundfx/libdownmix.so
+64769 1852 -1 /vendor/lib64/soundfx/libbundlewrapper.so
+64769 1858 -1 /vendor/lib64/soundfx/libqcompostprocbundle.so
+64769 1862 -1 /vendor/lib64/soundfx/libreverbwrapper.so
+64769 1859 -1 /vendor/lib64/soundfx/libqcomvisualizer.so
+64769 1861 -1 /vendor/lib64/soundfx/libqcomvoiceprocessingdescriptors.so
+64769 1863 -1 /vendor/lib64/soundfx/libvisualizer.so
+64769 1860 -1 /vendor/lib64/soundfx/libqcomvoiceprocessing.so
+64769 1855 -1 /vendor/lib64/soundfx/libeffectproxy.so
+64769 1857 -1 /vendor/lib64/soundfx/libmalistener.so
+64769 1864 -1 /vendor/lib64/soundfx/libvolumelistener.so
+64769 1856 -1 /vendor/lib64/soundfx/libldnhncr.so
+64769 1854 -1 /vendor/lib64/soundfx/libdynproc.so
+64769 1865 -1 /vendor/lib64/unnhal-acc-adreno.so
+64769 1866 -1 /vendor/lib64/unnhal-acc-common.so
+64769 1867 -1 /vendor/lib64/unnhal-acc-hvx.so
+64769 1868 -1 /vendor/lib64/vendor-pixelatoms-cpp.so
+64769 1869 -1 /vendor/lib64/vendor.display.color@1.0.so
+64769 1870 -1 /vendor/lib64/vendor.display.color@1.1.so
+64769 1871 -1 /vendor/lib64/vendor.display.color@1.2.so
+64769 1872 -1 /vendor/lib64/vendor.display.config@1.0.so
+64769 1873 -1 /vendor/lib64/vendor.display.config@1.1.so
+64769 1874 -1 /vendor/lib64/vendor.display.config@1.2.so
+64769 1875 -1 /vendor/lib64/vendor.display.config@1.3.so
+64769 1876 -1 /vendor/lib64/vendor.display.postproc@1.0.so
+64769 1877 -1 /vendor/lib64/vendor.google.radioext@1.0.so
+64769 1878 -1 /vendor/lib64/vendor.google.radioext@1.1.so
+64769 1879 -1 /vendor/lib64/vendor.google.wifi_ext@1.0.so
+64769 1880 -1 /vendor/lib64/vendor.google.wifi_ext@1.1.so
+64769 1881 -1 /vendor/lib64/vendor.google.wireless_charger@1.0.so
+64769 1882 -1 /vendor/lib64/vendor.google_paintbox@1.0.so
+64769 1883 -1 /vendor/lib64/vendor.nxp.nxpese@1.0.so
+64769 1884 -1 /vendor/lib64/vendor.nxp.nxpnfc@1.0.so
+64769 1885 -1 /vendor/lib64/vendor.qti.esepowermanager@1.0.so
+64769 1886 -1 /vendor/lib64/vendor.qti.googleext.imsext@1.0.so
+64769 1887 -1 /vendor/lib64/vendor.qti.hardware.automotive.vehicle@1.0.so
+64769 1888 -1 /vendor/lib64/vendor.qti.hardware.bluetooth_audio@2.0.so
+64769 1889 -1 /vendor/lib64/vendor.qti.hardware.bluetooth_sar@1.0.so
+64769 1890 -1 /vendor/lib64/vendor.qti.hardware.data.latency@1.0.so
+64769 1891 -1 /vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so
+64769 1892 -1 /vendor/lib64/vendor.qti.hardware.fm@1.0.so
+64769 1893 -1 /vendor/lib64/vendor.qti.hardware.iop@1.0.so
+64769 1894 -1 /vendor/lib64/vendor.qti.hardware.perf@1.0.so
+64769 1895 -1 /vendor/lib64/vendor.qti.hardware.qdutils_disp@1.0.so
+64769 1896 -1 /vendor/lib64/vendor.qti.hardware.qteeconnector@1.0.so
+64769 1897 -1 /vendor/lib64/vendor.qti.hardware.radio.am@1.0.so
+64769 1898 -1 /vendor/lib64/vendor.qti.hardware.radio.atcmdfwd@1.0.so
+64769 1899 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.0.so
+64769 1900 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.1.so
+64769 1901 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.2.so
+64769 1902 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.3.so
+64769 1903 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.4.so
+64769 1904 -1 /vendor/lib64/vendor.qti.hardware.radio.lpa@1.0.so
+64769 1905 -1 /vendor/lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so
+64769 1906 -1 /vendor/lib64/vendor.qti.hardware.radio.qtiradio@1.0.so
+64769 1907 -1 /vendor/lib64/vendor.qti.hardware.radio.qtiradio@2.0.so
+64769 1908 -1 /vendor/lib64/vendor.qti.hardware.radio.uim@1.0.so
+64769 1909 -1 /vendor/lib64/vendor.qti.hardware.radio.uim@1.1.so
+64769 1910 -1 /vendor/lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so
+64769 1911 -1 /vendor/lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so
+64769 1912 -1 /vendor/lib64/vendor.qti.hardware.soter@1.0.so
+64769 1913 -1 /vendor/lib64/vendor.qti.hardware.tui_comm@1.0.so
+64769 1914 -1 /vendor/lib64/vendor.qti.hardware.vpp@1.1.so
+64769 1915 -1 /vendor/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so
+64769 1916 -1 /vendor/lib64/vendor.qti.ims.callinfo@1.0.so
+64769 1917 -1 /vendor/lib64/vendor.qti.imsrtpservice@1.0-service-Impl.so
+64769 1918 -1 /vendor/lib64/vendor.qti.imsrtpservice@1.0.so
+64769 1919 -1 /vendor/lib64/vendor.qti.voiceprint@1.0.so
+25 19645 -1 /vendor/etc
+64769 770 -1 /vendor/etc/thermal_info_config_evt.json
+25 1561309 -1 /vendor/etc/permissions
+64769 684 -1 /vendor/etc/permissions/android.hardware.wifi.aware.xml
+64769 670 -1 /vendor/etc/permissions/android.hardware.sensor.stepdetector.xml
+64769 648 -1 /vendor/etc/permissions/android.hardware.audio.pro.xml
+64769 654 -1 /vendor/etc/permissions/android.hardware.camera.raw.xml
+64769 685 -1 /vendor/etc/permissions/android.hardware.wifi.direct.xml
+64769 674 -1 /vendor/etc/permissions/android.hardware.telephony.gsm.xml
+64769 692 -1 /vendor/etc/permissions/android.software.sip.voip.xml
+64769 663 -1 /vendor/etc/permissions/android.hardware.sensor.barometer.xml
+64769 671 -1 /vendor/etc/permissions/android.hardware.strongbox_keystore.xml
+64769 650 -1 /vendor/etc/permissions/android.hardware.bluetooth_le.xml
+64769 652 -1 /vendor/etc/permissions/android.hardware.camera.front.xml
+64769 687 -1 /vendor/etc/permissions/android.hardware.wifi.rtt.xml
+64769 677 -1 /vendor/etc/permissions/android.hardware.usb.accessory.xml
+64769 681 -1 /vendor/etc/permissions/android.hardware.vulkan.compute.xml
+64769 658 -1 /vendor/etc/permissions/android.hardware.nfc.hcef.xml
+64769 668 -1 /vendor/etc/permissions/android.hardware.sensor.proximity.xml
+64769 682 -1 /vendor/etc/permissions/android.hardware.vulkan.level.xml
+64769 649 -1 /vendor/etc/permissions/android.hardware.bluetooth.xml
+64769 676 -1 /vendor/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml
+64769 664 -1 /vendor/etc/permissions/android.hardware.sensor.compass.xml
+64769 669 -1 /vendor/etc/permissions/android.hardware.sensor.stepcounter.xml
+64769 686 -1 /vendor/etc/permissions/android.hardware.wifi.passpoint.xml
+64769 688 -1 /vendor/etc/permissions/android.hardware.wifi.xml
+64769 691 -1 /vendor/etc/permissions/android.software.midi.xml
+64769 694 -1 /vendor/etc/permissions/com.google.hardware.camera.easel_2018.xml
+64769 651 -1 /vendor/etc/permissions/android.hardware.camera.flash-autofocus.xml
+64769 666 -1 /vendor/etc/permissions/android.hardware.sensor.hifi_sensors.xml
+64769 678 -1 /vendor/etc/permissions/android.hardware.usb.host.xml
+64769 655 -1 /vendor/etc/permissions/android.hardware.fingerprint.xml
+64769 690 -1 /vendor/etc/permissions/android.software.ipsec_tunnels.xml
+64769 660 -1 /vendor/etc/permissions/android.hardware.opengles.aep.xml
+64769 657 -1 /vendor/etc/permissions/android.hardware.nfc.hce.xml
+64769 689 -1 /vendor/etc/permissions/android.software.device_id_attestation.xml
+64769 675 -1 /vendor/etc/permissions/android.hardware.telephony.ims.xml
+64769 680 -1 /vendor/etc/permissions/android.hardware.vr.high_performance.xml
+64769 656 -1 /vendor/etc/permissions/android.hardware.location.gps.xml
+64769 679 -1 /vendor/etc/permissions/android.hardware.vr.headtracking.xml
+64769 696 -1 /vendor/etc/permissions/handheld_core_hardware.xml
+64769 667 -1 /vendor/etc/permissions/android.hardware.sensor.light.xml
+64769 661 -1 /vendor/etc/permissions/android.hardware.sensor.accelerometer.xml
+64769 659 -1 /vendor/etc/permissions/android.hardware.nfc.xml
+64769 695 -1 /vendor/etc/permissions/com.nxp.mifare.xml
+64769 672 -1 /vendor/etc/permissions/android.hardware.telephony.carrierlock.xml
+64769 662 -1 /vendor/etc/permissions/android.hardware.sensor.assist.xml
+64769 693 -1 /vendor/etc/permissions/com.google.android.camera.experimental2018.xml
+64769 683 -1 /vendor/etc/permissions/android.hardware.vulkan.version.xml
+64769 653 -1 /vendor/etc/permissions/android.hardware.camera.full.xml
+64769 647 -1 /vendor/etc/permissions/android.hardware.audio.low_latency.xml
+64769 673 -1 /vendor/etc/permissions/android.hardware.telephony.cdma.xml
+64769 665 -1 /vendor/etc/permissions/android.hardware.sensor.gyroscope.xml
+64769 642 -1 /vendor/etc/msm_irqbalance.conf
+64769 764 -1 /vendor/etc/sound_trigger_platform_info.xml
+64769 704 -1 /vendor/etc/sec_config
+64769 771 -1 /vendor/etc/usb_audio_policy_configuration.xml
+64769 703 -1 /vendor/etc/sap.conf
+64769 499 -1 /vendor/etc/bluetooth_audio_policy_configuration.xml
+25 1561366 -1 /vendor/etc/chre
+64769 504 -1 /vendor/etc/chre/preloaded_nanoapps.json
+64769 700 -1 /vendor/etc/qdcm_calib_data_sw43408_cmd_mode_dsc_dsi_panel.xml
+64769 630 -1 /vendor/etc/maxx_conf_c1.ini
+64769 699 -1 /vendor/etc/qdcm_calib_data_S6E3HA8_6.3_command_mode_panel.xml
+64769 495 -1 /vendor/etc/audio_policy_configuration.xml
+64769 765 -1 /vendor/etc/thermal-engine-crosshatch-novr-evt.conf
+25 1561373 -1 /vendor/etc/default-permissions
+64769 541 -1 /vendor/etc/default-permissions/default-permissions.xml
+25 1561375 -1 /vendor/etc/perf
+64769 645 -1 /vendor/etc/perf/commonresourceconfigs.xml
+25 1561377 -1 /vendor/etc/data
+64769 539 -1 /vendor/etc/data/netmgr_config.xml
+64769 538 -1 /vendor/etc/data/dsi_config.xml
+64769 550 -1 /vendor/etc/google_qmi_fw.conf
+25 1561381 -1 /vendor/etc/mdlog
+64769 632 -1 /vendor/etc/mdlog/default.cfg
+64769 633 -1 /vendor/etc/mdlog/diag.conf
+64769 629 -1 /vendor/etc/maxx_conf_b1.ini
+64769 552 -1 /vendor/etc/gps.conf
+25 1561386 -1 /vendor/etc/wifi
+64769 785 -1 /vendor/etc/wifi/p2p_supplicant_overlay.conf
+64769 788 -1 /vendor/etc/wifi/wpa_supplicant_overlay.conf
+64769 786 -1 /vendor/etc/wifi/wifi_concurrency_cfg.txt
+64769 787 -1 /vendor/etc/wifi/wpa_supplicant.conf
+64769 763 -1 /vendor/etc/sound_trigger_mixer_paths_wcd9340.xml
+64769 497 -1 /vendor/etc/audio_policy_configuration_bluetooth_legacy_hal.xml
+64769 701 -1 /vendor/etc/qmi_fw.conf
+64769 641 -1 /vendor/etc/modem_stat.conf
+64769 546 -1 /vendor/etc/fs_config_dirs
+64769 459 -1 /vendor/etc/a2dp_in_audio_policy_configuration.xml
+64769 767 -1 /vendor/etc/thermal-engine-crosshatch-vr-evt.conf
+64769 548 -1 /vendor/etc/fstab.persist
+64769 626 -1 /vendor/etc/libnfc-nxp.conf
+64769 766 -1 /vendor/etc/thermal-engine-crosshatch-novr-prod.conf
+64769 543 -1 /vendor/etc/default_c1.mps
+64769 549 -1 /vendor/etc/fstab.sdm845
+64769 494 -1 /vendor/etc/audio_platform_info_tavil_c1.xml
+25 1561404 -1 /vendor/etc/seccomp_policy
+64769 706 -1 /vendor/etc/seccomp_policy/codec2.vendor.ext.policy
+64769 708 -1 /vendor/etc/seccomp_policy/mediacodec.policy
+64769 707 -1 /vendor/etc/seccomp_policy/configstore@1.1.policy
+64769 628 -1 /vendor/etc/maxx_conf.ini
+64769 455 -1 /vendor/etc/FOSSConfig.xml
+64769 542 -1 /vendor/etc/default_b1.mps
+64769 551 -1 /vendor/etc/gpfspath_oem_config.xml
+25 1517398 -1 /vendor/etc/selinux
+64769 710 -1 /vendor/etc/selinux/plat_pub_versioned.cil
+64769 718 -1 /vendor/etc/selinux/vendor_hwservice_contexts
+64769 722 -1 /vendor/etc/selinux/vendor_sepolicy.cil
+64769 713 -1 /vendor/etc/selinux/precompiled_sepolicy.plat_sepolicy_and_mapping.sha256
+64769 719 -1 /vendor/etc/selinux/vendor_mac_permissions.xml
+64769 720 -1 /vendor/etc/selinux/vendor_property_contexts
+64769 723 -1 /vendor/etc/selinux/vndservice_contexts
+64769 711 -1 /vendor/etc/selinux/plat_sepolicy_vers.txt
+64769 721 -1 /vendor/etc/selinux/vendor_seapp_contexts
+64769 712 -1 /vendor/etc/selinux/precompiled_sepolicy
+64769 714 -1 /vendor/etc/selinux/precompiled_sepolicy.product_sepolicy_and_mapping.sha256
+64769 716 -1 /vendor/etc/selinux/selinux_denial_metadata
+64769 715 -1 /vendor/etc/selinux/precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256
+64769 717 -1 /vendor/etc/selinux/vendor_file_contexts
+64769 634 -1 /vendor/etc/media_codecs.xml
+64769 643 -1 /vendor/etc/passwd
+2054 349 -1 /vendor/etc/public.libraries.txt
+64769 627 -1 /vendor/etc/lowi.conf
+64769 637 -1 /vendor/etc/media_codecs_performance.xml
+25 1561429 -1 /vendor/etc/acdbdata
+25 1561430 -1 /vendor/etc/acdbdata/OEM
+25 1561431 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card
+64769 487 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Handset_cal.acdb
+64769 490 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Speaker_cal.acdb
+64769 484 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Codec_cal.acdb
+64769 489 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Headset_cal.acdb
+64769 483 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Bluetooth_cal.acdb
+64769 491 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/workspaceFile.qwsp
+64769 485 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/General_cal.acdb
+64769 488 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Hdmi_cal.acdb
+64769 486 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Global_cal.acdb
+25 1561441 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card
+64769 467 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Handset_cal.acdb
+64769 470 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Speaker_cal.acdb
+64769 464 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Codec_cal.acdb
+64769 469 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Headset_cal.acdb
+64769 463 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Bluetooth_cal.acdb
+64769 471 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/workspaceFile.qwsp
+64769 465 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/General_cal.acdb
+64769 468 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Hdmi_cal.acdb
+64769 466 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Global_cal.acdb
+25 1561451 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card
+64769 477 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Handset_cal.acdb
+64769 480 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Speaker_cal.acdb
+64769 474 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Codec_cal.acdb
+64769 479 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Headset_cal.acdb
+64769 473 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Bluetooth_cal.acdb
+64769 481 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/workspaceFile.qwsp
+64769 475 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/General_cal.acdb
+64769 478 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Hdmi_cal.acdb
+64769 476 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Global_cal.acdb
+64769 492 -1 /vendor/etc/acdbdata/adsp_avs_config.acdb
+64769 697 -1 /vendor/etc/powerhint.json
+25 1561463 -1 /vendor/etc/camera
+64769 502 -1 /vendor/etc/camera/camera_imu_average_calibration.xml
+64769 498 -1 /vendor/etc/audio_policy_volumes.xml
+64769 640 -1 /vendor/etc/mkshrc
+64769 457 -1 /vendor/etc/NOTICE.xml.gz
+64769 623 -1 /vendor/etc/init.insmod.cfg
+64769 624 -1 /vendor/etc/izat.conf
+64769 555 -1 /vendor/etc/hearing_aid_audio_policy_configuration.xml
+64769 554 -1 /vendor/etc/group
+25 1561472 -1 /vendor/etc/init
+64769 559 -1 /vendor/etc/init/android.hardware.audio@2.0-service.rc
+64769 589 -1 /vendor/etc/init/android.hardware.usb@1.1-service.crosshatch.rc
+64769 615 -1 /vendor/etc/init/vendor.google.radioext@1.0-service.rc
+64769 561 -1 /vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service.fpc.rc
+64769 608 -1 /vendor/etc/init/init.sdm845.chamber.rc
+64769 575 -1 /vendor/etc/init/android.hardware.graphics.composer@2.3-service.rc
+64769 592 -1 /vendor/etc/init/boringssl_self_test.rc
+64769 590 -1 /vendor/etc/init/android.hardware.weaver@1.0-service.citadel.rc
+64769 612 -1 /vendor/etc/init/pixelstats-vendor.crosshatch.rc
+64769 582 -1 /vendor/etc/init/android.hardware.nfc@1.2-service.rc
+64769 610 -1 /vendor/etc/init/init.tcpdump.rc
+64769 621 -1 /vendor/etc/init/vendor_flash_recovery.rc
+64769 568 -1 /vendor/etc/init/android.hardware.contexthub@1.0-service.rc
+64769 606 -1 /vendor/etc/init/init-ramdump.rc
+64769 587 -1 /vendor/etc/init/android.hardware.sensors@2.0-service.rc
+64769 573 -1 /vendor/etc/init/android.hardware.gatekeeper@1.0-service-qti.rc
+64769 594 -1 /vendor/etc/init/easelmanagerd.rc
+64769 577 -1 /vendor/etc/init/android.hardware.health@2.0-service.crosshatch.rc
+64769 580 -1 /vendor/etc/init/android.hardware.media.omx@1.0-service.rc
+64769 596 -1 /vendor/etc/init/hostapd.android.rc
+64769 613 -1 /vendor/etc/init/qcrild.rc
+64769 593 -1 /vendor/etc/init/citadeld.rc
+64769 565 -1 /vendor/etc/init/android.hardware.cas@1.1-service.rc
+64769 578 -1 /vendor/etc/init/android.hardware.keymaster@4.0-service-qti.rc
+64769 617 -1 /vendor/etc/init/vendor.google.wireless_charger@1.0-service.rc
+64769 558 -1 /vendor/etc/init/android.hardware.atrace@1.0-service.pixel.rc
+64769 595 -1 /vendor/etc/init/hardware.google.light@1.0-service.rc
+64769 569 -1 /vendor/etc/init/android.hardware.drm@1.0-service.rc
+64769 557 -1 /vendor/etc/init/PaintboxDriver.rc
+64769 609 -1 /vendor/etc/init/init.sdm845.wlc.rc
+64769 566 -1 /vendor/etc/init/android.hardware.configstore@1.1-service.rc
+64769 586 -1 /vendor/etc/init/android.hardware.secure_element@1.1-service-disabled.rc
+64769 607 -1 /vendor/etc/init/init-ramoops.rc
+64769 563 -1 /vendor/etc/init/android.hardware.boot@1.0-service.rc
+64769 571 -1 /vendor/etc/init/android.hardware.drm@1.2-service.widevine.rc
+64769 564 -1 /vendor/etc/init/android.hardware.camera.provider@2.4-service_64.rc
+64769 611 -1 /vendor/etc/init/init_citadel.rc
+64769 620 -1 /vendor/etc/init/vendor.qti.media.c2@1.0-service.rc
+64769 622 -1 /vendor/etc/init/vndservicemanager.rc
+25 1561512 -1 /vendor/etc/init/hw
+64769 603 -1 /vendor/etc/init/hw/init.sdm845.power.rc
+64769 599 -1 /vendor/etc/init/hw/init.crosshatch.rc
+64769 598 -1 /vendor/etc/init/hw/init.blueline.rc
+64769 601 -1 /vendor/etc/init/hw/init.sdm845.logging.rc
+64769 602 -1 /vendor/etc/init/hw/init.sdm845.mpssrfs.rc
+64769 605 -1 /vendor/etc/init/hw/init.sdm845.usb.rc
+64769 604 -1 /vendor/etc/init/hw/init.sdm845.rc
+64769 600 -1 /vendor/etc/init/hw/init.sdm845.diag.rc
+64769 574 -1 /vendor/etc/init/android.hardware.gnss@1.1-service-qti.rc
+64769 576 -1 /vendor/etc/init/android.hardware.health.storage@1.0-service.rc
+64769 560 -1 /vendor/etc/init/android.hardware.authsecret@1.0-service.citadel.rc
+64769 581 -1 /vendor/etc/init/android.hardware.neuralnetworks@1.2-service-qti.rc
+64769 591 -1 /vendor/etc/init/android.hardware.wifi.supplicant-service.rc
+64769 572 -1 /vendor/etc/init/android.hardware.dumpstate@1.0-service.crosshatch.rc
+64769 584 -1 /vendor/etc/init/android.hardware.power.stats@1.0-service.pixel.rc
+64769 570 -1 /vendor/etc/init/android.hardware.drm@1.2-service.clearkey.rc
+64769 579 -1 /vendor/etc/init/android.hardware.keymaster@4.0-service.citadel.rc
+64769 618 -1 /vendor/etc/init/vendor.qti.hardware.display.allocator@1.0-service.rc
+64769 585 -1 /vendor/etc/init/android.hardware.power@1.3-service.pixel-libperfmgr.rc
+64769 619 -1 /vendor/etc/init/vendor.qti.hardware.tui_comm@1.0-service-qti.rc
+64769 588 -1 /vendor/etc/init/android.hardware.thermal@2.0-service.pixel.rc
+64769 562 -1 /vendor/etc/init/android.hardware.bluetooth@1.0-service-qti.rc
+64769 616 -1 /vendor/etc/init/vendor.google.wifi_ext@1.0-service.rc
+64769 567 -1 /vendor/etc/init/android.hardware.confirmationui@1.0-service-crosshatch.rc
+64769 614 -1 /vendor/etc/init/small_hals.crosshatch-service.rc
+64769 583 -1 /vendor/etc/init/android.hardware.oemlock@1.0-service.citadel.rc
+64769 768 -1 /vendor/etc/thermal-engine-crosshatch-vr-prod.conf
+64769 544 -1 /vendor/etc/default_volume_tables.xml
+64769 547 -1 /vendor/etc/fs_config_files
+64769 639 -1 /vendor/etc/mixer_paths_tavil_c1.xml
+64769 553 -1 /vendor/etc/graphite_ipc_platform_info.xml
+25 1561544 -1 /vendor/etc/sensors
+64769 762 -1 /vendor/etc/sensors/sensor_def_qcomdev.conf
+64769 725 -1 /vendor/etc/sensors/hals.conf
+25 1561547 -1 /vendor/etc/sensors/registry
+64769 727 -1 /vendor/etc/sensors/registry/b1c1_bmp380_0.json
+64769 732 -1 /vendor/etc/sensors/registry/b1c1_max11261_0.json
+64769 745 -1 /vendor/etc/sensors/registry/c1_touch_gesture_0.json
+64769 747 -1 /vendor/etc/sensors/registry/sns_basic_gestures.json
+64769 730 -1 /vendor/etc/sensors/registry/b1c1_camera_vsync_2.json
+64769 737 -1 /vendor/etc/sensors/registry/bmp380_0.json
+64769 751 -1 /vendor/etc/sensors/registry/sns_distance_bound.json
+64769 750 -1 /vendor/etc/sensors/registry/sns_diag_filter.json
+64769 746 -1 /vendor/etc/sensors/registry/lis2mdl_0.json
+64769 755 -1 /vendor/etc/sensors/registry/sns_gyro_cal.json
+64769 752 -1 /vendor/etc/sensors/registry/sns_facing.json
+64769 754 -1 /vendor/etc/sensors/registry/sns_geomag_rv.json
+64769 739 -1 /vendor/etc/sensors/registry/c1_lis2mdl_0.json
+64769 734 -1 /vendor/etc/sensors/registry/b1c1_max11261_rev1_0.json
+64769 757 -1 /vendor/etc/sensors/registry/sns_rmd.json
+64769 758 -1 /vendor/etc/sensors/registry/sns_rotv.json
+64769 733 -1 /vendor/etc/sensors/registry/b1c1_max11261_no_pullup.json
+64769 738 -1 /vendor/etc/sensors/registry/c1_bmi160_0.json
+64769 744 -1 /vendor/etc/sensors/registry/c1_tmd2725_0.json
+64769 728 -1 /vendor/etc/sensors/registry/b1c1_camera_vsync_0.json
+64769 756 -1 /vendor/etc/sensors/registry/sns_pedometer.json
+64769 742 -1 /vendor/etc/sensors/registry/c1_sx932x_0.json
+64769 736 -1 /vendor/etc/sensors/registry/bmi160_0.json
+64769 749 -1 /vendor/etc/sensors/registry/sns_device_orient.json
+64769 753 -1 /vendor/etc/sensors/registry/sns_fmv.json
+64769 760 -1 /vendor/etc/sensors/registry/sx932x_0.json
+64769 731 -1 /vendor/etc/sensors/registry/b1c1_dev2_bmi160_0.json
+64769 743 -1 /vendor/etc/sensors/registry/c1_sx932x_0_no_pullup.json
+64769 759 -1 /vendor/etc/sensors/registry/sns_smd.json
+64769 735 -1 /vendor/etc/sensors/registry/b1c1_unused_gpio.json
+64769 761 -1 /vendor/etc/sensors/registry/tmd2725_0.json
+64769 740 -1 /vendor/etc/sensors/registry/c1_lis2mdl_0_proto.json
+64769 748 -1 /vendor/etc/sensors/registry/sns_cm.json
+64769 741 -1 /vendor/etc/sensors/registry/c1_proto_bmi160_0.json
+64769 729 -1 /vendor/etc/sensors/registry/b1c1_camera_vsync_1.json
+2054 351 -1 /vendor/etc/sensors/sns_reg_config
+64769 493 -1 /vendor/etc/audio_effects.xml
+64769 638 -1 /vendor/etc/media_profiles_V1_0.xml
+64769 496 -1 /vendor/etc/audio_policy_configuration_a2dp_offload_disabled.xml
+64769 456 -1 /vendor/etc/IPACM_cfg.xml
+25 1561588 -1 /vendor/etc/cne
+25 1561589 -1 /vendor/etc/cne/wqeclient
+25 1561590 -1 /vendor/etc/cne/wqeclient/ATT
+64769 510 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile3.xml
+64769 513 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile6.xml
+64769 508 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile1.xml
+64769 512 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile5.xml
+64769 509 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile2.xml
+64769 511 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile4.xml
+25 1561597 -1 /vendor/etc/cne/wqeclient/VZW
+64769 536 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile6.xml
+64769 535 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile5.xml
+64769 532 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile2.xml
+64769 531 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile1.xml
+64769 534 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile4.xml
+64769 533 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile3.xml
+25 1561604 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE
+64769 516 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile2.xml
+64769 517 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile3.xml
+64769 518 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile4.xml
+64769 515 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile1.xml
+64769 520 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile6.xml
+64769 519 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile5.xml
+64769 521 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile7.xml
+25 1561612 -1 /vendor/etc/cne/wqeclient/ROW
+64769 529 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile7.xml
+64769 526 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile4.xml
+64769 528 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile6.xml
+64769 527 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile5.xml
+64769 523 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile1.xml
+64769 525 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile3.xml
+64769 524 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile2.xml
+64769 635 -1 /vendor/etc/media_codecs_c2.xml
+64769 702 -1 /vendor/etc/r_submix_audio_policy_configuration.xml
+64769 769 -1 /vendor/etc/thermal_info_config.json
+64769 636 -1 /vendor/etc/media_codecs_omx.xml
+64769 500 -1 /vendor/etc/bluetooth_hearing_aid_audio_policy_configuration.xml
+64769 545 -1 /vendor/etc/flp.conf
+25 1561626 -1 /vendor/etc/vintf
+64769 773 -1 /vendor/etc/vintf/compatibility_matrix.xml
+25 1561628 -1 /vendor/etc/vintf/manifest
+64769 777 -1 /vendor/etc/vintf/manifest/android.hardware.power@1.3-service.pixel.xml
+64769 776 -1 /vendor/etc/vintf/manifest/android.hardware.cas@1.1-service.xml
+64769 778 -1 /vendor/etc/vintf/manifest/android.hardware.thermal@2.0-service.pixel.xml
+64769 775 -1 /vendor/etc/vintf/manifest/android.hardware.atrace@1.0-service.pixel.xml
+64769 781 -1 /vendor/etc/vintf/manifest/manifest_wifi_ext.xml
+64769 780 -1 /vendor/etc/vintf/manifest/manifest_android.hardware.health.storage@1.0.xml
+64769 782 -1 /vendor/etc/vintf/manifest/small_hals.crosshatch-service.xml
+64769 779 -1 /vendor/etc/vintf/manifest/manifest.xml
+64769 783 -1 /vendor/etc/vintf/manifest.xml
+64769 625 -1 /vendor/etc/libese-nxp.conf
+64769 458 -1 /vendor/etc/a2dp_audio_policy_configuration.xml
+25 1561640 -1 /vendor/radio
+25 1561641 -1 /vendor/radio/qcril_database
+25 1561642 -1 /vendor/radio/qcril_database/upgrade
+64769 1963 -1 /vendor/radio/qcril_database/upgrade/5_recheck_ecc_setting.sql
+64769 1958 -1 /vendor/radio/qcril_database/upgrade/1_version_intro.sql
+64769 1966 -1 /vendor/radio/qcril_database/upgrade/8_germany_ecc_110.sql
+64769 1960 -1 /vendor/radio/qcril_database/upgrade/3_version_google_feature.sql
+64769 1956 -1 /vendor/radio/qcril_database/upgrade/0_initial.sql
+64769 1964 -1 /vendor/radio/qcril_database/upgrade/6_remove_unnecessary_entry.sql
+64769 1962 -1 /vendor/radio/qcril_database/upgrade/4_version_google_feature.sql
+64769 1959 -1 /vendor/radio/qcril_database/upgrade/2_version_add_wps_config.sql
+64769 1961 -1 /vendor/radio/qcril_database/upgrade/3_version_update_wps_config.sql
+64769 1957 -1 /vendor/radio/qcril_database/upgrade/10_remove_germany_hard_ecc_110.sql
+64769 1965 -1 /vendor/radio/qcril_database/upgrade/7_singapore_ecc_995.sql
+64769 1967 -1 /vendor/radio/qcril_database/upgrade/9_remove_germany_ecc_110.sql
+64769 1954 -1 /vendor/radio/qcril_database/qcril.db
+25 1451998 -1 /vendor/media
+64769 1923 -1 /vendor/media/ensemble_fd_model.emd
+64769 1922 -1 /vendor/media/PFFprec_600.emd
+64769 1921 -1 /vendor/media/LMspeed_508.emd
+64772 3 -1 /data
+64772 7 -1 /data/unencrypted
+64772 14 -1 /data/unencrypted/mode
+64772 8 -1 /data/unencrypted/key
+64772 9 -1 /data/unencrypted/key/version
+64772 10 -1 /data/unencrypted/key/secdiscardable
+64772 11 -1 /data/unencrypted/key/stretching
+64772 12 -1 /data/unencrypted/key/keymaster_key_blob
+64772 13 -1 /data/unencrypted/key/encrypted_key
+64772 15 -1 /data/unencrypted/ref
+64772 16 -1 /data/unencrypted/per_boot_ref
+64772 17 -1 /data/bootchart
+64772 18 -1 /data/apex
+64772 19 -1 /data/apex/active
+64772 20 -1 /data/apex/backup
+64772 21 -1 /data/apex/hashtree
+64772 22 -1 /data/apex/sessions
+64772 23 -1 /data/app-staging
+64772 24 -1 /data/misc
+64772 25 -1 /data/misc/recovery
+64772 26 -1 /data/misc/recovery/ro.build.fingerprint
+64772 27 -1 /data/misc/recovery/proc
+64772 28 -1 /data/misc/recovery/proc/version
+64772 1921 -1 /data/misc/recovery/proc/version.1
+64772 1920 -1 /data/misc/recovery/ro.build.fingerprint.1
+64772 29 -1 /data/misc/bluedroid
+64772 3551 -1 /data/misc/bluedroid/bt_config.conf
+64772 30 -1 /data/misc/bluetooth
+64772 31 -1 /data/misc/bluetooth/logs
+64772 32 -1 /data/misc/keystore
+64772 208 -1 /data/misc/keystore/user_0
+64772 3339 -1 /data/misc/keystore/user_0/1073_USRPKEY_WifiConfigStore+^xml+^data+]integrity+]checker+]key
+64772 3341 -1 /data/misc/keystore/user_0/.1073_chr_USRPKEY_WifiConfigStore+^xml+^data+]integrity+]checker+]key
+64772 209 -1 /data/misc/keystore/.metadata
+64772 33 -1 /data/misc/gatekeeper
+64772 3366 -1 /data/misc/gatekeeper/.coldboot
+64772 34 -1 /data/misc/keychain
+64772 35 -1 /data/misc/net
+64772 530 -1 /data/misc/net/rt_tables
+64772 9725 -1 /data/misc/net/netd_pid
+64772 36 -1 /data/misc/radio
+64772 37 -1 /data/misc/sms
+64772 38 -1 /data/misc/carrierid
+64772 39 -1 /data/misc/apns
+64772 40 -1 /data/misc/zoneinfo
+64772 41 -1 /data/misc/network_watchlist
+64772 42 -1 /data/misc/textclassifier
+64772 43 -1 /data/misc/vpn
+64772 44 -1 /data/misc/shared_relro
+64772 6593 -1 /data/misc/shared_relro/libwebviewchromium32.relro
+64772 6595 -1 /data/misc/shared_relro/libwebviewchromium64.relro
+64772 45 -1 /data/misc/systemkeys
+64772 46 -1 /data/misc/wifi
+64772 47 -1 /data/misc/wifi/sockets
+64772 48 -1 /data/misc/wifi/wpa_supplicant
+64772 2733 -1 /data/misc/wifi/softap.conf
+64772 1555 -1 /data/misc/wifi/WifiConfigStore.xml
+64772 49 -1 /data/misc/ethernet
+64772 50 -1 /data/misc/dhcp
+64772 51 -1 /data/misc/user
+64772 491 -1 /data/misc/user/0
+64772 53 -1 /data/misc/media
+64772 54 -1 /data/misc/audioserver
+64772 55 -1 /data/misc/cameraserver
+64772 56 -1 /data/misc/vold
+64772 116 -1 /data/misc/vold/user_keys
+64772 117 -1 /data/misc/vold/user_keys/ce
+64772 119 -1 /data/misc/vold/user_keys/ce/0
+64772 120 -1 /data/misc/vold/user_keys/ce/0/current
+64772 121 -1 /data/misc/vold/user_keys/ce/0/current/version
+64772 122 -1 /data/misc/vold/user_keys/ce/0/current/secdiscardable
+64772 123 -1 /data/misc/vold/user_keys/ce/0/current/stretching
+64772 124 -1 /data/misc/vold/user_keys/ce/0/current/keymaster_key_blob
+64772 125 -1 /data/misc/vold/user_keys/ce/0/current/encrypted_key
+64772 118 -1 /data/misc/vold/user_keys/de
+64772 126 -1 /data/misc/vold/user_keys/de/0
+64772 127 -1 /data/misc/vold/user_keys/de/0/version
+64772 128 -1 /data/misc/vold/user_keys/de/0/secdiscardable
+64772 129 -1 /data/misc/vold/user_keys/de/0/stretching
+64772 130 -1 /data/misc/vold/user_keys/de/0/keymaster_key_blob
+64772 131 -1 /data/misc/vold/user_keys/de/0/encrypted_key
+64772 57 -1 /data/misc/boottrace
+64772 58 -1 /data/misc/update_engine
+64772 626 -1 /data/misc/update_engine/prefs
+64772 627 -1 /data/misc/update_engine/prefs/boot-id
+64772 628 -1 /data/misc/update_engine/prefs/previous-version
+64772 2187 -1 /data/misc/update_engine/prefs/update-state-next-operation
+64772 2188 -1 /data/misc/update_engine/prefs/update-state-next-data-offset
+64772 2189 -1 /data/misc/update_engine/prefs/update-state-next-data-length
+64772 2190 -1 /data/misc/update_engine/prefs/update-state-sha-256-context
+64772 2194 -1 /data/misc/update_engine/prefs/update-state-signed-sha-256-context
+64772 2195 -1 /data/misc/update_engine/prefs/update-state-signature-blob
+64772 2487 -1 /data/misc/update_engine/prefs/manifest-metadata-size
+64772 2488 -1 /data/misc/update_engine/prefs/manifest-signature-size
+64772 2489 -1 /data/misc/update_engine/prefs/resumed-update-failures
+64772 59 -1 /data/misc/update_engine_log
+64772 617 -1 /data/misc/update_engine_log/update_engine.20191013-225155
+64772 2185 -1 /data/misc/update_engine_log/update_engine.20191013-225609
+64772 6568 -1 /data/misc/update_engine_log/update_engine.20191013-225834
+64772 60 -1 /data/misc/trace
+64772 61 -1 /data/misc/wmtrace
+64772 62 -1 /data/misc/profiles
+64772 63 -1 /data/misc/profiles/cur
+64772 133 -1 /data/misc/profiles/cur/0
+64772 1667 -1 /data/misc/profiles/cur/0/com.android.providers.telephony
+64772 1669 -1 /data/misc/profiles/cur/0/com.android.providers.telephony/primary.prof
+64772 1673 -1 /data/misc/profiles/cur/0/com.quicinc.cne.CNEService
+64772 1675 -1 /data/misc/profiles/cur/0/com.quicinc.cne.CNEService/primary.prof
+64772 1679 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.uceShimService
+64772 1681 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.uceShimService/primary.prof
+64772 1685 -1 /data/misc/profiles/cur/0/com.android.mms.service
+64772 1687 -1 /data/misc/profiles/cur/0/com.android.mms.service/primary.prof
+64772 1691 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.telephonyservice
+64772 1693 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.telephonyservice/primary.prof
+64772 1697 -1 /data/misc/profiles/cur/0/android
+64772 1702 -1 /data/misc/profiles/cur/0/com.android.ons
+64772 1704 -1 /data/misc/profiles/cur/0/com.android.ons/primary.prof
+64772 1708 -1 /data/misc/profiles/cur/0/org.codeaurora.ims
+64772 1710 -1 /data/misc/profiles/cur/0/org.codeaurora.ims/primary.prof
+64772 1714 -1 /data/misc/profiles/cur/0/com.qualcomm.qcrilmsgtunnel
+64772 1716 -1 /data/misc/profiles/cur/0/com.qualcomm.qcrilmsgtunnel/primary.prof
+64772 1720 -1 /data/misc/profiles/cur/0/com.android.providers.settings
+64772 1722 -1 /data/misc/profiles/cur/0/com.android.providers.settings/primary.prof
+64772 1726 -1 /data/misc/profiles/cur/0/com.android.inputdevices
+64772 1728 -1 /data/misc/profiles/cur/0/com.android.inputdevices/primary.prof
+64772 3787 -1 /data/misc/profiles/cur/0/com.google.android.ext.services
+64772 3789 -1 /data/misc/profiles/cur/0/com.google.android.ext.services/primary.prof
+64772 1744 -1 /data/misc/profiles/cur/0/com.android.server.telecom
+64772 1746 -1 /data/misc/profiles/cur/0/com.android.server.telecom/primary.prof
+64772 1750 -1 /data/misc/profiles/cur/0/com.android.service.ims
+64772 1752 -1 /data/misc/profiles/cur/0/com.android.service.ims/primary.prof
+64772 3793 -1 /data/misc/profiles/cur/0/com.google.android.ext.shared
+64772 3795 -1 /data/misc/profiles/cur/0/com.google.android.ext.shared/primary.prof
+64772 3856 -1 /data/misc/profiles/cur/0/com.vzw.apnlib
+64772 3858 -1 /data/misc/profiles/cur/0/com.vzw.apnlib/primary.prof
+64772 1768 -1 /data/misc/profiles/cur/0/com.android.proxyhandler
+64772 1770 -1 /data/misc/profiles/cur/0/com.android.proxyhandler/primary.prof
+64772 3799 -1 /data/misc/profiles/cur/0/com.google.android.grilservice
+64772 3801 -1 /data/misc/profiles/cur/0/com.google.android.grilservice/primary.prof
+64772 1780 -1 /data/misc/profiles/cur/0/com.android.service.ims.presence
+64772 1782 -1 /data/misc/profiles/cur/0/com.android.service.ims.presence/primary.prof
+64772 1786 -1 /data/misc/profiles/cur/0/com.android.settings
+64772 1788 -1 /data/misc/profiles/cur/0/com.android.settings/primary.prof
+64772 1792 -1 /data/misc/profiles/cur/0/com.android.phone
+64772 1794 -1 /data/misc/profiles/cur/0/com.android.phone/primary.prof
+64772 1798 -1 /data/misc/profiles/cur/0/com.android.shell
+64772 1800 -1 /data/misc/profiles/cur/0/com.android.shell/primary.prof
+64772 1804 -1 /data/misc/profiles/cur/0/com.android.location.fused
+64772 1806 -1 /data/misc/profiles/cur/0/com.android.location.fused/primary.prof
+64772 1810 -1 /data/misc/profiles/cur/0/com.android.systemui
+64772 1812 -1 /data/misc/profiles/cur/0/com.android.systemui/primary.prof
+64772 3811 -1 /data/misc/profiles/cur/0/com.google.android.dialer
+64772 3813 -1 /data/misc/profiles/cur/0/com.google.android.dialer/primary.prof
+64772 1827 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.noCutout
+64772 1832 -1 /data/misc/profiles/cur/0/com.android.cts.priv.ctsshim
+64772 1837 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.corner
+64772 1842 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.double
+64772 1847 -1 /data/misc/profiles/cur/0/com.android.dynsystem
+64772 1849 -1 /data/misc/profiles/cur/0/com.android.dynsystem/primary.prof
+64772 1853 -1 /data/misc/profiles/cur/0/com.android.providers.calendar
+64772 1855 -1 /data/misc/profiles/cur/0/com.android.providers.calendar/primary.prof
+64772 1859 -1 /data/misc/profiles/cur/0/com.android.providers.media
+64772 1861 -1 /data/misc/profiles/cur/0/com.android.providers.media/primary.prof
+64772 1865 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural_wide_back
+64772 3817 -1 /data/misc/profiles/cur/0/com.android.server.wifistack
+64772 3819 -1 /data/misc/profiles/cur/0/com.android.server.wifistack/primary.prof
+64772 1876 -1 /data/misc/profiles/cur/0/com.android.theme.color.cinnamon
+64772 1881 -1 /data/misc/profiles/cur/0/com.android.server.backup.encryption
+64772 1883 -1 /data/misc/profiles/cur/0/com.android.server.backup.encryption/primary.prof
+64772 1887 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.systemui
+64772 3838 -1 /data/misc/profiles/cur/0/com.google.omadm.trigger
+64772 3840 -1 /data/misc/profiles/cur/0/com.google.omadm.trigger/primary.prof
+64772 1898 -1 /data/misc/profiles/cur/0/com.android.externalstorage
+64772 1900 -1 /data/misc/profiles/cur/0/com.android.externalstorage/primary.prof
+64772 1904 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteclient
+64772 1906 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteclient/primary.prof
+64772 1910 -1 /data/misc/profiles/cur/0/com.android.htmlviewer
+64772 1912 -1 /data/misc/profiles/cur/0/com.android.htmlviewer/primary.prof
+64772 1916 -1 /data/misc/profiles/cur/0/com.android.companiondevicemanager
+64772 1918 -1 /data/misc/profiles/cur/0/com.android.companiondevicemanager/primary.prof
+64772 3805 -1 /data/misc/profiles/cur/0/com.google.android.permissioncontroller
+64772 3807 -1 /data/misc/profiles/cur/0/com.google.android.permissioncontroller/primary.prof
+64772 3823 -1 /data/misc/profiles/cur/0/com.google.android.documentsui
+64772 3825 -1 /data/misc/profiles/cur/0/com.google.android.documentsui/primary.prof
+64772 3892 -1 /data/misc/profiles/cur/0/com.qualcomm.ltebc_vzw
+64772 3894 -1 /data/misc/profiles/cur/0/com.qualcomm.ltebc_vzw/primary.prof
+64772 1940 -1 /data/misc/profiles/cur/0/com.android.providers.downloads
+64772 1942 -1 /data/misc/profiles/cur/0/com.android.providers.downloads/primary.prof
+64772 3904 -1 /data/misc/profiles/cur/0/com.google.euiccpixel
+64772 3906 -1 /data/misc/profiles/cur/0/com.google.euiccpixel/primary.prof
+64772 1952 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.android
+64772 1957 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.themepicker
+64772 1962 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteserver
+64772 1964 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteserver/primary.prof
+64772 1968 -1 /data/misc/profiles/cur/0/com.android.timezone.updater
+64772 1970 -1 /data/misc/profiles/cur/0/com.android.timezone.updater/primary.prof
+64772 1974 -1 /data/misc/profiles/cur/0/com.android.providers.downloads.ui
+64772 1976 -1 /data/misc/profiles/cur/0/com.android.providers.downloads.ui/primary.prof
+64772 1980 -1 /data/misc/profiles/cur/0/com.android.pacprocessor
+64772 1982 -1 /data/misc/profiles/cur/0/com.android.pacprocessor/primary.prof
+64772 1986 -1 /data/misc/profiles/cur/0/com.android.simappdialog
+64772 1988 -1 /data/misc/profiles/cur/0/com.android.simappdialog/primary.prof
+64772 3963 -1 /data/misc/profiles/cur/0/com.breel.wallpapers18
+64772 3965 -1 /data/misc/profiles/cur/0/com.breel.wallpapers18/primary.prof
+64772 1998 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.tall
+64772 3844 -1 /data/misc/profiles/cur/0/com.google.android.carriersetup
+64772 3846 -1 /data/misc/profiles/cur/0/com.google.android.carriersetup/primary.prof
+64772 2008 -1 /data/misc/profiles/cur/0/com.android.certinstaller
+64772 2010 -1 /data/misc/profiles/cur/0/com.android.certinstaller/primary.prof
+64772 2014 -1 /data/misc/profiles/cur/0/com.android.theme.color.black
+64772 3850 -1 /data/misc/profiles/cur/0/com.google.android.youtube
+64772 3852 -1 /data/misc/profiles/cur/0/com.google.android.youtube/primary.prof
+64772 2025 -1 /data/misc/profiles/cur/0/com.android.theme.color.green
+64772 2030 -1 /data/misc/profiles/cur/0/com.android.theme.color.ocean
+64772 2035 -1 /data/misc/profiles/cur/0/com.android.theme.color.space
+64772 2040 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.threebutton
+64772 2045 -1 /data/misc/profiles/cur/0/com.qti.qualcomm.datastatusnotification
+64772 2047 -1 /data/misc/profiles/cur/0/com.qti.qualcomm.datastatusnotification/primary.prof
+64772 3829 -1 /data/misc/profiles/cur/0/com.google.android.inputmethod.latin
+64772 3831 -1 /data/misc/profiles/cur/0/com.google.android.inputmethod.latin/primary.prof
+64772 2063 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.launcher
+64772 2068 -1 /data/misc/profiles/cur/0/com.android.egg
+64772 2070 -1 /data/misc/profiles/cur/0/com.android.egg/primary.prof
+64772 2074 -1 /data/misc/profiles/cur/0/com.android.mtp
+64772 2076 -1 /data/misc/profiles/cur/0/com.android.mtp/primary.prof
+64772 2080 -1 /data/misc/profiles/cur/0/com.android.nfc
+64772 2082 -1 /data/misc/profiles/cur/0/com.android.nfc/primary.prof
+64772 2086 -1 /data/misc/profiles/cur/0/com.android.stk
+64772 2088 -1 /data/misc/profiles/cur/0/com.android.stk/primary.prof
+64772 3993 -1 /data/misc/profiles/cur/0/com.google.ar.core
+64772 3995 -1 /data/misc/profiles/cur/0/com.google.ar.core/primary.prof
+64772 2098 -1 /data/misc/profiles/cur/0/com.android.backupconfirm
+64772 2100 -1 /data/misc/profiles/cur/0/com.android.backupconfirm/primary.prof
+64772 3862 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfig2018
+64772 3864 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfig2018/primary.prof
+64772 2111 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_vendor__
+64772 2113 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_vendor__/primary.prof
+64772 2117 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.twobutton
+64772 3999 -1 /data/misc/profiles/cur/0/com.android.vending
+64772 4001 -1 /data/misc/profiles/cur/0/com.android.vending/primary.prof
+64772 2128 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.radioconfiginterface
+64772 2130 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.radioconfiginterface/primary.prof
+64772 2134 -1 /data/misc/profiles/cur/0/com.android.statementservice
+64772 2136 -1 /data/misc/profiles/cur/0/com.android.statementservice/primary.prof
+64772 2140 -1 /data/misc/profiles/cur/0/com.android.hotspot2
+64772 2142 -1 /data/misc/profiles/cur/0/com.android.hotspot2/primary.prof
+64772 3868 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.connmo
+64772 3870 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.connmo/primary.prof
+64772 2159 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural_extra_wide_back
+64772 2164 -1 /data/misc/profiles/cur/0/com.android.sharedstoragebackup
+64772 2166 -1 /data/misc/profiles/cur/0/com.android.sharedstoragebackup/primary.prof
+64772 2170 -1 /data/misc/profiles/cur/0/com.android.printspooler
+64772 2172 -1 /data/misc/profiles/cur/0/com.android.printspooler/primary.prof
+64772 2176 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.settings
+64772 3874 -1 /data/misc/profiles/cur/0/com.google.android.googlequicksearchbox
+64772 3876 -1 /data/misc/profiles/cur/0/com.google.android.googlequicksearchbox/primary.prof
+64772 3940 -1 /data/misc/profiles/cur/0/com.verizon.obdm_permissions
+64772 2200 -1 /data/misc/profiles/cur/0/com.android.dreams.basic
+64772 2202 -1 /data/misc/profiles/cur/0/com.android.dreams.basic/primary.prof
+64772 4040 -1 /data/misc/profiles/cur/0/com.google.android.as
+64772 4042 -1 /data/misc/profiles/cur/0/com.google.android.as/primary.prof
+64772 2212 -1 /data/misc/profiles/cur/0/com.android.se
+64772 2214 -1 /data/misc/profiles/cur/0/com.android.se/primary.prof
+64772 2219 -1 /data/misc/profiles/cur/0/com.android.bips
+64772 2221 -1 /data/misc/profiles/cur/0/com.android.bips/primary.prof
+64772 2225 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.settings
+64772 2230 -1 /data/misc/profiles/cur/0/com.qti.xdivert
+64772 2232 -1 /data/misc/profiles/cur/0/com.qti.xdivert/primary.prof
+64772 2236 -1 /data/misc/profiles/cur/0/com.android.musicfx
+64772 2238 -1 /data/misc/profiles/cur/0/com.android.musicfx/primary.prof
+64772 2242 -1 /data/misc/profiles/cur/0/com.android.bluetooth.auto_generated_rro_vendor__
+64772 2244 -1 /data/misc/profiles/cur/0/com.android.bluetooth.auto_generated_rro_vendor__/primary.prof
+64772 2248 -1 /data/misc/profiles/cur/0/com.android.cellbroadcastreceiver
+64772 2250 -1 /data/misc/profiles/cur/0/com.android.cellbroadcastreceiver/primary.prof
+64772 2254 -1 /data/misc/profiles/cur/0/android.telephony.overlay.cmcc
+64772 2256 -1 /data/misc/profiles/cur/0/android.telephony.overlay.cmcc/primary.prof
+64772 2261 -1 /data/misc/profiles/cur/0/com.android.theme.icon.teardrop
+64772 3957 -1 /data/misc/profiles/cur/0/com.google.android.soundpicker
+64772 3959 -1 /data/misc/profiles/cur/0/com.google.android.soundpicker/primary.prof
+64772 2272 -1 /data/misc/profiles/cur/0/com.android.keychain
+64772 2274 -1 /data/misc/profiles/cur/0/com.android.keychain/primary.prof
+64772 3886 -1 /data/misc/profiles/cur/0/com.google.android.onetimeinitializer
+64772 3888 -1 /data/misc/profiles/cur/0/com.google.android.onetimeinitializer/primary.prof
+64772 4046 -1 /data/misc/profiles/cur/0/com.google.android.gm
+64772 4048 -1 /data/misc/profiles/cur/0/com.google.android.gm/primary.prof
+64772 2296 -1 /data/misc/profiles/cur/0/com.android.calllogbackup
+64772 2298 -1 /data/misc/profiles/cur/0/com.android.calllogbackup/primary.prof
+64772 2291 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.systemui
+64772 2302 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo
+64772 2304 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo/primary.prof
+64772 2331 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.android
+64772 2354 -1 /data/misc/profiles/cur/0/com.android.soundpicker
+64772 2356 -1 /data/misc/profiles/cur/0/com.android.soundpicker/primary.prof
+64772 3898 -1 /data/misc/profiles/cur/0/com.google.android.apps.diagnosticstool
+64772 3900 -1 /data/misc/profiles/cur/0/com.google.android.apps.diagnosticstool/primary.prof
+64772 3975 -1 /data/misc/profiles/cur/0/com.google.android.configupdater
+64772 3977 -1 /data/misc/profiles/cur/0/com.google.android.configupdater/primary.prof
+64772 2372 -1 /data/misc/profiles/cur/0/com.android.providers.partnerbookmarks
+64772 2374 -1 /data/misc/profiles/cur/0/com.android.providers.partnerbookmarks/primary.prof
+64772 4064 -1 /data/misc/profiles/cur/0/com.android.ramdump
+64772 4066 -1 /data/misc/profiles/cur/0/com.android.ramdump/primary.prof
+64772 2448 -1 /data/misc/profiles/cur/0/com.qti.diagservices
+64772 2450 -1 /data/misc/profiles/cur/0/com.qti.diagservices/primary.prof
+64772 2460 -1 /data/misc/profiles/cur/0/com.android.vpndialogs
+64772 2462 -1 /data/misc/profiles/cur/0/com.android.vpndialogs/primary.prof
+64772 4100 -1 /data/misc/profiles/cur/0/com.google.android.angle
+64772 4102 -1 /data/misc/profiles/cur/0/com.google.android.angle/primary.prof
+64772 2472 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.themepicker
+64772 2484 -1 /data/misc/profiles/cur/0/com.android.providers.blockednumber
+64772 2486 -1 /data/misc/profiles/cur/0/com.android.providers.blockednumber/primary.prof
+64772 2496 -1 /data/misc/profiles/cur/0/com.android.providers.userdictionary
+64772 2498 -1 /data/misc/profiles/cur/0/com.android.providers.userdictionary/primary.prof
+64772 4112 -1 /data/misc/profiles/cur/0/com.google.android.music
+64772 4114 -1 /data/misc/profiles/cur/0/com.google.android.music/primary.prof
+64772 2525 -1 /data/misc/profiles/cur/0/com.android.theme.color.purple
+64772 2530 -1 /data/misc/profiles/cur/0/com.android.bluetoothmidiservice
+64772 2532 -1 /data/misc/profiles/cur/0/com.android.bluetoothmidiservice/primary.prof
+64772 2536 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.confdialer
+64772 2538 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.confdialer/primary.prof
+64772 2542 -1 /data/misc/profiles/cur/0/com.android.traceur
+64772 2544 -1 /data/misc/profiles/cur/0/com.android.traceur/primary.prof
+64772 2553 -1 /data/misc/profiles/cur/0/com.android.bluetooth
+64772 2555 -1 /data/misc/profiles/cur/0/com.android.bluetooth/primary.prof
+64772 2566 -1 /data/misc/profiles/cur/0/com.qualcomm.atfwd
+64772 2568 -1 /data/misc/profiles/cur/0/com.qualcomm.atfwd/primary.prof
+64772 4034 -1 /data/misc/profiles/cur/0/com.google.android.deskclock
+64772 4036 -1 /data/misc/profiles/cur/0/com.google.android.deskclock/primary.prof
+64772 2579 -1 /data/misc/profiles/cur/0/com.qualcomm.embms
+64772 2581 -1 /data/misc/profiles/cur/0/com.qualcomm.embms/primary.prof
+64772 2585 -1 /data/misc/profiles/cur/0/com.android.providers.contacts
+64772 2587 -1 /data/misc/profiles/cur/0/com.android.providers.contacts/primary.prof
+64772 2607 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.settings
+64772 3945 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_product__
+64772 3947 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_product__/primary.prof
+64772 3951 -1 /data/misc/profiles/cur/0/com.google.android.apps.messaging
+64772 3953 -1 /data/misc/profiles/cur/0/com.google.android.apps.messaging/primary.prof
+64772 3981 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googlewebview
+64772 3983 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googlewebview/primary.prof
+64772 3987 -1 /data/misc/profiles/cur/0/com.google.android.apps.safetyhub
+64772 3989 -1 /data/misc/profiles/cur/0/com.google.android.apps.safetyhub/primary.prof
+64772 4011 -1 /data/misc/profiles/cur/0/com.google.android.apps.work.oobconfig
+64772 4013 -1 /data/misc/profiles/cur/0/com.google.android.apps.work.oobconfig/primary.prof
+64772 4017 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.xgoogle
+64772 4019 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.xgoogle/primary.prof
+64772 4052 -1 /data/misc/profiles/cur/0/com.google.android.carrier
+64772 4054 -1 /data/misc/profiles/cur/0/com.google.android.carrier/primary.prof
+64772 4070 -1 /data/misc/profiles/cur/0/com.google.intelligence.sense
+64772 4072 -1 /data/misc/profiles/cur/0/com.google.intelligence.sense/primary.prof
+64772 4082 -1 /data/misc/profiles/cur/0/com.google.android.netgrapher
+64772 4084 -1 /data/misc/profiles/cur/0/com.google.android.netgrapher/primary.prof
+64772 4118 -1 /data/misc/profiles/cur/0/com.google.android.volta
+64772 4120 -1 /data/misc/profiles/cur/0/com.google.android.volta/primary.prof
+64772 4124 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.okgoogle
+64772 4126 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.okgoogle/primary.prof
+64772 4130 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.diagmon
+64772 4132 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.diagmon/primary.prof
+64772 4160 -1 /data/misc/profiles/cur/0/com.google.android.apps.wellbeing
+64772 4162 -1 /data/misc/profiles/cur/0/com.google.android.apps.wellbeing/primary.prof
+64772 4178 -1 /data/misc/profiles/cur/0/com.google.android.accessibility.soundamplifier
+64772 4180 -1 /data/misc/profiles/cur/0/com.google.android.accessibility.soundamplifier/primary.prof
+64772 4184 -1 /data/misc/profiles/cur/0/com.google.mds.permissions
+64772 4186 -1 /data/misc/profiles/cur/0/com.google.mds.permissions/primary.prof
+64772 4190 -1 /data/misc/profiles/cur/0/com.google.android.apps.docs
+64772 4192 -1 /data/misc/profiles/cur/0/com.google.android.apps.docs/primary.prof
+64772 4202 -1 /data/misc/profiles/cur/0/com.google.android.apps.tips
+64772 4204 -1 /data/misc/profiles/cur/0/com.google.android.apps.tips/primary.prof
+64772 4213 -1 /data/misc/profiles/cur/0/com.google.android.modulemetadata
+64772 4218 -1 /data/misc/profiles/cur/0/com.google.android.markup
+64772 4220 -1 /data/misc/profiles/cur/0/com.google.android.markup/primary.prof
+64772 4230 -1 /data/misc/profiles/cur/0/com.google.android.apps.carrier.log
+64772 4232 -1 /data/misc/profiles/cur/0/com.google.android.apps.carrier.log/primary.prof
+64772 4236 -1 /data/misc/profiles/cur/0/com.google.android.networkstack
+64772 4238 -1 /data/misc/profiles/cur/0/com.google.android.networkstack/primary.prof
+64772 4242 -1 /data/misc/profiles/cur/0/com.google.android.contacts
+64772 4244 -1 /data/misc/profiles/cur/0/com.google.android.contacts/primary.prof
+64772 4248 -1 /data/misc/profiles/cur/0/com.google.android.syncadapters.contacts
+64772 4250 -1 /data/misc/profiles/cur/0/com.google.android.syncadapters.contacts/primary.prof
+64772 4254 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.themepicker
+64772 4259 -1 /data/misc/profiles/cur/0/com.android.server.telecom.auto_generated_rro_product__
+64772 4261 -1 /data/misc/profiles/cur/0/com.android.server.telecom.auto_generated_rro_product__/primary.prof
+64772 4277 -1 /data/misc/profiles/cur/0/com.android.chrome
+64772 4279 -1 /data/misc/profiles/cur/0/com.android.chrome/primary.prof
+64772 4283 -1 /data/misc/profiles/cur/0/com.android.bips.auto_generated_rro_product__
+64772 4285 -1 /data/misc/profiles/cur/0/com.android.bips.auto_generated_rro_product__/primary.prof
+64772 4300 -1 /data/misc/profiles/cur/0/com.google.android.gms
+64772 4302 -1 /data/misc/profiles/cur/0/com.google.android.gms/primary.prof
+64772 4325 -1 /data/misc/profiles/cur/0/com.google.android.tts
+64772 4327 -1 /data/misc/profiles/cur/0/com.google.android.tts/primary.prof
+64772 4343 -1 /data/misc/profiles/cur/0/com.google.android.apps.wallpaper.nexus
+64772 4354 -1 /data/misc/profiles/cur/0/com.google.android.apps.nexuslauncher
+64772 4356 -1 /data/misc/profiles/cur/0/com.google.android.apps.nexuslauncher/primary.prof
+64772 4360 -1 /data/misc/profiles/cur/0/com.google.RilConfigService
+64772 4362 -1 /data/misc/profiles/cur/0/com.google.RilConfigService/primary.prof
+64772 4366 -1 /data/misc/profiles/cur/0/com.google.SSRestartDetector
+64772 4368 -1 /data/misc/profiles/cur/0/com.google.SSRestartDetector/primary.prof
+64772 4383 -1 /data/misc/profiles/cur/0/com.android.theme.font.rubikrubik
+64772 4388 -1 /data/misc/profiles/cur/0/com.android.providers.contacts.auto_generated_rro_product__
+64772 4390 -1 /data/misc/profiles/cur/0/com.android.providers.contacts.auto_generated_rro_product__/primary.prof
+64772 4394 -1 /data/misc/profiles/cur/0/com.google.android.feedback
+64772 4396 -1 /data/misc/profiles/cur/0/com.google.android.feedback/primary.prof
+64772 4400 -1 /data/misc/profiles/cur/0/com.google.android.printservice.recommendation
+64772 4402 -1 /data/misc/profiles/cur/0/com.google.android.printservice.recommendation/primary.prof
+64772 4412 -1 /data/misc/profiles/cur/0/com.google.android.calendar
+64772 4414 -1 /data/misc/profiles/cur/0/com.google.android.calendar/primary.prof
+64772 4418 -1 /data/misc/profiles/cur/0/com.google.android.apps.internal.betterbug
+64772 4420 -1 /data/misc/profiles/cur/0/com.google.android.apps.internal.betterbug/primary.prof
+64772 4436 -1 /data/misc/profiles/cur/0/com.android.server.wifistack.permissionconfig
+64772 4446 -1 /data/misc/profiles/cur/0/com.google.android.networkstack.permissionconfig
+64772 4448 -1 /data/misc/profiles/cur/0/com.google.android.networkstack.permissionconfig/primary.prof
+64772 4452 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfigcommon
+64772 4454 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfigcommon/primary.prof
+64772 4470 -1 /data/misc/profiles/cur/0/com.google.android.settings.intelligence
+64772 4472 -1 /data/misc/profiles/cur/0/com.google.android.settings.intelligence/primary.prof
+64772 4494 -1 /data/misc/profiles/cur/0/com.google.android.apps.turbo
+64772 4496 -1 /data/misc/profiles/cur/0/com.google.android.apps.turbo/primary.prof
+64772 4519 -1 /data/misc/profiles/cur/0/com.google.android.apps.dreamliner
+64772 4521 -1 /data/misc/profiles/cur/0/com.google.android.apps.dreamliner/primary.prof
+64772 4525 -1 /data/misc/profiles/cur/0/com.google.android.apps.wearables.maestro.companion
+64772 4527 -1 /data/misc/profiles/cur/0/com.google.android.apps.wearables.maestro.companion/primary.prof
+64772 4531 -1 /data/misc/profiles/cur/0/com.google.android.hiddenmenu
+64772 4533 -1 /data/misc/profiles/cur/0/com.google.android.hiddenmenu/primary.prof
+64772 4537 -1 /data/misc/profiles/cur/0/com.google.android.apps.wallpaper
+64772 4539 -1 /data/misc/profiles/cur/0/com.google.android.apps.wallpaper/primary.prof
+64772 4569 -1 /data/misc/profiles/cur/0/com.google.android.gms.location.history
+64772 4571 -1 /data/misc/profiles/cur/0/com.google.android.gms.location.history/primary.prof
+64772 4587 -1 /data/misc/profiles/cur/0/com.qti.ltebc
+64772 4589 -1 /data/misc/profiles/cur/0/com.qti.ltebc/primary.prof
+64772 4599 -1 /data/misc/profiles/cur/0/com.tmobile.planprovider
+64772 4601 -1 /data/misc/profiles/cur/0/com.tmobile.planprovider/primary.prof
+64772 4605 -1 /data/misc/profiles/cur/0/com.google.android.apps.helprtc
+64772 4607 -1 /data/misc/profiles/cur/0/com.google.android.apps.helprtc/primary.prof
+64772 4647 -1 /data/misc/profiles/cur/0/com.google.android.GoogleCamera
+64772 4649 -1 /data/misc/profiles/cur/0/com.google.android.GoogleCamera/primary.prof
+64772 4677 -1 /data/misc/profiles/cur/0/com.google.android.storagemanager
+64772 4679 -1 /data/misc/profiles/cur/0/com.google.android.storagemanager/primary.prof
+64772 2308 -1 /data/misc/profiles/cur/0/com.android.localtransport
+64772 2310 -1 /data/misc/profiles/cur/0/com.android.localtransport/primary.prof
+64772 4029 -1 /data/misc/profiles/cur/0/com.android.theme.font.arvolato
+64772 2320 -1 /data/misc/profiles/cur/0/com.android.carrierdefaultapp
+64772 2322 -1 /data/misc/profiles/cur/0/com.android.carrierdefaultapp/primary.prof
+64772 3934 -1 /data/misc/profiles/cur/0/com.google.android.connectivitymonitor
+64772 3936 -1 /data/misc/profiles/cur/0/com.google.android.connectivitymonitor/primary.prof
+64772 2337 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.systemui
+64772 4058 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.sprintdm
+64772 4060 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.sprintdm/primary.prof
+64772 2348 -1 /data/misc/profiles/cur/0/com.android.managedprovisioning
+64772 2350 -1 /data/misc/profiles/cur/0/com.android.managedprovisioning/primary.prof
+64772 4088 -1 /data/misc/profiles/cur/0/com.verizon.services
+64772 4090 -1 /data/misc/profiles/cur/0/com.verizon.services/primary.prof
+64772 2384 -1 /data/misc/profiles/cur/0/com.android.wallpaper.livepicker
+64772 2386 -1 /data/misc/profiles/cur/0/com.android.wallpaper.livepicker/primary.prof
+64772 2390 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_vendor__
+64772 2392 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_vendor__/primary.prof
+64772 2402 -1 /data/misc/profiles/cur/0/com.android.theme.icon.squircle
+64772 4076 -1 /data/misc/profiles/cur/0/com.google.android.setupwizard
+64772 4078 -1 /data/misc/profiles/cur/0/com.google.android.setupwizard/primary.prof
+64772 2414 -1 /data/misc/profiles/cur/0/com.android.bookmarkprovider
+64772 2416 -1 /data/misc/profiles/cur/0/com.android.bookmarkprovider/primary.prof
+64772 2420 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.launcher
+64772 3910 -1 /data/misc/profiles/cur/0/com.google.android.trichromelibrary_386509238
+64772 3912 -1 /data/misc/profiles/cur/0/com.google.android.trichromelibrary_386509238/primary.prof
+64772 2431 -1 /data/misc/profiles/cur/0/com.android.cts.ctsshim
+64772 2436 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_vendor__
+64772 2438 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_vendor__/primary.prof
+64772 2442 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.launcher
+64772 2454 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.services.secureui
+64772 2456 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.services.secureui/primary.prof
+64772 2477 -1 /data/misc/profiles/cur/0/com.android.wallpaperbackup
+64772 2479 -1 /data/misc/profiles/cur/0/com.android.wallpaperbackup/primary.prof
+64772 4106 -1 /data/misc/profiles/cur/0/com.google.android.euicc
+64772 4108 -1 /data/misc/profiles/cur/0/com.google.android.euicc/primary.prof
+64772 2502 -1 /data/misc/profiles/cur/0/com.android.emergency
+64772 2504 -1 /data/misc/profiles/cur/0/com.android.emergency/primary.prof
+64772 2508 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural
+64772 2513 -1 /data/misc/profiles/cur/0/com.android.theme.color.orchid
+64772 2548 -1 /data/misc/profiles/cur/0/com.google.pixel.crosshatch.gamedriver
+64772 2560 -1 /data/misc/profiles/cur/0/com.qualcomm.timeservice
+64772 2562 -1 /data/misc/profiles/cur/0/com.qualcomm.timeservice/primary.prof
+64772 2597 -1 /data/misc/profiles/cur/0/com.android.theme.icon.roundedrect
+64772 2602 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural_narrow_back
+64772 2612 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_vendor__
+64772 2614 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_vendor__/primary.prof
+64772 2618 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.android
+64772 3916 -1 /data/misc/profiles/cur/0/com.android.simappdialog.auto_generated_rro_product__
+64772 3918 -1 /data/misc/profiles/cur/0/com.android.simappdialog.auto_generated_rro_product__/primary.prof
+64772 3922 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__
+64772 3924 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__/primary.prof
+64772 3928 -1 /data/misc/profiles/cur/0/com.google.android.apps.enterprise.dmagent
+64772 3930 -1 /data/misc/profiles/cur/0/com.google.android.apps.enterprise.dmagent/primary.prof
+64772 3969 -1 /data/misc/profiles/cur/0/android.autoinstalls.config.google.nexus
+64772 3971 -1 /data/misc/profiles/cur/0/android.autoinstalls.config.google.nexus/primary.prof
+64772 4005 -1 /data/misc/profiles/cur/0/com.google.android.marvin.talkback
+64772 4007 -1 /data/misc/profiles/cur/0/com.google.android.marvin.talkback/primary.prof
+64772 4023 -1 /data/misc/profiles/cur/0/com.google.android.pixel.setupwizard
+64772 4025 -1 /data/misc/profiles/cur/0/com.google.android.pixel.setupwizard/primary.prof
+64772 4094 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_product__
+64772 4096 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_product__/primary.prof
+64772 4154 -1 /data/misc/profiles/cur/0/com.android.providers.settings.auto_generated_rro_product__
+64772 4156 -1 /data/misc/profiles/cur/0/com.android.providers.settings.auto_generated_rro_product__/primary.prof
+64772 4166 -1 /data/misc/profiles/cur/0/com.google.audio.hearing.visualization.accessibility.scribe
+64772 4168 -1 /data/misc/profiles/cur/0/com.google.audio.hearing.visualization.accessibility.scribe/primary.prof
+64772 4172 -1 /data/misc/profiles/cur/0/com.google.android.captiveportallogin
+64772 4174 -1 /data/misc/profiles/cur/0/com.google.android.captiveportallogin/primary.prof
+64772 4196 -1 /data/misc/profiles/cur/0/com.google.android.apps.maps
+64772 4198 -1 /data/misc/profiles/cur/0/com.google.android.apps.maps/primary.prof
+64772 4208 -1 /data/misc/profiles/cur/0/com.google.android.documentsui.theme.pixel
+64772 4224 -1 /data/misc/profiles/cur/0/com.google.android.webview
+64772 4226 -1 /data/misc/profiles/cur/0/com.google.android.webview/primary.prof
+64772 4265 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googleconfig
+64772 4267 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googleconfig/primary.prof
+64772 4271 -1 /data/misc/profiles/cur/0/com.google.android.calculator
+64772 4273 -1 /data/misc/profiles/cur/0/com.google.android.calculator/primary.prof
+64772 4289 -1 /data/misc/profiles/cur/0/com.google.android.packageinstaller
+64772 4291 -1 /data/misc/profiles/cur/0/com.google.android.packageinstaller/primary.prof
+64772 4295 -1 /data/misc/profiles/cur/0/com.google.android.apps.customization.pixel
+64772 4306 -1 /data/misc/profiles/cur/0/com.google.android.gsf
+64772 4308 -1 /data/misc/profiles/cur/0/com.google.android.gsf/primary.prof
+64772 4312 -1 /data/misc/profiles/cur/0/com.google.android.ims
+64772 4314 -1 /data/misc/profiles/cur/0/com.google.android.ims/primary.prof
+64772 4319 -1 /data/misc/profiles/cur/0/com.google.android.tag
+64772 4321 -1 /data/misc/profiles/cur/0/com.google.android.tag/primary.prof
+64772 4331 -1 /data/misc/profiles/cur/0/com.google.android.overlay.permissioncontroller
+64772 4333 -1 /data/misc/profiles/cur/0/com.google.android.overlay.permissioncontroller/primary.prof
+64772 4337 -1 /data/misc/profiles/cur/0/com.google.android.partnersetup
+64772 4339 -1 /data/misc/profiles/cur/0/com.google.android.partnersetup/primary.prof
+64772 4348 -1 /data/misc/profiles/cur/0/com.google.android.videos
+64772 4350 -1 /data/misc/profiles/cur/0/com.google.android.videos/primary.prof
+64772 4372 -1 /data/misc/profiles/cur/0/com.customermobile.preload.vzw
+64772 4374 -1 /data/misc/profiles/cur/0/com.customermobile.preload.vzw/primary.prof
+64772 4378 -1 /data/misc/profiles/cur/0/com.android.theme.font.arbutussource
+64772 4406 -1 /data/misc/profiles/cur/0/com.google.android.apps.photos
+64772 4408 -1 /data/misc/profiles/cur/0/com.google.android.apps.photos/primary.prof
+64772 4424 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.dcmo
+64772 4426 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.dcmo/primary.prof
+64772 4430 -1 /data/misc/profiles/cur/0/com.android.providers.telephony.auto_generated_rro_product__
+64772 4432 -1 /data/misc/profiles/cur/0/com.android.providers.telephony.auto_generated_rro_product__/primary.prof
+64772 4458 -1 /data/misc/profiles/cur/0/com.google.android.wfcactivation
+64772 4460 -1 /data/misc/profiles/cur/0/com.google.android.wfcactivation/primary.prof
+64772 4464 -1 /data/misc/profiles/cur/0/com.google.android.apps.pixelmigrate
+64772 4466 -1 /data/misc/profiles/cur/0/com.google.android.apps.pixelmigrate/primary.prof
+64772 4476 -1 /data/misc/profiles/cur/0/com.google.android.projection.gearhead
+64772 4478 -1 /data/misc/profiles/cur/0/com.google.android.projection.gearhead/primary.prof
+64772 4482 -1 /data/misc/profiles/cur/0/com.verizon.obdm
+64772 4484 -1 /data/misc/profiles/cur/0/com.verizon.obdm/primary.prof
+64772 4488 -1 /data/misc/profiles/cur/0/com.google.android.apps.scone
+64772 4490 -1 /data/misc/profiles/cur/0/com.google.android.apps.scone/primary.prof
+64772 4506 -1 /data/misc/profiles/cur/0/com.google.android.tetheringentitlement
+64772 4508 -1 /data/misc/profiles/cur/0/com.google.android.tetheringentitlement/primary.prof
+64772 4513 -1 /data/misc/profiles/cur/0/com.android.omadm.service
+64772 4515 -1 /data/misc/profiles/cur/0/com.android.omadm.service/primary.prof
+64772 4543 -1 /data/misc/profiles/cur/0/com.google.googlecbrs
+64772 4545 -1 /data/misc/profiles/cur/0/com.google.googlecbrs/primary.prof
+64772 4550 -1 /data/misc/profiles/cur/0/com.google.vr.vrcore
+64772 4552 -1 /data/misc/profiles/cur/0/com.google.vr.vrcore/primary.prof
+64772 4562 -1 /data/misc/profiles/cur/0/com.google.vr.apps.ornament
+64772 4564 -1 /data/misc/profiles/cur/0/com.google.vr.apps.ornament/primary.prof
+64772 4575 -1 /data/misc/profiles/cur/0/com.android.pixellogger
+64772 4577 -1 /data/misc/profiles/cur/0/com.android.pixellogger/primary.prof
+64772 4581 -1 /data/misc/profiles/cur/0/com.google.android.hardwareinfo
+64772 4583 -1 /data/misc/profiles/cur/0/com.google.android.hardwareinfo/primary.prof
+64772 4593 -1 /data/misc/profiles/cur/0/com.google.android.dreamlinerupdater
+64772 4595 -1 /data/misc/profiles/cur/0/com.google.android.dreamlinerupdater/primary.prof
+64772 4611 -1 /data/misc/profiles/cur/0/qualcomm.com.vzw_msdc_api
+64772 4613 -1 /data/misc/profiles/cur/0/qualcomm.com.vzw_msdc_api/primary.prof
+64772 4617 -1 /data/misc/profiles/cur/0/com.google.mds
+64772 4619 -1 /data/misc/profiles/cur/0/com.google.mds/primary.prof
+64772 4623 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_product__
+64772 4625 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_product__/primary.prof
+64772 4629 -1 /data/misc/profiles/cur/0/com.google.android.gms.setup
+64772 4631 -1 /data/misc/profiles/cur/0/com.google.android.gms.setup/primary.prof
+64772 4635 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_product__
+64772 4637 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_product__/primary.prof
+64772 4641 -1 /data/misc/profiles/cur/0/com.google.android.apps.gcs
+64772 4643 -1 /data/misc/profiles/cur/0/com.google.android.apps.gcs/primary.prof
+64772 4653 -1 /data/misc/profiles/cur/0/com.google.android.vendorloggingservice
+64772 4655 -1 /data/misc/profiles/cur/0/com.google.android.vendorloggingservice/primary.prof
+64772 4659 -1 /data/misc/profiles/cur/0/com.android.connectivity.metrics
+64772 4661 -1 /data/misc/profiles/cur/0/com.android.connectivity.metrics/primary.prof
+64772 4665 -1 /data/misc/profiles/cur/0/com.verizon.llkagent
+64772 4667 -1 /data/misc/profiles/cur/0/com.verizon.llkagent/primary.prof
+64772 4671 -1 /data/misc/profiles/cur/0/com.android.vzwomatrigger
+64772 4673 -1 /data/misc/profiles/cur/0/com.android.vzwomatrigger/primary.prof
+64772 64 -1 /data/misc/profiles/ref
+64772 1668 -1 /data/misc/profiles/ref/com.android.providers.telephony
+64772 1674 -1 /data/misc/profiles/ref/com.quicinc.cne.CNEService
+64772 7918 -1 /data/misc/profiles/ref/com.quicinc.cne.CNEService/primary.prof
+64772 1680 -1 /data/misc/profiles/ref/com.qualcomm.qti.uceShimService
+64772 1686 -1 /data/misc/profiles/ref/com.android.mms.service
+64772 7993 -1 /data/misc/profiles/ref/com.android.mms.service/primary.prof
+64772 1692 -1 /data/misc/profiles/ref/com.qualcomm.qti.telephonyservice
+64772 8027 -1 /data/misc/profiles/ref/com.qualcomm.qti.telephonyservice/primary.prof
+64772 1698 -1 /data/misc/profiles/ref/android
+64772 1703 -1 /data/misc/profiles/ref/com.android.ons
+64772 1709 -1 /data/misc/profiles/ref/org.codeaurora.ims
+64772 1715 -1 /data/misc/profiles/ref/com.qualcomm.qcrilmsgtunnel
+64772 8231 -1 /data/misc/profiles/ref/com.qualcomm.qcrilmsgtunnel/primary.prof
+64772 1721 -1 /data/misc/profiles/ref/com.android.providers.settings
+64772 8236 -1 /data/misc/profiles/ref/com.android.providers.settings/primary.prof
+64772 1727 -1 /data/misc/profiles/ref/com.android.inputdevices
+64772 8303 -1 /data/misc/profiles/ref/com.android.inputdevices/primary.prof
+64772 3788 -1 /data/misc/profiles/ref/com.google.android.ext.services
+64772 7644 -1 /data/misc/profiles/ref/com.google.android.ext.services/primary.prof
+64772 1745 -1 /data/misc/profiles/ref/com.android.server.telecom
+64772 8400 -1 /data/misc/profiles/ref/com.android.server.telecom/primary.prof
+64772 1751 -1 /data/misc/profiles/ref/com.android.service.ims
+64772 8409 -1 /data/misc/profiles/ref/com.android.service.ims/primary.prof
+64772 3794 -1 /data/misc/profiles/ref/com.google.android.ext.shared
+64772 7908 -1 /data/misc/profiles/ref/com.google.android.ext.shared/primary.prof
+64772 3857 -1 /data/misc/profiles/ref/com.vzw.apnlib
+64772 7638 -1 /data/misc/profiles/ref/com.vzw.apnlib/primary.prof
+64772 1769 -1 /data/misc/profiles/ref/com.android.proxyhandler
+64772 8680 -1 /data/misc/profiles/ref/com.android.proxyhandler/primary.prof
+64772 3800 -1 /data/misc/profiles/ref/com.google.android.grilservice
+64772 8142 -1 /data/misc/profiles/ref/com.google.android.grilservice/primary.prof
+64772 1781 -1 /data/misc/profiles/ref/com.android.service.ims.presence
+64772 1787 -1 /data/misc/profiles/ref/com.android.settings
+64772 4739 -1 /data/misc/profiles/ref/com.android.settings/primary.prof
+64772 1793 -1 /data/misc/profiles/ref/com.android.phone
+64772 8857 -1 /data/misc/profiles/ref/com.android.phone/primary.prof
+64772 1799 -1 /data/misc/profiles/ref/com.android.shell
+64772 8871 -1 /data/misc/profiles/ref/com.android.shell/primary.prof
+64772 1805 -1 /data/misc/profiles/ref/com.android.location.fused
+64772 8908 -1 /data/misc/profiles/ref/com.android.location.fused/primary.prof
+64772 1811 -1 /data/misc/profiles/ref/com.android.systemui
+64772 8909 -1 /data/misc/profiles/ref/com.android.systemui/primary.prof
+64772 3812 -1 /data/misc/profiles/ref/com.google.android.dialer
+64772 4722 -1 /data/misc/profiles/ref/com.google.android.dialer/primary.prof
+64772 1828 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.noCutout
+64772 1833 -1 /data/misc/profiles/ref/com.android.cts.priv.ctsshim
+64772 1838 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.corner
+64772 1843 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.double
+64772 1848 -1 /data/misc/profiles/ref/com.android.dynsystem
+64772 7847 -1 /data/misc/profiles/ref/com.android.dynsystem/primary.prof
+64772 1854 -1 /data/misc/profiles/ref/com.android.providers.calendar
+64772 7895 -1 /data/misc/profiles/ref/com.android.providers.calendar/primary.prof
+64772 1860 -1 /data/misc/profiles/ref/com.android.providers.media
+64772 1866 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural_wide_back
+64772 3818 -1 /data/misc/profiles/ref/com.android.server.wifistack
+64772 1877 -1 /data/misc/profiles/ref/com.android.theme.color.cinnamon
+64772 1882 -1 /data/misc/profiles/ref/com.android.server.backup.encryption
+64772 7930 -1 /data/misc/profiles/ref/com.android.server.backup.encryption/primary.prof
+64772 1888 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.systemui
+64772 3839 -1 /data/misc/profiles/ref/com.google.omadm.trigger
+64772 7529 -1 /data/misc/profiles/ref/com.google.omadm.trigger/primary.prof
+64772 1899 -1 /data/misc/profiles/ref/com.android.externalstorage
+64772 7953 -1 /data/misc/profiles/ref/com.android.externalstorage/primary.prof
+64772 1905 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteclient
+64772 7964 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteclient/primary.prof
+64772 1911 -1 /data/misc/profiles/ref/com.android.htmlviewer
+64772 7969 -1 /data/misc/profiles/ref/com.android.htmlviewer/primary.prof
+64772 1917 -1 /data/misc/profiles/ref/com.android.companiondevicemanager
+64772 7977 -1 /data/misc/profiles/ref/com.android.companiondevicemanager/primary.prof
+64772 3806 -1 /data/misc/profiles/ref/com.google.android.permissioncontroller
+64772 8210 -1 /data/misc/profiles/ref/com.google.android.permissioncontroller/primary.prof
+64772 3824 -1 /data/misc/profiles/ref/com.google.android.documentsui
+64772 8728 -1 /data/misc/profiles/ref/com.google.android.documentsui/primary.prof
+64772 3893 -1 /data/misc/profiles/ref/com.qualcomm.ltebc_vzw
+64772 7913 -1 /data/misc/profiles/ref/com.qualcomm.ltebc_vzw/primary.prof
+64772 1941 -1 /data/misc/profiles/ref/com.android.providers.downloads
+64772 7998 -1 /data/misc/profiles/ref/com.android.providers.downloads/primary.prof
+64772 3905 -1 /data/misc/profiles/ref/com.google.euiccpixel
+64772 7935 -1 /data/misc/profiles/ref/com.google.euiccpixel/primary.prof
+64772 1953 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.android
+64772 1958 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.themepicker
+64772 1963 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteserver
+64772 8037 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteserver/primary.prof
+64772 1969 -1 /data/misc/profiles/ref/com.android.timezone.updater
+64772 8048 -1 /data/misc/profiles/ref/com.android.timezone.updater/primary.prof
+64772 1975 -1 /data/misc/profiles/ref/com.android.providers.downloads.ui
+64772 8058 -1 /data/misc/profiles/ref/com.android.providers.downloads.ui/primary.prof
+64772 1981 -1 /data/misc/profiles/ref/com.android.pacprocessor
+64772 8069 -1 /data/misc/profiles/ref/com.android.pacprocessor/primary.prof
+64772 1987 -1 /data/misc/profiles/ref/com.android.simappdialog
+64772 8074 -1 /data/misc/profiles/ref/com.android.simappdialog/primary.prof
+64772 3964 -1 /data/misc/profiles/ref/com.breel.wallpapers18
+64772 8017 -1 /data/misc/profiles/ref/com.breel.wallpapers18/primary.prof
+64772 1999 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.tall
+64772 3845 -1 /data/misc/profiles/ref/com.google.android.carriersetup
+64772 7596 -1 /data/misc/profiles/ref/com.google.android.carriersetup/primary.prof
+64772 2009 -1 /data/misc/profiles/ref/com.android.certinstaller
+64772 8079 -1 /data/misc/profiles/ref/com.android.certinstaller/primary.prof
+64772 2015 -1 /data/misc/profiles/ref/com.android.theme.color.black
+64772 3851 -1 /data/misc/profiles/ref/com.google.android.youtube
+64772 4746 -1 /data/misc/profiles/ref/com.google.android.youtube/primary.prof
+64772 2026 -1 /data/misc/profiles/ref/com.android.theme.color.green
+64772 2031 -1 /data/misc/profiles/ref/com.android.theme.color.ocean
+64772 2036 -1 /data/misc/profiles/ref/com.android.theme.color.space
+64772 2041 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.threebutton
+64772 2046 -1 /data/misc/profiles/ref/com.qti.qualcomm.datastatusnotification
+64772 3830 -1 /data/misc/profiles/ref/com.google.android.inputmethod.latin
+64772 9018 -1 /data/misc/profiles/ref/com.google.android.inputmethod.latin/primary.prof
+64772 2064 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.launcher
+64772 2069 -1 /data/misc/profiles/ref/com.android.egg
+64772 8147 -1 /data/misc/profiles/ref/com.android.egg/primary.prof
+64772 2075 -1 /data/misc/profiles/ref/com.android.mtp
+64772 2081 -1 /data/misc/profiles/ref/com.android.nfc
+64772 8155 -1 /data/misc/profiles/ref/com.android.nfc/primary.prof
+64772 2087 -1 /data/misc/profiles/ref/com.android.stk
+64772 3994 -1 /data/misc/profiles/ref/com.google.ar.core
+64772 8053 -1 /data/misc/profiles/ref/com.google.ar.core/primary.prof
+64772 2099 -1 /data/misc/profiles/ref/com.android.backupconfirm
+64772 8166 -1 /data/misc/profiles/ref/com.android.backupconfirm/primary.prof
+64772 3863 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfig2018
+64772 7842 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfig2018/primary.prof
+64772 2112 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_vendor__
+64772 8171 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_vendor__/primary.prof
+64772 2118 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.twobutton
+64772 4000 -1 /data/misc/profiles/ref/com.android.vending
+64772 4776 -1 /data/misc/profiles/ref/com.android.vending/primary.prof
+64772 2129 -1 /data/misc/profiles/ref/com.qualcomm.qti.radioconfiginterface
+64772 8172 -1 /data/misc/profiles/ref/com.qualcomm.qti.radioconfiginterface/primary.prof
+64772 2135 -1 /data/misc/profiles/ref/com.android.statementservice
+64772 8180 -1 /data/misc/profiles/ref/com.android.statementservice/primary.prof
+64772 2141 -1 /data/misc/profiles/ref/com.android.hotspot2
+64772 8185 -1 /data/misc/profiles/ref/com.android.hotspot2/primary.prof
+64772 3869 -1 /data/misc/profiles/ref/com.android.sdm.plugins.connmo
+64772 7852 -1 /data/misc/profiles/ref/com.android.sdm.plugins.connmo/primary.prof
+64772 2160 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural_extra_wide_back
+64772 2165 -1 /data/misc/profiles/ref/com.android.sharedstoragebackup
+64772 8237 -1 /data/misc/profiles/ref/com.android.sharedstoragebackup/primary.prof
+64772 2171 -1 /data/misc/profiles/ref/com.android.printspooler
+64772 8262 -1 /data/misc/profiles/ref/com.android.printspooler/primary.prof
+64772 2178 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.settings
+64772 3875 -1 /data/misc/profiles/ref/com.google.android.googlequicksearchbox
+64772 7857 -1 /data/misc/profiles/ref/com.google.android.googlequicksearchbox/primary.prof
+64772 3941 -1 /data/misc/profiles/ref/com.verizon.obdm_permissions
+64772 2201 -1 /data/misc/profiles/ref/com.android.dreams.basic
+64772 8292 -1 /data/misc/profiles/ref/com.android.dreams.basic/primary.prof
+64772 4041 -1 /data/misc/profiles/ref/com.google.android.as
+64772 8190 -1 /data/misc/profiles/ref/com.google.android.as/primary.prof
+64772 2213 -1 /data/misc/profiles/ref/com.android.se
+64772 8298 -1 /data/misc/profiles/ref/com.android.se/primary.prof
+64772 2220 -1 /data/misc/profiles/ref/com.android.bips
+64772 8314 -1 /data/misc/profiles/ref/com.android.bips/primary.prof
+64772 2226 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.settings
+64772 2231 -1 /data/misc/profiles/ref/com.qti.xdivert
+64772 8344 -1 /data/misc/profiles/ref/com.qti.xdivert/primary.prof
+64772 2237 -1 /data/misc/profiles/ref/com.android.musicfx
+64772 8349 -1 /data/misc/profiles/ref/com.android.musicfx/primary.prof
+64772 2243 -1 /data/misc/profiles/ref/com.android.bluetooth.auto_generated_rro_vendor__
+64772 8364 -1 /data/misc/profiles/ref/com.android.bluetooth.auto_generated_rro_vendor__/primary.prof
+64772 2249 -1 /data/misc/profiles/ref/com.android.cellbroadcastreceiver
+64772 8370 -1 /data/misc/profiles/ref/com.android.cellbroadcastreceiver/primary.prof
+64772 2255 -1 /data/misc/profiles/ref/android.telephony.overlay.cmcc
+64772 8389 -1 /data/misc/profiles/ref/android.telephony.overlay.cmcc/primary.prof
+64772 2262 -1 /data/misc/profiles/ref/com.android.theme.icon.teardrop
+64772 3958 -1 /data/misc/profiles/ref/com.google.android.soundpicker
+64772 8012 -1 /data/misc/profiles/ref/com.google.android.soundpicker/primary.prof
+64772 2273 -1 /data/misc/profiles/ref/com.android.keychain
+64772 8406 -1 /data/misc/profiles/ref/com.android.keychain/primary.prof
+64772 3887 -1 /data/misc/profiles/ref/com.google.android.onetimeinitializer
+64772 7903 -1 /data/misc/profiles/ref/com.google.android.onetimeinitializer/primary.prof
+64772 4047 -1 /data/misc/profiles/ref/com.google.android.gm
+64772 4805 -1 /data/misc/profiles/ref/com.google.android.gm/primary.prof
+64772 2297 -1 /data/misc/profiles/ref/com.android.calllogbackup
+64772 8639 -1 /data/misc/profiles/ref/com.android.calllogbackup/primary.prof
+64772 2303 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo
+64772 8649 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo/primary.prof
+64772 2309 -1 /data/misc/profiles/ref/com.android.localtransport
+64772 8654 -1 /data/misc/profiles/ref/com.android.localtransport/primary.prof
+64772 3976 -1 /data/misc/profiles/ref/com.google.android.configupdater
+64772 8032 -1 /data/misc/profiles/ref/com.google.android.configupdater/primary.prof
+64772 2332 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.android
+64772 2338 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.systemui
+64772 2349 -1 /data/misc/profiles/ref/com.android.managedprovisioning
+64772 8718 -1 /data/misc/profiles/ref/com.android.managedprovisioning/primary.prof
+64772 2355 -1 /data/misc/profiles/ref/com.android.soundpicker
+64772 8723 -1 /data/misc/profiles/ref/com.android.soundpicker/primary.prof
+64772 3911 -1 /data/misc/profiles/ref/com.google.android.trichromelibrary_386509238
+64772 7940 -1 /data/misc/profiles/ref/com.google.android.trichromelibrary_386509238/primary.prof
+64772 2415 -1 /data/misc/profiles/ref/com.android.bookmarkprovider
+64772 8763 -1 /data/misc/profiles/ref/com.android.bookmarkprovider/primary.prof
+64772 2443 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.launcher
+64772 2449 -1 /data/misc/profiles/ref/com.qti.diagservices
+64772 8832 -1 /data/misc/profiles/ref/com.qti.diagservices/primary.prof
+64772 2461 -1 /data/misc/profiles/ref/com.android.vpndialogs
+64772 8842 -1 /data/misc/profiles/ref/com.android.vpndialogs/primary.prof
+64772 4065 -1 /data/misc/profiles/ref/com.android.ramdump
+64772 8205 -1 /data/misc/profiles/ref/com.android.ramdump/primary.prof
+64772 2526 -1 /data/misc/profiles/ref/com.android.theme.color.purple
+64772 2531 -1 /data/misc/profiles/ref/com.android.bluetoothmidiservice
+64772 8915 -1 /data/misc/profiles/ref/com.android.bluetoothmidiservice/primary.prof
+64772 2537 -1 /data/misc/profiles/ref/com.qualcomm.qti.confdialer
+64772 8920 -1 /data/misc/profiles/ref/com.qualcomm.qti.confdialer/primary.prof
+64772 2543 -1 /data/misc/profiles/ref/com.android.traceur
+64772 8940 -1 /data/misc/profiles/ref/com.android.traceur/primary.prof
+64772 4035 -1 /data/misc/profiles/ref/com.google.android.deskclock
+64772 4798 -1 /data/misc/profiles/ref/com.google.android.deskclock/primary.prof
+64772 2580 -1 /data/misc/profiles/ref/com.qualcomm.embms
+64772 8989 -1 /data/misc/profiles/ref/com.qualcomm.embms/primary.prof
+64772 2586 -1 /data/misc/profiles/ref/com.android.providers.contacts
+64772 2603 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural_narrow_back
+64772 2608 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.settings
+64772 2613 -1 /data/misc/profiles/ref/android.auto_generated_rro_vendor__
+64772 9028 -1 /data/misc/profiles/ref/android.auto_generated_rro_vendor__/primary.prof
+64772 2619 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.android
+64772 3917 -1 /data/misc/profiles/ref/com.android.simappdialog.auto_generated_rro_product__
+64772 7951 -1 /data/misc/profiles/ref/com.android.simappdialog.auto_generated_rro_product__/primary.prof
+64772 3946 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_product__
+64772 8003 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_product__/primary.prof
+64772 3982 -1 /data/misc/profiles/ref/com.google.android.overlay.googlewebview
+64772 8042 -1 /data/misc/profiles/ref/com.google.android.overlay.googlewebview/primary.prof
+64772 4012 -1 /data/misc/profiles/ref/com.google.android.apps.work.oobconfig
+64772 8089 -1 /data/misc/profiles/ref/com.google.android.apps.work.oobconfig/primary.prof
+64772 4024 -1 /data/misc/profiles/ref/com.google.android.pixel.setupwizard
+64772 8137 -1 /data/misc/profiles/ref/com.google.android.pixel.setupwizard/primary.prof
+64772 4053 -1 /data/misc/profiles/ref/com.google.android.carrier
+64772 8195 -1 /data/misc/profiles/ref/com.google.android.carrier/primary.prof
+64772 4059 -1 /data/misc/profiles/ref/com.android.sdm.plugins.sprintdm
+64772 8200 -1 /data/misc/profiles/ref/com.android.sdm.plugins.sprintdm/primary.prof
+64772 4071 -1 /data/misc/profiles/ref/com.google.intelligence.sense
+64772 8215 -1 /data/misc/profiles/ref/com.google.intelligence.sense/primary.prof
+64772 4089 -1 /data/misc/profiles/ref/com.verizon.services
+64772 8242 -1 /data/misc/profiles/ref/com.verizon.services/primary.prof
+64772 4101 -1 /data/misc/profiles/ref/com.google.android.angle
+64772 8248 -1 /data/misc/profiles/ref/com.google.android.angle/primary.prof
+64772 4119 -1 /data/misc/profiles/ref/com.google.android.volta
+64772 8268 -1 /data/misc/profiles/ref/com.google.android.volta/primary.prof
+64772 4125 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.okgoogle
+64772 8273 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.okgoogle/primary.prof
+64772 4155 -1 /data/misc/profiles/ref/com.android.providers.settings.auto_generated_rro_product__
+64772 8297 -1 /data/misc/profiles/ref/com.android.providers.settings.auto_generated_rro_product__/primary.prof
+64772 4161 -1 /data/misc/profiles/ref/com.google.android.apps.wellbeing
+64772 8304 -1 /data/misc/profiles/ref/com.google.android.apps.wellbeing/primary.prof
+64772 4203 -1 /data/misc/profiles/ref/com.google.android.apps.tips
+64772 8359 -1 /data/misc/profiles/ref/com.google.android.apps.tips/primary.prof
+64772 4209 -1 /data/misc/profiles/ref/com.google.android.documentsui.theme.pixel
+64772 4231 -1 /data/misc/profiles/ref/com.google.android.apps.carrier.log
+64772 8390 -1 /data/misc/profiles/ref/com.google.android.apps.carrier.log/primary.prof
+64772 4237 -1 /data/misc/profiles/ref/com.google.android.networkstack
+64772 8395 -1 /data/misc/profiles/ref/com.google.android.networkstack/primary.prof
+64772 4243 -1 /data/misc/profiles/ref/com.google.android.contacts
+64772 4828 -1 /data/misc/profiles/ref/com.google.android.contacts/primary.prof
+64772 4266 -1 /data/misc/profiles/ref/com.google.android.overlay.googleconfig
+64772 8408 -1 /data/misc/profiles/ref/com.google.android.overlay.googleconfig/primary.prof
+64772 4272 -1 /data/misc/profiles/ref/com.google.android.calculator
+64772 4829 -1 /data/misc/profiles/ref/com.google.android.calculator/primary.prof
+64772 4278 -1 /data/misc/profiles/ref/com.android.chrome
+64772 4830 -1 /data/misc/profiles/ref/com.android.chrome/primary.prof
+64772 4290 -1 /data/misc/profiles/ref/com.google.android.packageinstaller
+64772 8415 -1 /data/misc/profiles/ref/com.google.android.packageinstaller/primary.prof
+64772 4313 -1 /data/misc/profiles/ref/com.google.android.ims
+64772 8623 -1 /data/misc/profiles/ref/com.google.android.ims/primary.prof
+64772 4326 -1 /data/misc/profiles/ref/com.google.android.tts
+64772 8633 -1 /data/misc/profiles/ref/com.google.android.tts/primary.prof
+64772 4344 -1 /data/misc/profiles/ref/com.google.android.apps.wallpaper.nexus
+64772 4355 -1 /data/misc/profiles/ref/com.google.android.apps.nexuslauncher
+64772 8665 -1 /data/misc/profiles/ref/com.google.android.apps.nexuslauncher/primary.prof
+64772 4361 -1 /data/misc/profiles/ref/com.google.RilConfigService
+64772 8675 -1 /data/misc/profiles/ref/com.google.RilConfigService/primary.prof
+64772 4367 -1 /data/misc/profiles/ref/com.google.SSRestartDetector
+64772 8685 -1 /data/misc/profiles/ref/com.google.SSRestartDetector/primary.prof
+64772 4373 -1 /data/misc/profiles/ref/com.customermobile.preload.vzw
+64772 8690 -1 /data/misc/profiles/ref/com.customermobile.preload.vzw/primary.prof
+64772 4379 -1 /data/misc/profiles/ref/com.android.theme.font.arbutussource
+64772 4384 -1 /data/misc/profiles/ref/com.android.theme.font.rubikrubik
+64772 4395 -1 /data/misc/profiles/ref/com.google.android.feedback
+64772 8696 -1 /data/misc/profiles/ref/com.google.android.feedback/primary.prof
+64772 4401 -1 /data/misc/profiles/ref/com.google.android.printservice.recommendation
+64772 8702 -1 /data/misc/profiles/ref/com.google.android.printservice.recommendation/primary.prof
+64772 4413 -1 /data/misc/profiles/ref/com.google.android.calendar
+64772 8713 -1 /data/misc/profiles/ref/com.google.android.calendar/primary.prof
+64772 4419 -1 /data/misc/profiles/ref/com.google.android.apps.internal.betterbug
+64772 8733 -1 /data/misc/profiles/ref/com.google.android.apps.internal.betterbug/primary.prof
+64772 4425 -1 /data/misc/profiles/ref/com.android.sdm.plugins.dcmo
+64772 8738 -1 /data/misc/profiles/ref/com.android.sdm.plugins.dcmo/primary.prof
+64772 4437 -1 /data/misc/profiles/ref/com.android.server.wifistack.permissionconfig
+64772 4447 -1 /data/misc/profiles/ref/com.google.android.networkstack.permissionconfig
+64772 8758 -1 /data/misc/profiles/ref/com.google.android.networkstack.permissionconfig/primary.prof
+64772 4453 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfigcommon
+64772 8768 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfigcommon/primary.prof
+64772 4471 -1 /data/misc/profiles/ref/com.google.android.settings.intelligence
+64772 4861 -1 /data/misc/profiles/ref/com.google.android.settings.intelligence/primary.prof
+64772 4477 -1 /data/misc/profiles/ref/com.google.android.projection.gearhead
+64772 8783 -1 /data/misc/profiles/ref/com.google.android.projection.gearhead/primary.prof
+64772 4483 -1 /data/misc/profiles/ref/com.verizon.obdm
+64772 8788 -1 /data/misc/profiles/ref/com.verizon.obdm/primary.prof
+64772 4495 -1 /data/misc/profiles/ref/com.google.android.apps.turbo
+64772 8798 -1 /data/misc/profiles/ref/com.google.android.apps.turbo/primary.prof
+64772 4507 -1 /data/misc/profiles/ref/com.google.android.tetheringentitlement
+64772 8806 -1 /data/misc/profiles/ref/com.google.android.tetheringentitlement/primary.prof
+64772 4526 -1 /data/misc/profiles/ref/com.google.android.apps.wearables.maestro.companion
+64772 8821 -1 /data/misc/profiles/ref/com.google.android.apps.wearables.maestro.companion/primary.prof
+64772 4538 -1 /data/misc/profiles/ref/com.google.android.apps.wallpaper
+64772 8847 -1 /data/misc/profiles/ref/com.google.android.apps.wallpaper/primary.prof
+64772 4544 -1 /data/misc/profiles/ref/com.google.googlecbrs
+64772 8852 -1 /data/misc/profiles/ref/com.google.googlecbrs/primary.prof
+64772 4551 -1 /data/misc/profiles/ref/com.google.vr.vrcore
+64772 8862 -1 /data/misc/profiles/ref/com.google.vr.vrcore/primary.prof
+64772 4563 -1 /data/misc/profiles/ref/com.google.vr.apps.ornament
+64772 8888 -1 /data/misc/profiles/ref/com.google.vr.apps.ornament/primary.prof
+64772 4570 -1 /data/misc/profiles/ref/com.google.android.gms.location.history
+64772 8898 -1 /data/misc/profiles/ref/com.google.android.gms.location.history/primary.prof
+64772 4576 -1 /data/misc/profiles/ref/com.android.pixellogger
+64772 8903 -1 /data/misc/profiles/ref/com.android.pixellogger/primary.prof
+64772 4582 -1 /data/misc/profiles/ref/com.google.android.hardwareinfo
+64772 8910 -1 /data/misc/profiles/ref/com.google.android.hardwareinfo/primary.prof
+64772 4588 -1 /data/misc/profiles/ref/com.qti.ltebc
+64772 8925 -1 /data/misc/profiles/ref/com.qti.ltebc/primary.prof
+64772 4600 -1 /data/misc/profiles/ref/com.tmobile.planprovider
+64772 8935 -1 /data/misc/profiles/ref/com.tmobile.planprovider/primary.prof
+64772 4606 -1 /data/misc/profiles/ref/com.google.android.apps.helprtc
+64772 8945 -1 /data/misc/profiles/ref/com.google.android.apps.helprtc/primary.prof
+64772 4618 -1 /data/misc/profiles/ref/com.google.mds
+64772 8956 -1 /data/misc/profiles/ref/com.google.mds/primary.prof
+64772 4630 -1 /data/misc/profiles/ref/com.google.android.gms.setup
+64772 8962 -1 /data/misc/profiles/ref/com.google.android.gms.setup/primary.prof
+64772 4636 -1 /data/misc/profiles/ref/android.auto_generated_rro_product__
+64772 8967 -1 /data/misc/profiles/ref/android.auto_generated_rro_product__/primary.prof
+64772 4642 -1 /data/misc/profiles/ref/com.google.android.apps.gcs
+64772 8968 -1 /data/misc/profiles/ref/com.google.android.apps.gcs/primary.prof
+64772 4678 -1 /data/misc/profiles/ref/com.google.android.storagemanager
+64772 9023 -1 /data/misc/profiles/ref/com.google.android.storagemanager/primary.prof
+64772 2292 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.systemui
+64772 2321 -1 /data/misc/profiles/ref/com.android.carrierdefaultapp
+64772 8670 -1 /data/misc/profiles/ref/com.android.carrierdefaultapp/primary.prof
+64772 3899 -1 /data/misc/profiles/ref/com.google.android.apps.diagnosticstool
+64772 7923 -1 /data/misc/profiles/ref/com.google.android.apps.diagnosticstool/primary.prof
+64772 3923 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo.auto_generated_rro_product__
+64772 7952 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo.auto_generated_rro_product__/primary.prof
+64772 3935 -1 /data/misc/profiles/ref/com.google.android.connectivitymonitor
+64772 7982 -1 /data/misc/profiles/ref/com.google.android.connectivitymonitor/primary.prof
+64772 2373 -1 /data/misc/profiles/ref/com.android.providers.partnerbookmarks
+64772 8743 -1 /data/misc/profiles/ref/com.android.providers.partnerbookmarks/primary.prof
+64772 2385 -1 /data/misc/profiles/ref/com.android.wallpaper.livepicker
+64772 8751 -1 /data/misc/profiles/ref/com.android.wallpaper.livepicker/primary.prof
+64772 2391 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_vendor__
+64772 8757 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_vendor__/primary.prof
+64772 4107 -1 /data/misc/profiles/ref/com.google.android.euicc
+64772 8257 -1 /data/misc/profiles/ref/com.google.android.euicc/primary.prof
+64772 2403 -1 /data/misc/profiles/ref/com.android.theme.icon.squircle
+64772 2421 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.launcher
+64772 3929 -1 /data/misc/profiles/ref/com.google.android.apps.enterprise.dmagent
+64772 7958 -1 /data/misc/profiles/ref/com.google.android.apps.enterprise.dmagent/primary.prof
+64772 2432 -1 /data/misc/profiles/ref/com.android.cts.ctsshim
+64772 2437 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_vendor__
+64772 8831 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_vendor__/primary.prof
+64772 2455 -1 /data/misc/profiles/ref/com.qualcomm.qti.services.secureui
+64772 8837 -1 /data/misc/profiles/ref/com.qualcomm.qti.services.secureui/primary.prof
+64772 2473 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.themepicker
+64772 2478 -1 /data/misc/profiles/ref/com.android.wallpaperbackup
+64772 8876 -1 /data/misc/profiles/ref/com.android.wallpaperbackup/primary.prof
+64772 2485 -1 /data/misc/profiles/ref/com.android.providers.blockednumber
+64772 4030 -1 /data/misc/profiles/ref/com.android.theme.font.arvolato
+64772 2497 -1 /data/misc/profiles/ref/com.android.providers.userdictionary
+64772 2503 -1 /data/misc/profiles/ref/com.android.emergency
+64772 8893 -1 /data/misc/profiles/ref/com.android.emergency/primary.prof
+64772 2509 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural
+64772 2514 -1 /data/misc/profiles/ref/com.android.theme.color.orchid
+64772 4113 -1 /data/misc/profiles/ref/com.google.android.music
+64772 4808 -1 /data/misc/profiles/ref/com.google.android.music/primary.prof
+64772 2549 -1 /data/misc/profiles/ref/com.google.pixel.crosshatch.gamedriver
+64772 2554 -1 /data/misc/profiles/ref/com.android.bluetooth
+64772 8973 -1 /data/misc/profiles/ref/com.android.bluetooth/primary.prof
+64772 2561 -1 /data/misc/profiles/ref/com.qualcomm.timeservice
+64772 8979 -1 /data/misc/profiles/ref/com.qualcomm.timeservice/primary.prof
+64772 2567 -1 /data/misc/profiles/ref/com.qualcomm.atfwd
+64772 8984 -1 /data/misc/profiles/ref/com.qualcomm.atfwd/primary.prof
+64772 4077 -1 /data/misc/profiles/ref/com.google.android.setupwizard
+64772 8220 -1 /data/misc/profiles/ref/com.google.android.setupwizard/primary.prof
+64772 2598 -1 /data/misc/profiles/ref/com.android.theme.icon.roundedrect
+64772 3952 -1 /data/misc/profiles/ref/com.google.android.apps.messaging
+64772 8004 -1 /data/misc/profiles/ref/com.google.android.apps.messaging/primary.prof
+64772 3970 -1 /data/misc/profiles/ref/android.autoinstalls.config.google.nexus
+64772 8022 -1 /data/misc/profiles/ref/android.autoinstalls.config.google.nexus/primary.prof
+64772 3988 -1 /data/misc/profiles/ref/com.google.android.apps.safetyhub
+64772 8043 -1 /data/misc/profiles/ref/com.google.android.apps.safetyhub/primary.prof
+64772 4006 -1 /data/misc/profiles/ref/com.google.android.marvin.talkback
+64772 8084 -1 /data/misc/profiles/ref/com.google.android.marvin.talkback/primary.prof
+64772 4018 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.xgoogle
+64772 8132 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.xgoogle/primary.prof
+64772 4083 -1 /data/misc/profiles/ref/com.google.android.netgrapher
+64772 8226 -1 /data/misc/profiles/ref/com.google.android.netgrapher/primary.prof
+64772 4095 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_product__
+64772 8247 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_product__/primary.prof
+64772 4131 -1 /data/misc/profiles/ref/com.android.sdm.plugins.diagmon
+64772 8278 -1 /data/misc/profiles/ref/com.android.sdm.plugins.diagmon/primary.prof
+64772 4167 -1 /data/misc/profiles/ref/com.google.audio.hearing.visualization.accessibility.scribe
+64772 8319 -1 /data/misc/profiles/ref/com.google.audio.hearing.visualization.accessibility.scribe/primary.prof
+64772 4173 -1 /data/misc/profiles/ref/com.google.android.captiveportallogin
+64772 8329 -1 /data/misc/profiles/ref/com.google.android.captiveportallogin/primary.prof
+64772 4179 -1 /data/misc/profiles/ref/com.google.android.accessibility.soundamplifier
+64772 8334 -1 /data/misc/profiles/ref/com.google.android.accessibility.soundamplifier/primary.prof
+64772 4185 -1 /data/misc/profiles/ref/com.google.mds.permissions
+64772 8339 -1 /data/misc/profiles/ref/com.google.mds.permissions/primary.prof
+64772 4191 -1 /data/misc/profiles/ref/com.google.android.apps.docs
+64772 8354 -1 /data/misc/profiles/ref/com.google.android.apps.docs/primary.prof
+64772 4301 -1 /data/misc/profiles/ref/com.google.android.gms
+64772 4197 -1 /data/misc/profiles/ref/com.google.android.apps.maps
+64772 4822 -1 /data/misc/profiles/ref/com.google.android.apps.maps/primary.prof
+64772 4214 -1 /data/misc/profiles/ref/com.google.android.modulemetadata
+64772 4219 -1 /data/misc/profiles/ref/com.google.android.markup
+64772 8365 -1 /data/misc/profiles/ref/com.google.android.markup/primary.prof
+64772 4225 -1 /data/misc/profiles/ref/com.google.android.webview
+64772 4249 -1 /data/misc/profiles/ref/com.google.android.syncadapters.contacts
+64772 8401 -1 /data/misc/profiles/ref/com.google.android.syncadapters.contacts/primary.prof
+64772 4255 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.themepicker
+64772 4260 -1 /data/misc/profiles/ref/com.android.server.telecom.auto_generated_rro_product__
+64772 8407 -1 /data/misc/profiles/ref/com.android.server.telecom.auto_generated_rro_product__/primary.prof
+64772 4284 -1 /data/misc/profiles/ref/com.android.bips.auto_generated_rro_product__
+64772 8414 -1 /data/misc/profiles/ref/com.android.bips.auto_generated_rro_product__/primary.prof
+64772 4296 -1 /data/misc/profiles/ref/com.google.android.apps.customization.pixel
+64772 4307 -1 /data/misc/profiles/ref/com.google.android.gsf
+64772 8618 -1 /data/misc/profiles/ref/com.google.android.gsf/primary.prof
+64772 4320 -1 /data/misc/profiles/ref/com.google.android.tag
+64772 8628 -1 /data/misc/profiles/ref/com.google.android.tag/primary.prof
+64772 4332 -1 /data/misc/profiles/ref/com.google.android.overlay.permissioncontroller
+64772 8638 -1 /data/misc/profiles/ref/com.google.android.overlay.permissioncontroller/primary.prof
+64772 4338 -1 /data/misc/profiles/ref/com.google.android.partnersetup
+64772 8644 -1 /data/misc/profiles/ref/com.google.android.partnersetup/primary.prof
+64772 4349 -1 /data/misc/profiles/ref/com.google.android.videos
+64772 8659 -1 /data/misc/profiles/ref/com.google.android.videos/primary.prof
+64772 4389 -1 /data/misc/profiles/ref/com.android.providers.contacts.auto_generated_rro_product__
+64772 8695 -1 /data/misc/profiles/ref/com.android.providers.contacts.auto_generated_rro_product__/primary.prof
+64772 4407 -1 /data/misc/profiles/ref/com.google.android.apps.photos
+64772 8707 -1 /data/misc/profiles/ref/com.google.android.apps.photos/primary.prof
+64772 4431 -1 /data/misc/profiles/ref/com.android.providers.telephony.auto_generated_rro_product__
+64772 8756 -1 /data/misc/profiles/ref/com.android.providers.telephony.auto_generated_rro_product__/primary.prof
+64772 4459 -1 /data/misc/profiles/ref/com.google.android.wfcactivation
+64772 8773 -1 /data/misc/profiles/ref/com.google.android.wfcactivation/primary.prof
+64772 4465 -1 /data/misc/profiles/ref/com.google.android.apps.pixelmigrate
+64772 8778 -1 /data/misc/profiles/ref/com.google.android.apps.pixelmigrate/primary.prof
+64772 4489 -1 /data/misc/profiles/ref/com.google.android.apps.scone
+64772 8793 -1 /data/misc/profiles/ref/com.google.android.apps.scone/primary.prof
+64772 4514 -1 /data/misc/profiles/ref/com.android.omadm.service
+64772 8811 -1 /data/misc/profiles/ref/com.android.omadm.service/primary.prof
+64772 4520 -1 /data/misc/profiles/ref/com.google.android.apps.dreamliner
+64772 8816 -1 /data/misc/profiles/ref/com.google.android.apps.dreamliner/primary.prof
+64772 4532 -1 /data/misc/profiles/ref/com.google.android.hiddenmenu
+64772 8826 -1 /data/misc/profiles/ref/com.google.android.hiddenmenu/primary.prof
+64772 4594 -1 /data/misc/profiles/ref/com.google.android.dreamlinerupdater
+64772 8930 -1 /data/misc/profiles/ref/com.google.android.dreamlinerupdater/primary.prof
+64772 4612 -1 /data/misc/profiles/ref/qualcomm.com.vzw_msdc_api
+64772 8950 -1 /data/misc/profiles/ref/qualcomm.com.vzw_msdc_api/primary.prof
+64772 4624 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_product__
+64772 8961 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_product__/primary.prof
+64772 4648 -1 /data/misc/profiles/ref/com.google.android.GoogleCamera
+64772 4896 -1 /data/misc/profiles/ref/com.google.android.GoogleCamera/primary.prof
+64772 4654 -1 /data/misc/profiles/ref/com.google.android.vendorloggingservice
+64772 8998 -1 /data/misc/profiles/ref/com.google.android.vendorloggingservice/primary.prof
+64772 4660 -1 /data/misc/profiles/ref/com.android.connectivity.metrics
+64772 9003 -1 /data/misc/profiles/ref/com.android.connectivity.metrics/primary.prof
+64772 4666 -1 /data/misc/profiles/ref/com.verizon.llkagent
+64772 9008 -1 /data/misc/profiles/ref/com.verizon.llkagent/primary.prof
+64772 4672 -1 /data/misc/profiles/ref/com.android.vzwomatrigger
+64772 9013 -1 /data/misc/profiles/ref/com.android.vzwomatrigger/primary.prof
+64772 65 -1 /data/misc/profman
+64772 66 -1 /data/misc/gcov
+64772 67 -1 /data/misc/installd
+64772 492 -1 /data/misc/installd/layout_version
+64772 143 -1 /data/misc/adb
+64772 5513 -1 /data/misc/adb/adb_keys
+64772 7626 -1 /data/misc/adb/adb_temp_keys.xml
+64772 160 -1 /data/misc/bootstat
+64772 2870 -1 /data/misc/bootstat/last_boot_time_utc
+64772 2871 -1 /data/misc/bootstat/build_date
+64772 2882 -1 /data/misc/bootstat/factory_reset_boot_complete_no_encryption
+64772 2883 -1 /data/misc/bootstat/factory_reset_boot_complete
+64772 2884 -1 /data/misc/bootstat/ro.boottime.init
+64772 2885 -1 /data/misc/bootstat/ro.boottime.init.first_stage
+64772 2886 -1 /data/misc/bootstat/ro.boottime.init.selinux
+64772 2887 -1 /data/misc/bootstat/ro.boottime.init.cold_boot_wait
+64772 2888 -1 /data/misc/bootstat/boottime.bootloader.0BLE
+64772 2889 -1 /data/misc/bootstat/boottime.bootloader.1BLE
+64772 2890 -1 /data/misc/bootstat/boottime.bootloader.1BLL
+64772 2891 -1 /data/misc/bootstat/boottime.bootloader.2BLE
+64772 2892 -1 /data/misc/bootstat/boottime.bootloader.2BLL
+64772 2893 -1 /data/misc/bootstat/boottime.bootloader.AVB
+64772 2894 -1 /data/misc/bootstat/boottime.bootloader.KD
+64772 2895 -1 /data/misc/bootstat/boottime.bootloader.KL
+64772 2896 -1 /data/misc/bootstat/boottime.bootloader.ODT
+64772 2897 -1 /data/misc/bootstat/boottime.bootloader.SW
+64772 2898 -1 /data/misc/bootstat/boottime.bootloader.total
+64772 2899 -1 /data/misc/bootstat/absolute_boot_time
+64772 2900 -1 /data/misc/bootstat/boot_reason
+64772 2901 -1 /data/misc/bootstat/system_boot_reason
+64772 2902 -1 /data/misc/bootstat/factory_reset_current_time
+64772 2903 -1 /data/misc/bootstat/factory_reset
+64772 5076 -1 /data/misc/bootstat/time_since_last_boot
+64772 5084 -1 /data/misc/bootstat/ota_boot_complete_no_encryption
+64772 5085 -1 /data/misc/bootstat/ota_boot_complete
+64772 5086 -1 /data/misc/bootstat/factory_reset_record_value
+64772 5087 -1 /data/misc/bootstat/time_since_factory_reset
+64772 6650 -1 /data/misc/bootstat/boot_complete_no_encryption
+64772 6651 -1 /data/misc/bootstat/boot_complete
+64772 164 -1 /data/misc/incidents
+64772 165 -1 /data/misc/iorapd
+64772 519 -1 /data/misc/iorapd/sqlite.db
+64772 3725 -1 /data/misc/iorapd/com.google.android.GoogleCamera%2Fcom.android.camera.CameraLauncher.perfetto_trace.pb
+64772 9117 -1 /data/misc/iorapd/com.android.settings%2Fcom.android.settings.Settings.perfetto_trace.pb
+64772 3489 -1 /data/misc/iorapd/com.google.android.calculator%2Fcom.android.calculator2.Calculator.perfetto_trace.pb
+64772 166 -1 /data/misc/logd
+64772 167 -1 /data/misc/logd/event-log-tags
+64772 168 -1 /data/misc/stats-data
+64772 169 -1 /data/misc/stats-service
+64772 170 -1 /data/misc/stats-active-metric
+64772 171 -1 /data/misc/train-info
+64772 402 -1 /data/misc/perfetto-traces
+64772 52 -1 /data/local
+64772 73 -1 /data/local/tmp
+64772 9542 -1 /data/local/tmp/iorapd-tests
+64772 6578 -1 /data/local/tmp/iorapd-tests/iorapd-tests.config
+64772 9554 -1 /data/local/tmp/iorapd-tests/arm64
+64772 7006 -1 /data/local/tmp/iorapd-tests/arm64/iorapd-tests
+64772 7091 -1 /data/local/tmp/dumpcache
+64772 74 -1 /data/local/traces
+64772 68 -1 /data/preloads
+64772 69 -1 /data/vendor
+64772 72 -1 /data/vendor/hardware
+64772 83 -1 /data/vendor/tombstones
+64772 84 -1 /data/vendor/tombstones/wifi
+64772 158 -1 /data/vendor/tombstones/rfs
+64772 202 -1 /data/vendor/tombstones/rfs/modem
+64772 203 -1 /data/vendor/tombstones/rfs/lpass
+64772 204 -1 /data/vendor/tombstones/rfs/tn
+64772 205 -1 /data/vendor/tombstones/rfs/slpi
+64772 206 -1 /data/vendor/tombstones/rfs/cdsp
+64772 145 -1 /data/vendor/camera
+64772 146 -1 /data/vendor/display
+64772 147 -1 /data/vendor/modem_fdr
+64772 201 -1 /data/vendor/modem_fdr/fdr_check
+64772 148 -1 /data/vendor/nnhal
+64772 149 -1 /data/vendor/radio
+64772 150 -1 /data/vendor/radio/diag_logs
+64772 154 -1 /data/vendor/radio/diag_logs/logs
+64772 412 -1 /data/vendor/radio/diag_logs/logs/diag_qsr4_guid_list.xml
+64772 2742 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191013_2252041571007124483.qmdl
+64772 4797 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191013_2256211571007381368.qmdl
+64772 6726 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191013_2258421571007522788.qmdl
+64772 9504 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_0429031571027343969.qmdl
+64772 7367 -1 /data/vendor/radio/diag_logs/logs/diag_poweron_log.qmdl
+64772 7422 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_1244401571057080983.qmdl
+64772 9066 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_1745031571075103455.qmdl
+64772 9060 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_2115181571087718981.qmdl
+64772 6822 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_0015321571098532612.qmdl
+64772 8183 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_0600581571119258344.qmdl
+64772 3736 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_1401341571148094239.qmdl
+64772 7477 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_1916571571167017813.qmdl
+64772 7218 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_0032211571185941322.qmdl
+64772 7252 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_0717511571210271628.qmdl
+64772 3461 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_1533281571240008608.qmdl
+64772 7339 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_2033511571258031065.qmdl
+64772 407 -1 /data/vendor/radio/diag_logs/diag_trace.txt
+64772 6566 -1 /data/vendor/radio/diag_logs/diag_mdlog_pid
+64772 5647 -1 /data/vendor/radio/diag_logs/cfg
+64772 5897 -1 /data/vendor/radio/diag_logs/cfg/Audio.cfg
+64772 5650 -1 /data/vendor/radio/diag_logs/cfg/BT_Audio.cfg
+64772 5651 -1 /data/vendor/radio/diag_logs/cfg/CA-MIMO-256QAM.cfg
+64772 5652 -1 /data/vendor/radio/diag_logs/cfg/Connection_Issues_V6+DPL+UIM.cfg
+64772 5653 -1 /data/vendor/radio/diag_logs/cfg/Default_update_audio_rf.cfg
+64772 1584 -1 /data/vendor/radio/diag_logs/cfg/Default_update_audio_rf_tuner.cfg
+64772 1646 -1 /data/vendor/radio/diag_logs/cfg/GPS.cfg
+64772 1397 -1 /data/vendor/radio/diag_logs/cfg/IMS_DS_CNE_LnX_Golden.cfg
+64772 6447 -1 /data/vendor/radio/diag_logs/cfg/Pixel_Default.cfg
+64772 6448 -1 /data/vendor/radio/diag_logs/cfg/QC_default.cfg
+64772 6420 -1 /data/vendor/radio/diag_logs/cfg/QC_default_ds_ims_sec.cfg
+64772 6806 -1 /data/vendor/radio/diag_logs/cfg/QC_voice.cfg
+64772 6796 -1 /data/vendor/radio/diag_logs/cfg/Radio-general.cfg
+64772 5771 -1 /data/vendor/radio/diag_logs/cfg/SIM.cfg
+64772 5659 -1 /data/vendor/radio/diag_logs/cfg/Sensors.cfg
+64772 5888 -1 /data/vendor/radio/diag_logs/cfg/Thermal_default.cfg
+64772 5869 -1 /data/vendor/radio/diag_logs/cfg/default.cfg
+64772 6764 -1 /data/vendor/radio/diag_logs/cfg/default_2018.cfg
+64772 6839 -1 /data/vendor/radio/diag_logs/cfg/default_RFL1.cfg
+64772 6848 -1 /data/vendor/radio/diag_logs/cfg/default_with_legacy.cfg
+64772 6882 -1 /data/vendor/radio/diag_logs/cfg/default_without_sns.cfg
+64772 6399 -1 /data/vendor/radio/diag_logs/cfg/teamfood_default.cfg
+64772 5894 -1 /data/vendor/radio/diag_logs/cfg/wlan.cfg
+64772 5648 -1 /data/vendor/radio/diag_logs/custom_cfg
+64772 155 -1 /data/vendor/radio/extended_logs
+64772 1492 -1 /data/vendor/radio/extended_logs/extended_log_os.txt
+64772 1589 -1 /data/vendor/radio/extended_logs/extended_log_uim.txt
+64772 190 -1 /data/vendor/radio/copy_complete
+64772 191 -1 /data/vendor/radio/prebuilt_db_support
+64772 192 -1 /data/vendor/radio/db_check_done
+64772 541 -1 /data/vendor/radio/qcril.db
+64772 585 -1 /data/vendor/radio/qcril_prebuilt.db
+64772 697 -1 /data/vendor/radio/qmi_fw_log
+64772 699 -1 /data/vendor/radio/qmi_fw_log_old
+64772 6570 -1 /data/vendor/radio/modem_config
+64772 1328 -1 /data/vendor/radio/qcril_backup.db
+64772 1331 -1 /data/vendor/radio/dummy_file
+64772 1332 -1 /data/vendor/radio/iccid_0
+64772 9889 -1 /data/vendor/radio/ril_log0
+64772 4708 -1 /data/vendor/radio/imsdatadaemon_log
+64772 7283 -1 /data/vendor/radio/ril_log0_old
+64772 3759 -1 /data/vendor/radio/metrics_data
+64772 151 -1 /data/vendor/wifi
+64772 152 -1 /data/vendor/wifi/cnss_diag
+64772 172 -1 /data/vendor/wifi/hostapd
+64772 173 -1 /data/vendor/wifi/hostapd/sockets
+64772 178 -1 /data/vendor/wifi/wpa
+64772 179 -1 /data/vendor/wifi/wpa/sockets
+64772 153 -1 /data/vendor/modem_dump
+64772 156 -1 /data/vendor/rfs
+64772 157 -1 /data/vendor/rfs/mpss
+64772 159 -1 /data/vendor/rfs/mpss/mcfg_nv_list_flag
+64772 1375 -1 /data/vendor/rfs/mpss/server_check.txt
+64772 177 -1 /data/vendor/ipa
+64772 494 -1 /data/vendor/ipa/ipacm.pid
+64772 180 -1 /data/vendor/netmgr
+64772 181 -1 /data/vendor/netmgr/recovery
+64772 182 -1 /data/vendor/netmgr/recovery/recovery_info
+64772 479 -1 /data/vendor/netmgr/netmgr_log
+64772 183 -1 /data/vendor/audio
+64772 184 -1 /data/vendor/audio/acdbdata
+64772 185 -1 /data/vendor/audio/acdbdata/delta
+64772 1310 -1 /data/vendor/audio/acdbdata/delta/adsp_avs_config.acdbdelta
+64772 1311 -1 /data/vendor/audio/acdbdata/delta/Headset_cal.acdbdelta
+64772 1312 -1 /data/vendor/audio/acdbdata/delta/workspaceFile.qwspdelta
+64772 1313 -1 /data/vendor/audio/acdbdata/delta/Speaker_cal.acdbdelta
+64772 1314 -1 /data/vendor/audio/acdbdata/delta/Hdmi_cal.acdbdelta
+64772 1315 -1 /data/vendor/audio/acdbdata/delta/Codec_cal.acdbdelta
+64772 1316 -1 /data/vendor/audio/acdbdata/delta/Handset_cal.acdbdelta
+64772 1317 -1 /data/vendor/audio/acdbdata/delta/Global_cal.acdbdelta
+64772 1318 -1 /data/vendor/audio/acdbdata/delta/Bluetooth_cal.acdbdelta
+64772 1319 -1 /data/vendor/audio/acdbdata/delta/General_cal.acdbdelta
+64772 186 -1 /data/vendor/modem_stat
+64772 187 -1 /data/vendor/modem_stat/debug.txt
+64772 188 -1 /data/vendor/sensors
+64772 189 -1 /data/vendor/sensors/log
+64772 7242 -1 /data/vendor/sensors/cal.bin
+64772 7243 -1 /data/vendor/sensors/cal.txt
+64772 193 -1 /data/vendor/location
+64772 194 -1 /data/vendor/location/mq
+64772 195 -1 /data/vendor/location/xtwifi
+64772 577 -1 /data/vendor/location/xtra
+64772 578 -1 /data/vendor/location/xtra/xtra.sqlite
+64772 1473 -1 /data/vendor/location/nvparam.sqlite
+64772 196 -1 /data/vendor/nfc
+64772 3385 -1 /data/vendor/nfc/libnfc-nxpConfigState.bin
+64772 2193 -1 /data/vendor/nfc/nfc_power_state.txt
+64772 197 -1 /data/vendor/secure_element
+64772 207 -1 /data/vendor/ramdump
+64772 211 -1 /data/vendor/ramdump/RAMDUMP_STATUS
+64772 212 -1 /data/vendor/ramdump/RAMDUMP_RESERVED
+64772 368 -1 /data/vendor/wifidump
+64772 377 -1 /data/vendor/ssrdump
+64772 378 -1 /data/vendor/ssrlog
+64772 564 -1 /data/vendor/mediadrm
+64772 1926 -1 /data/vendor/tcpdump_logger
+64772 1927 -1 /data/vendor/tcpdump_logger/logs
+64772 2182 -1 /data/vendor/tcpdump_logger/pid_file_always_on
+64772 70 -1 /data/vendor_ce
+64772 2791 -1 /data/vendor_ce/0
+64772 2810 -1 /data/vendor_ce/0/facedata
+64772 3004 -1 /data/vendor_ce/0/ramoops
+64772 3370 -1 /data/vendor_ce/0/ramoops/pub.pem
+64772 3371 -1 /data/vendor_ce/0/ramoops/priv.pem
+64772 71 -1 /data/vendor_de
+64772 136 -1 /data/vendor_de/0
+64772 141 -1 /data/vendor_de/0/fpdata
+64772 142 -1 /data/vendor_de/0/facedata
+64772 75 -1 /data/data
+64772 2811 -1 /data/data/com.android.internal.display.cutout.emulation.noCutout
+64772 2812 -1 /data/data/com.android.internal.display.cutout.emulation.noCutout/cache
+64772 2813 -1 /data/data/com.android.internal.display.cutout.emulation.noCutout/code_cache
+64772 2814 -1 /data/data/com.android.cts.priv.ctsshim
+64772 2815 -1 /data/data/com.android.cts.priv.ctsshim/cache
+64772 2816 -1 /data/data/com.android.cts.priv.ctsshim/code_cache
+64772 2817 -1 /data/data/com.android.internal.display.cutout.emulation.corner
+64772 2818 -1 /data/data/com.android.internal.display.cutout.emulation.corner/cache
+64772 2819 -1 /data/data/com.android.internal.display.cutout.emulation.corner/code_cache
+64772 2820 -1 /data/data/com.android.internal.display.cutout.emulation.double
+64772 2821 -1 /data/data/com.android.internal.display.cutout.emulation.double/cache
+64772 2822 -1 /data/data/com.android.internal.display.cutout.emulation.double/code_cache
+64772 2823 -1 /data/data/com.android.providers.telephony
+64772 2824 -1 /data/data/com.android.providers.telephony/cache
+64772 2825 -1 /data/data/com.android.providers.telephony/code_cache
+64772 3503 -1 /data/data/com.android.providers.telephony/databases
+64772 3504 -1 /data/data/com.android.providers.telephony/databases/mmssms.db
+64772 3505 -1 /data/data/com.android.providers.telephony/databases/mmssms.db-journal
+64772 3506 -1 /data/data/com.android.providers.telephony/shared_prefs
+64772 3507 -1 /data/data/com.android.providers.telephony/shared_prefs/com.android.providers.telephony_preferences.xml
+64772 2826 -1 /data/data/com.android.dynsystem
+64772 2827 -1 /data/data/com.android.dynsystem/cache
+64772 2828 -1 /data/data/com.android.dynsystem/code_cache
+64772 2829 -1 /data/data/com.android.providers.calendar
+64772 2830 -1 /data/data/com.android.providers.calendar/cache
+64772 2831 -1 /data/data/com.android.providers.calendar/code_cache
+64772 3508 -1 /data/data/com.android.providers.calendar/databases
+64772 3509 -1 /data/data/com.android.providers.calendar/databases/calendar.db
+64772 3510 -1 /data/data/com.android.providers.calendar/databases/calendar.db-journal
+64772 3512 -1 /data/data/com.android.providers.calendar/shared_prefs
+64772 3513 -1 /data/data/com.android.providers.calendar/shared_prefs/CalendarUpgradeReceiver.xml
+64772 9426 -1 /data/data/com.android.providers.calendar/shared_prefs/sanity.xml
+64772 2832 -1 /data/data/com.android.providers.media
+64772 2833 -1 /data/data/com.android.providers.media/cache
+64772 2834 -1 /data/data/com.android.providers.media/code_cache
+64772 3469 -1 /data/data/com.android.providers.media/databases
+64772 3470 -1 /data/data/com.android.providers.media/databases/internal.db
+64772 3472 -1 /data/data/com.android.providers.media/databases/internal.db-wal
+64772 3473 -1 /data/data/com.android.providers.media/databases/internal.db-shm
+64772 3490 -1 /data/data/com.android.providers.media/databases/external.db
+64772 3492 -1 /data/data/com.android.providers.media/databases/external.db-wal
+64772 3493 -1 /data/data/com.android.providers.media/databases/external.db-shm
+64772 3477 -1 /data/data/com.android.providers.media/shared_prefs
+64772 3487 -1 /data/data/com.android.providers.media/shared_prefs/com.android.providers.media_preferences.xml
+64772 3515 -1 /data/data/com.android.providers.media/shared_prefs/MediaUpgradeReceiver.xml
+64772 3571 -1 /data/data/com.android.providers.media/shared_prefs/MediaScanBuild.xml
+64772 2835 -1 /data/data/com.android.internal.systemui.navbar.gestural_wide_back
+64772 2836 -1 /data/data/com.android.internal.systemui.navbar.gestural_wide_back/cache
+64772 2837 -1 /data/data/com.android.internal.systemui.navbar.gestural_wide_back/code_cache
+64772 5064 -1 /data/data/com.google.omadm.trigger
+64772 5065 -1 /data/data/com.google.omadm.trigger/cache
+64772 5066 -1 /data/data/com.google.omadm.trigger/code_cache
+64772 2841 -1 /data/data/com.quicinc.cne.CNEService
+64772 2842 -1 /data/data/com.quicinc.cne.CNEService/cache
+64772 2843 -1 /data/data/com.quicinc.cne.CNEService/code_cache
+64772 2844 -1 /data/data/com.android.theme.color.cinnamon
+64772 2845 -1 /data/data/com.android.theme.color.cinnamon/cache
+64772 2846 -1 /data/data/com.android.theme.color.cinnamon/code_cache
+64772 2847 -1 /data/data/com.android.server.backup.encryption
+64772 2848 -1 /data/data/com.android.server.backup.encryption/cache
+64772 2849 -1 /data/data/com.android.server.backup.encryption/code_cache
+64772 2850 -1 /data/data/com.android.theme.icon_pack.rounded.systemui
+64772 2851 -1 /data/data/com.android.theme.icon_pack.rounded.systemui/cache
+64772 2852 -1 /data/data/com.android.theme.icon_pack.rounded.systemui/code_cache
+64772 5073 -1 /data/data/com.vzw.apnlib
+64772 5074 -1 /data/data/com.vzw.apnlib/cache
+64772 5075 -1 /data/data/com.vzw.apnlib/code_cache
+64772 2856 -1 /data/data/com.android.externalstorage
+64772 2857 -1 /data/data/com.android.externalstorage/cache
+64772 2858 -1 /data/data/com.android.externalstorage/code_cache
+64772 2859 -1 /data/data/com.qualcomm.uimremoteclient
+64772 2860 -1 /data/data/com.qualcomm.uimremoteclient/cache
+64772 2861 -1 /data/data/com.qualcomm.uimremoteclient/code_cache
+64772 2863 -1 /data/data/com.android.htmlviewer
+64772 2864 -1 /data/data/com.android.htmlviewer/cache
+64772 2865 -1 /data/data/com.android.htmlviewer/code_cache
+64772 2867 -1 /data/data/com.qualcomm.qti.uceShimService
+64772 2868 -1 /data/data/com.qualcomm.qti.uceShimService/cache
+64772 2869 -1 /data/data/com.qualcomm.qti.uceShimService/code_cache
+64772 2872 -1 /data/data/com.android.companiondevicemanager
+64772 2873 -1 /data/data/com.android.companiondevicemanager/cache
+64772 2874 -1 /data/data/com.android.companiondevicemanager/code_cache
+64772 5067 -1 /data/data/com.google.android.carriersetup
+64772 5068 -1 /data/data/com.google.android.carriersetup/cache
+64772 5069 -1 /data/data/com.google.android.carriersetup/code_cache
+64772 5026 -1 /data/data/com.google.android.carriersetup/shared_prefs
+64772 2879 -1 /data/data/com.android.mms.service
+64772 2880 -1 /data/data/com.android.mms.service/cache
+64772 2881 -1 /data/data/com.android.mms.service/code_cache
+64772 2904 -1 /data/data/com.android.providers.downloads
+64772 2905 -1 /data/data/com.android.providers.downloads/cache
+64772 2906 -1 /data/data/com.android.providers.downloads/code_cache
+64772 3474 -1 /data/data/com.android.providers.downloads/databases
+64772 3475 -1 /data/data/com.android.providers.downloads/databases/downloads.db
+64772 3476 -1 /data/data/com.android.providers.downloads/databases/downloads.db-journal
+64772 7557 -1 /data/data/com.android.providers.downloads/files
+64772 5100 -1 /data/data/com.qualcomm.ltebc_vzw
+64772 5101 -1 /data/data/com.qualcomm.ltebc_vzw/cache
+64772 5102 -1 /data/data/com.qualcomm.ltebc_vzw/code_cache
+64772 2910 -1 /data/data/com.android.theme.icon_pack.rounded.android
+64772 2911 -1 /data/data/com.android.theme.icon_pack.rounded.android/cache
+64772 2912 -1 /data/data/com.android.theme.icon_pack.rounded.android/code_cache
+64772 2913 -1 /data/data/com.qualcomm.qti.telephonyservice
+64772 2914 -1 /data/data/com.qualcomm.qti.telephonyservice/cache
+64772 2915 -1 /data/data/com.qualcomm.qti.telephonyservice/code_cache
+64772 2916 -1 /data/data/com.android.theme.icon_pack.circular.themepicker
+64772 2917 -1 /data/data/com.android.theme.icon_pack.circular.themepicker/cache
+64772 2918 -1 /data/data/com.android.theme.icon_pack.circular.themepicker/code_cache
+64772 2919 -1 /data/data/com.qualcomm.uimremoteserver
+64772 2920 -1 /data/data/com.qualcomm.uimremoteserver/cache
+64772 2921 -1 /data/data/com.qualcomm.uimremoteserver/code_cache
+64772 2923 -1 /data/data/com.android.timezone.updater
+64772 2924 -1 /data/data/com.android.timezone.updater/cache
+64772 2925 -1 /data/data/com.android.timezone.updater/code_cache
+64772 2926 -1 /data/data/com.android.providers.downloads.ui
+64772 2928 -1 /data/data/com.android.providers.downloads.ui/cache
+64772 2929 -1 /data/data/com.android.providers.downloads.ui/code_cache
+64772 2930 -1 /data/data/com.android.pacprocessor
+64772 2931 -1 /data/data/com.android.pacprocessor/cache
+64772 2932 -1 /data/data/com.android.pacprocessor/code_cache
+64772 2933 -1 /data/data/com.android.simappdialog
+64772 2934 -1 /data/data/com.android.simappdialog/cache
+64772 2935 -1 /data/data/com.android.simappdialog/code_cache
+64772 5107 -1 /data/data/com.google.euiccpixel
+64772 5108 -1 /data/data/com.google.euiccpixel/cache
+64772 5109 -1 /data/data/com.google.euiccpixel/code_cache
+64772 2939 -1 /data/data/com.android.internal.display.cutout.emulation.tall
+64772 2940 -1 /data/data/com.android.internal.display.cutout.emulation.tall/cache
+64772 2941 -1 /data/data/com.android.internal.display.cutout.emulation.tall/code_cache
+64772 5070 -1 /data/data/com.google.android.youtube
+64772 5071 -1 /data/data/com.google.android.youtube/cache
+64772 1369 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache
+64772 1460 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/version
+64772 1455 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/prefs
+64772 1930 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache
+64772 1923 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache/index
+64772 2180 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache/index-dir
+64772 1868 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache/index-dir/the-real-index
+64772 5915 -1 /data/data/com.google.android.youtube/cache/oat
+64772 6341 -1 /data/data/com.google.android.youtube/cache/oat/1548865591327.jar.cur.prof
+64772 5072 -1 /data/data/com.google.android.youtube/code_cache
+64772 1583 -1 /data/data/com.google.android.youtube/shared_prefs
+64772 6183 -1 /data/data/com.google.android.youtube/shared_prefs/youtube.xml
+64772 1637 -1 /data/data/com.google.android.youtube/databases
+64772 1641 -1 /data/data/com.google.android.youtube/databases/com.google.android.libraries.youtube.common.task.ScheduledTaskStore
+64772 1659 -1 /data/data/com.google.android.youtube/databases/com.google.android.libraries.youtube.common.task.ScheduledTaskStore-journal
+64772 2056 -1 /data/data/com.google.android.youtube/databases/google_conversion_tracking.db
+64772 2058 -1 /data/data/com.google.android.youtube/databases/google_conversion_tracking.db-journal
+64772 1924 -1 /data/data/com.google.android.youtube/databases/youtube_upload_service
+64772 2089 -1 /data/data/com.google.android.youtube/databases/youtube_upload_service-journal
+64772 1553 -1 /data/data/com.google.android.youtube/no_backup
+64772 1610 -1 /data/data/com.google.android.youtube/no_backup/com.google.android.gms.appid-no-backup
+64772 1929 -1 /data/data/com.google.android.youtube/files
+64772 2945 -1 /data/data/com.android.certinstaller
+64772 2946 -1 /data/data/com.android.certinstaller/cache
+64772 2947 -1 /data/data/com.android.certinstaller/code_cache
+64772 2948 -1 /data/data/com.android.theme.color.black
+64772 2949 -1 /data/data/com.android.theme.color.black/cache
+64772 2950 -1 /data/data/com.android.theme.color.black/code_cache
+64772 5077 -1 /data/data/com.google.android.ext.services
+64772 5078 -1 /data/data/com.google.android.ext.services/cache
+64772 5079 -1 /data/data/com.google.android.ext.services/code_cache
+64772 2954 -1 /data/data/com.android.theme.color.green
+64772 2955 -1 /data/data/com.android.theme.color.green/cache
+64772 2956 -1 /data/data/com.android.theme.color.green/code_cache
+64772 2957 -1 /data/data/com.android.theme.color.ocean
+64772 2958 -1 /data/data/com.android.theme.color.ocean/cache
+64772 2959 -1 /data/data/com.android.theme.color.ocean/code_cache
+64772 2960 -1 /data/data/com.android.theme.color.space
+64772 2961 -1 /data/data/com.android.theme.color.space/cache
+64772 2962 -1 /data/data/com.android.theme.color.space/code_cache
+64772 2963 -1 /data/data/com.android.internal.systemui.navbar.threebutton
+64772 2964 -1 /data/data/com.android.internal.systemui.navbar.threebutton/cache
+64772 2965 -1 /data/data/com.android.internal.systemui.navbar.threebutton/code_cache
+64772 2966 -1 /data/data/com.qti.qualcomm.datastatusnotification
+64772 2967 -1 /data/data/com.qti.qualcomm.datastatusnotification/cache
+64772 2968 -1 /data/data/com.qti.qualcomm.datastatusnotification/code_cache
+64772 2969 -1 /data/data/android
+64772 2970 -1 /data/data/android/cache
+64772 2971 -1 /data/data/android/code_cache
+64772 5081 -1 /data/data/com.google.android.overlay.pixelconfig2018
+64772 5082 -1 /data/data/com.google.android.overlay.pixelconfig2018/cache
+64772 5083 -1 /data/data/com.google.android.overlay.pixelconfig2018/code_cache
+64772 2978 -1 /data/data/com.android.theme.icon_pack.rounded.launcher
+64772 2979 -1 /data/data/com.android.theme.icon_pack.rounded.launcher/cache
+64772 2980 -1 /data/data/com.android.theme.icon_pack.rounded.launcher/code_cache
+64772 2981 -1 /data/data/com.android.egg
+64772 2982 -1 /data/data/com.android.egg/cache
+64772 2983 -1 /data/data/com.android.egg/code_cache
+64772 2984 -1 /data/data/com.android.mtp
+64772 2985 -1 /data/data/com.android.mtp/cache
+64772 2986 -1 /data/data/com.android.mtp/code_cache
+64772 3463 -1 /data/data/com.android.mtp/databases
+64772 3464 -1 /data/data/com.android.mtp/databases/database
+64772 3466 -1 /data/data/com.android.mtp/databases/database-journal
+64772 2987 -1 /data/data/com.android.nfc
+64772 2988 -1 /data/data/com.android.nfc/cache
+64772 2989 -1 /data/data/com.android.nfc/code_cache
+64772 3355 -1 /data/data/com.android.nfc/shared_prefs
+64772 3368 -1 /data/data/com.android.nfc/shared_prefs/NfcServicePrefs.xml
+64772 3357 -1 /data/data/com.android.nfc/files
+64772 2990 -1 /data/data/com.android.ons
+64772 2991 -1 /data/data/com.android.ons/cache
+64772 2992 -1 /data/data/com.android.ons/code_cache
+64772 2993 -1 /data/data/com.android.stk
+64772 2994 -1 /data/data/com.android.stk/cache
+64772 2995 -1 /data/data/com.android.stk/code_cache
+64772 5137 -1 /data/data/com.breel.wallpapers18
+64772 5138 -1 /data/data/com.breel.wallpapers18/cache
+64772 5139 -1 /data/data/com.breel.wallpapers18/code_cache
+64772 3000 -1 /data/data/com.android.backupconfirm
+64772 3001 -1 /data/data/com.android.backupconfirm/cache
+64772 3002 -1 /data/data/com.android.backupconfirm/code_cache
+64772 5088 -1 /data/data/com.android.sdm.plugins.connmo
+64772 5089 -1 /data/data/com.android.sdm.plugins.connmo/cache
+64772 5090 -1 /data/data/com.android.sdm.plugins.connmo/code_cache
+64772 5413 -1 /data/data/com.verizon.obdm
+64772 5414 -1 /data/data/com.verizon.obdm/cache
+64772 5415 -1 /data/data/com.verizon.obdm/code_cache
+64772 3009 -1 /data/data/com.android.systemui.auto_generated_rro_vendor__
+64772 3010 -1 /data/data/com.android.systemui.auto_generated_rro_vendor__/cache
+64772 3011 -1 /data/data/com.android.systemui.auto_generated_rro_vendor__/code_cache
+64772 3013 -1 /data/data/com.android.internal.systemui.navbar.twobutton
+64772 3014 -1 /data/data/com.android.internal.systemui.navbar.twobutton/cache
+64772 3015 -1 /data/data/com.android.internal.systemui.navbar.twobutton/code_cache
+64772 5152 -1 /data/data/com.google.ar.core
+64772 5153 -1 /data/data/com.google.ar.core/cache
+64772 5154 -1 /data/data/com.google.ar.core/code_cache
+64772 3019 -1 /data/data/com.qualcomm.qti.radioconfiginterface
+64772 3020 -1 /data/data/com.qualcomm.qti.radioconfiginterface/cache
+64772 3021 -1 /data/data/com.qualcomm.qti.radioconfiginterface/code_cache
+64772 3022 -1 /data/data/org.codeaurora.ims
+64772 3023 -1 /data/data/org.codeaurora.ims/cache
+64772 3024 -1 /data/data/org.codeaurora.ims/code_cache
+64772 3025 -1 /data/data/com.android.statementservice
+64772 3026 -1 /data/data/com.android.statementservice/cache
+64772 3027 -1 /data/data/com.android.statementservice/code_cache
+64772 3029 -1 /data/data/com.android.hotspot2
+64772 3030 -1 /data/data/com.android.hotspot2/cache
+64772 3031 -1 /data/data/com.android.hotspot2/code_cache
+64772 5091 -1 /data/data/com.google.android.googlequicksearchbox
+64772 5092 -1 /data/data/com.google.android.googlequicksearchbox/cache
+64772 1889 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async
+64772 1894 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async/version
+64772 1892 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async/prefs
+64772 7123 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async/prefs/local_prefs.json
+64772 6250 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView
+64772 6251 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/SafeBrowsing
+64772 6252 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad
+64772 6271 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/new
+64772 6272 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/pending
+64772 6273 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/completed
+64772 6274 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/attachments
+64772 6275 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/settings.dat
+64772 6270 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crash Reports
+64772 6255 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview
+64772 6256 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache
+64772 6257 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js
+64772 6258 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js/index
+64772 6259 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js/index-dir
+64772 6260 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js/index-dir/the-real-index
+64772 9393 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars
+64772 9506 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US
+64772 9100 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names
+64772 9101 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213
+64772 9163 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/SONG_NAME.fst
+64772 9201 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/SONG_NAME.syms
+64772 9252 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/metadata
+64772 9254 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/digest
+64772 9303 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names
+64772 9302 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620
+64772 9234 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/CONTACT_NAME.fst
+64772 9186 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/CONTACT_NAME.syms
+64772 9187 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/metadata
+64772 9199 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/digest
+64772 9732 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names
+64772 9304 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828
+64772 9272 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/APP_NAME.fst
+64772 9194 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/APP_NAME.syms
+64772 9261 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/metadata
+64772 9193 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/digest
+64772 5093 -1 /data/data/com.google.android.googlequicksearchbox/code_cache
+64772 1633 -1 /data/data/com.google.android.googlequicksearchbox/files
+64772 6167 -1 /data/data/com.google.android.googlequicksearchbox/files/recently
+64772 4770 -1 /data/data/com.google.android.googlequicksearchbox/files/recently/notLoggedIn
+64772 9226 -1 /data/data/com.google.android.googlequicksearchbox/files/native_crash_dir
+64772 9090 -1 /data/data/com.google.android.googlequicksearchbox/files/native_crash_dir/com.google.android.googlequicksearchbox:search
+64772 1472 -1 /data/data/com.google.android.googlequicksearchbox/files/velour
+64772 1470 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences
+64772 1478 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences/wernicke_player
+64772 7423 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences/ipa
+64772 8840 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences/ipa/IpaBgTask
+64772 7446 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data
+64772 7447 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa
+64772 7456 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa/TopServingContacts
+64772 7457 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa/ipa_0p_instant_cache
+64772 7458 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa/ZeroPrefixContacts
+64772 6792 -1 /data/data/com.google.android.googlequicksearchbox/files/client_data_request_log
+64772 1465 -1 /data/data/com.google.android.googlequicksearchbox/files/persisted_profiling_statistics
+64772 1644 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs
+64772 1404 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/GEL.GSAPrefs.xml
+64772 6454 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/consecutive_crash_stats.xml
+64772 1391 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/uncaught_exception_handler_stats.xml
+64772 1398 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/default_process_uncaught_exception_handler_stats.xml
+64772 1370 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/interactor_process_uncaught_exception_handler_stats.xml
+64772 5563 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/VoiceInteractionService.xml
+64772 6163 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/WebViewChromiumPrefs.xml
+64772 7494 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/ThrottlingLogger.xml
+64772 1652 -1 /data/data/com.google.android.googlequicksearchbox/app_shared_prefs
+64772 8087 -1 /data/data/com.google.android.googlequicksearchbox/app_shared_prefs/SearchSettings.bin
+64772 1394 -1 /data/data/com.google.android.googlequicksearchbox/app_shared_prefs/StartupSettings.bin
+64772 1471 -1 /data/data/com.google.android.googlequicksearchbox/app_si
+64772 1426 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store
+64772 1449 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db
+64772 1440 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db-journal
+64772 7592 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db-wal
+64772 7609 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db-shm
+64772 5721 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store
+64772 5722 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db
+64772 5723 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db-journal
+64772 7879 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db-wal
+64772 7882 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db-shm
+64772 7450 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store
+64772 7451 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db
+64772 7452 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db-journal
+64772 7454 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db-wal
+64772 7455 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db-shm
+64772 7462 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store
+64772 7463 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db
+64772 7464 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db-journal
+64772 7467 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db-wal
+64772 7468 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db-shm
+64772 7472 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store
+64772 7473 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db
+64772 7474 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db-journal
+64772 7475 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db-wal
+64772 7476 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db-shm
+64772 7479 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store
+64772 7480 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db
+64772 7481 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db-journal
+64772 7486 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db-wal
+64772 7487 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db-shm
+64772 7483 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store
+64772 7484 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db
+64772 7485 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db-journal
+64772 7488 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db-wal
+64772 7489 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db-shm
+64772 7496 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store
+64772 7497 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db
+64772 7499 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db-journal
+64772 7500 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db-wal
+64772 7501 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db-shm
+64772 7506 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store
+64772 7509 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db
+64772 7510 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db-journal
+64772 7512 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db-wal
+64772 7513 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db-shm
+64772 7507 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store
+64772 7508 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db
+64772 7511 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db-journal
+64772 7514 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db-wal
+64772 7515 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db-shm
+64772 7516 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store
+64772 7517 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db
+64772 7518 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db-journal
+64772 7519 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db-wal
+64772 7520 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db-shm
+64772 5976 -1 /data/data/com.google.android.googlequicksearchbox/app_sid
+64772 5983 -1 /data/data/com.google.android.googlequicksearchbox/databases
+64772 5985 -1 /data/data/com.google.android.googlequicksearchbox/databases/accounts.notifications.db
+64772 5987 -1 /data/data/com.google.android.googlequicksearchbox/databases/accounts.notifications.db-journal
+64772 5989 -1 /data/data/com.google.android.googlequicksearchbox/databases/-1_threads.notifications.db
+64772 5990 -1 /data/data/com.google.android.googlequicksearchbox/databases/-1_threads.notifications.db-journal
+64772 6709 -1 /data/data/com.google.android.googlequicksearchbox/databases/icing-mdh.db
+64772 6710 -1 /data/data/com.google.android.googlequicksearchbox/databases/icing-mdh.db-journal
+64772 9227 -1 /data/data/com.google.android.googlequicksearchbox/databases/opa_history
+64772 9235 -1 /data/data/com.google.android.googlequicksearchbox/databases/opa_history-journal
+64772 6155 -1 /data/data/com.google.android.googlequicksearchbox/app_webview
+64772 6157 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/variations_seed_new
+64772 6158 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/variations_stamp
+64772 6160 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Cookies
+64772 6162 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Cookies-journal
+64772 6248 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/webview_data.lock
+64772 6253 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Web Data
+64772 6254 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Web Data-journal
+64772 6263 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache
+64772 6264 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache/index
+64772 6265 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache/index-dir
+64772 6266 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache/index-dir/the-real-index
+64772 6267 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/blob_storage
+64772 4709 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/blob_storage/0f4b2aac-8cf5-40cc-98ea-51b9da55cfdd
+64772 5538 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage
+64772 5540 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/LOG
+64772 1371 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/LOCK
+64772 1395 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/MANIFEST-000001
+64772 1428 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/000003.log
+64772 1442 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/CURRENT
+64772 6391 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/pref_store
+64772 6156 -1 /data/data/com.google.android.googlequicksearchbox/app_textures
+64772 6262 -1 /data/data/com.google.android.googlequicksearchbox/app_webview_geolocation
+64772 6346 -1 /data/data/com.google.android.googlequicksearchbox/app_session
+64772 6347 -1 /data/data/com.google.android.googlequicksearchbox/app_session/00000000084429550670.binarypb
+64772 7079 -1 /data/data/com.google.android.googlequicksearchbox/app_session/00000000221868505453.binarypb
+64772 9073 -1 /data/data/com.google.android.googlequicksearchbox/app_session/00000000000000000100.binarypb
+64772 9068 -1 /data/data/com.google.android.googlequicksearchbox/app_g3_models
+64772 5155 -1 /data/data/com.android.vending
+64772 5156 -1 /data/data/com.android.vending/cache
+64772 2365 -1 /data/data/com.android.vending/cache/logs
+64772 2363 -1 /data/data/com.android.vending/cache/logs/null_account.metalog
+64772 5024 -1 /data/data/com.android.vending/cache/logs/null_account.metalog/play_metalog.log
+64772 5042 -1 /data/data/com.android.vending/cache/logs/null_account.metalog/logs_upload_attempt.log
+64772 2408 -1 /data/data/com.android.vending/cache/logs/null_account
+64772 2409 -1 /data/data/com.android.vending/cache/logs/null_account/eventlog.store5718595412279402518.log
+64772 6909 -1 /data/data/com.android.vending/cache/logs/null_account/eventlog.store1261484706649828691.log
+64772 2732 -1 /data/data/com.android.vending/cache/images
+64772 3008 -1 /data/data/com.android.vending/cache/main
+64772 4146 -1 /data/data/com.android.vending/cache/aia-logs
+64772 4147 -1 /data/data/com.android.vending/cache/aia-logs/null_account.metalog
+64772 1639 -1 /data/data/com.android.vending/cache/aia-logs/null_account.metalog/play_metalog.log
+64772 1733 -1 /data/data/com.android.vending/cache/aia-logs/null_account.metalog/logs_upload_attempt.log
+64772 4733 -1 /data/data/com.android.vending/cache/aia-logs/null_account
+64772 4736 -1 /data/data/com.android.vending/cache/aia-logs/null_account/eventlog.store5624403825978734260.log
+64772 5157 -1 /data/data/com.android.vending/code_cache
+64772 2650 -1 /data/data/com.android.vending/files
+64772 2426 -1 /data/data/com.android.vending/shared_prefs
+64772 7058 -1 /data/data/com.android.vending/shared_prefs/finsky.xml
+64772 7004 -1 /data/data/com.android.vending/shared_prefs/event_generator.xml
+64772 4497 -1 /data/data/com.android.vending/shared_prefs/cache_and_sync_preferences.xml
+64772 4997 -1 /data/data/com.android.vending/shared_prefs/verify_app_single_user_settings_shared_prefs.xml
+64772 5693 -1 /data/data/com.android.vending/shared_prefs/com.google.android.gcm.xml
+64772 5831 -1 /data/data/com.android.vending/shared_prefs/vending_preferences.xml
+64772 5806 -1 /data/data/com.android.vending/shared_prefs/com.google.android.gms.appid.xml
+64772 2339 -1 /data/data/com.android.vending/databases
+64772 2344 -1 /data/data/com.android.vending/databases/library.db
+64772 2364 -1 /data/data/com.android.vending/databases/library.db-journal
+64772 2468 -1 /data/data/com.android.vending/databases/scheduler
+64772 2467 -1 /data/data/com.android.vending/databases/scheduler-journal
+64772 3636 -1 /data/data/com.android.vending/databases/localappstate.db
+64772 3573 -1 /data/data/com.android.vending/databases/localappstate.db-journal
+64772 4710 -1 /data/data/com.android.vending/databases/install_queue.db
+64772 4712 -1 /data/data/com.android.vending/databases/install_queue.db-journal
+64772 4719 -1 /data/data/com.android.vending/databases/frosting.db
+64772 4725 -1 /data/data/com.android.vending/databases/frosting.db-journal
+64772 5758 -1 /data/data/com.android.vending/databases/verify_apps.db
+64772 5760 -1 /data/data/com.android.vending/databases/verify_apps.db-journal
+64772 5825 -1 /data/data/com.android.vending/databases/phenotype.db
+64772 5826 -1 /data/data/com.android.vending/databases/phenotype.db-journal
+64772 5833 -1 /data/data/com.android.vending/databases/split_install_service
+64772 5835 -1 /data/data/com.android.vending/databases/split_install_service-journal
+64772 4864 -1 /data/data/com.android.vending/app_FinskySetup
+64772 5691 -1 /data/data/com.android.vending/no_backup
+64772 5692 -1 /data/data/com.android.vending/no_backup/com.google.android.gms.appid-no-backup
+64772 5805 -1 /data/data/com.android.vending/no_backup/com.google.InstanceId.properties
+64772 5823 -1 /data/data/com.android.vending/app_sslcache
+64772 3038 -1 /data/data/com.android.internal.systemui.navbar.gestural_extra_wide_back
+64772 3039 -1 /data/data/com.android.internal.systemui.navbar.gestural_extra_wide_back/cache
+64772 3040 -1 /data/data/com.android.internal.systemui.navbar.gestural_extra_wide_back/code_cache
+64772 3041 -1 /data/data/com.qualcomm.qcrilmsgtunnel
+64772 3042 -1 /data/data/com.qualcomm.qcrilmsgtunnel/cache
+64772 3043 -1 /data/data/com.qualcomm.qcrilmsgtunnel/code_cache
+64772 3044 -1 /data/data/com.android.providers.settings
+64772 3045 -1 /data/data/com.android.providers.settings/cache
+64772 3046 -1 /data/data/com.android.providers.settings/code_cache
+64772 3047 -1 /data/data/com.android.sharedstoragebackup
+64772 3048 -1 /data/data/com.android.sharedstoragebackup/cache
+64772 3049 -1 /data/data/com.android.sharedstoragebackup/code_cache
+64772 3050 -1 /data/data/com.android.printspooler
+64772 3051 -1 /data/data/com.android.printspooler/cache
+64772 3360 -1 /data/data/com.android.printspooler/cache/icons
+64772 3052 -1 /data/data/com.android.printspooler/code_cache
+64772 3358 -1 /data/data/com.android.printspooler/files
+64772 3361 -1 /data/data/com.android.printspooler/shared_prefs
+64772 3053 -1 /data/data/com.android.theme.icon_pack.filled.settings
+64772 3054 -1 /data/data/com.android.theme.icon_pack.filled.settings/cache
+64772 3055 -1 /data/data/com.android.theme.icon_pack.filled.settings/code_cache
+64772 3056 -1 /data/data/com.android.dreams.basic
+64772 3057 -1 /data/data/com.android.dreams.basic/cache
+64772 3058 -1 /data/data/com.android.dreams.basic/code_cache
+64772 5180 -1 /data/data/com.google.android.as
+64772 5181 -1 /data/data/com.google.android.as/cache
+64772 5182 -1 /data/data/com.google.android.as/code_cache
+64772 1571 -1 /data/data/com.google.android.as/shared_prefs
+64772 2281 -1 /data/data/com.google.android.as/shared_prefs/com.google.android.gms.appid.xml
+64772 7921 -1 /data/data/com.google.android.as/shared_prefs/aiai_reflection_shared_prefs.xml
+64772 6711 -1 /data/data/com.google.android.as/shared_prefs/aiai_matchmaker_phenotype_config.xml
+64772 1585 -1 /data/data/com.google.android.as/files
+64772 1625 -1 /data/data/com.google.android.as/files/superpacks
+64772 1626 -1 /data/data/com.google.android.as/files/superpacks/manifests
+64772 1661 -1 /data/data/com.google.android.as/files/superpacks/manifests/template_table-2-en-us_bundled-3
+64772 1753 -1 /data/data/com.google.android.as/files/superpacks/template_table-2-en-us_bundled
+64772 1758 -1 /data/data/com.google.android.as/files/superpacks/template_table-2-en-us_bundled/template_table_main
+64772 1756 -1 /data/data/com.google.android.as/files/superpacks/template_table-2-en-us_bundled/template_table_main/template_table
+64772 1649 -1 /data/data/com.google.android.as/files/reflection_gel.engine
+64772 7870 -1 /data/data/com.google.android.as/files/assist_recognizer_0.2.bincfg
+64772 7860 -1 /data/data/com.google.android.as/files/mognet_script_detector_10scripts_0.1.model
+64772 8009 -1 /data/data/com.google.android.as/files/nugget_stats_1.0.dat
+64772 8010 -1 /data/data/com.google.android.as/files/region_proposal_text_detector_tfmini_gray_quantized.bincfg
+64772 7887 -1 /data/data/com.google.android.as/files/script_detector_10scripts_0.1.bincfg
+64772 4765 -1 /data/data/com.google.android.as/files/seastar_lstm_recognizer_latin_0.2.class_lst
+64772 4779 -1 /data/data/com.google.android.as/files/semanticlift_engine_scripts_0.3.bincfg
+64772 4781 -1 /data/data/com.google.android.as/files/tfmini_latin_conv_model.data_fp16
+64772 7884 -1 /data/data/com.google.android.as/files/tfmini_latin_lstm_model.data_fp16
+64772 8107 -1 /data/data/com.google.android.as/files/tfmini_lstm_recognizer_latin_0.3_batch24.bincfg
+64772 8110 -1 /data/data/com.google.android.as/files/tfmini_rpn_detector_space_to_depth_gray_quantized_v2_model.data
+64772 7528 -1 /data/data/com.google.android.as/files/backup_reflection_gel.engine
+64772 1598 -1 /data/data/com.google.android.as/databases
+64772 1600 -1 /data/data/com.google.android.as/databases/notifications_impression
+64772 1605 -1 /data/data/com.google.android.as/databases/notifications_impression-wal
+64772 1606 -1 /data/data/com.google.android.as/databases/notifications_impression-shm
+64772 1607 -1 /data/data/com.google.android.as/databases/superpacks.db
+64772 1608 -1 /data/data/com.google.android.as/databases/superpacks.db-journal
+64772 1654 -1 /data/data/com.google.android.as/databases/reflection_gel_events.db
+64772 1656 -1 /data/data/com.google.android.as/databases/reflection_gel_events.db-journal
+64772 2427 -1 /data/data/com.google.android.as/databases/aiai_matchmaker_fa_db
+64772 2521 -1 /data/data/com.google.android.as/databases/aiai_matchmaker_fa_db-wal
+64772 2518 -1 /data/data/com.google.android.as/databases/aiai_matchmaker_fa_db-shm
+64772 1734 -1 /data/data/com.google.android.as/no_backup
+64772 1732 -1 /data/data/com.google.android.as/no_backup/com.google.android.gms.appid-no-backup
+64772 2283 -1 /data/data/com.google.android.as/no_backup/com.google.InstanceId.properties
+64772 3063 -1 /data/data/com.android.se
+64772 3064 -1 /data/data/com.android.se/cache
+64772 3065 -1 /data/data/com.android.se/code_cache
+64772 3066 -1 /data/data/com.android.inputdevices
+64772 3067 -1 /data/data/com.android.inputdevices/cache
+64772 3068 -1 /data/data/com.android.inputdevices/code_cache
+64772 3069 -1 /data/data/com.android.bips
+64772 3070 -1 /data/data/com.android.bips/cache
+64772 3071 -1 /data/data/com.android.bips/code_cache
+64772 3548 -1 /data/data/com.qti.ltebc
+64772 1333 -1 /data/data/com.qti.ltebc/cache
+64772 521 -1 /data/data/com.qti.ltebc/code_cache
+64772 4827 -1 /data/data/com.qti.ltebc/files
+64772 6243 -1 /data/data/com.qti.ltebc/shared_prefs
+64772 7178 -1 /data/data/com.qti.ltebc/shared_prefs/alarm.xml
+64772 3075 -1 /data/data/com.android.theme.icon_pack.circular.settings
+64772 3076 -1 /data/data/com.android.theme.icon_pack.circular.settings/cache
+64772 3077 -1 /data/data/com.android.theme.icon_pack.circular.settings/code_cache
+64772 3078 -1 /data/data/com.qti.xdivert
+64772 3079 -1 /data/data/com.qti.xdivert/cache
+64772 3080 -1 /data/data/com.qti.xdivert/code_cache
+64772 3081 -1 /data/data/com.android.musicfx
+64772 3082 -1 /data/data/com.android.musicfx/cache
+64772 3083 -1 /data/data/com.android.musicfx/code_cache
+64772 3084 -1 /data/data/com.android.bluetooth.auto_generated_rro_vendor__
+64772 3085 -1 /data/data/com.android.bluetooth.auto_generated_rro_vendor__/cache
+64772 3086 -1 /data/data/com.android.bluetooth.auto_generated_rro_vendor__/code_cache
+64772 3087 -1 /data/data/com.android.cellbroadcastreceiver
+64772 3088 -1 /data/data/com.android.cellbroadcastreceiver/cache
+64772 3089 -1 /data/data/com.android.cellbroadcastreceiver/code_cache
+64772 3090 -1 /data/data/android.telephony.overlay.cmcc
+64772 3091 -1 /data/data/android.telephony.overlay.cmcc/cache
+64772 3092 -1 /data/data/android.telephony.overlay.cmcc/code_cache
+64772 3093 -1 /data/data/com.android.theme.icon.teardrop
+64772 3094 -1 /data/data/com.android.theme.icon.teardrop/cache
+64772 3095 -1 /data/data/com.android.theme.icon.teardrop/code_cache
+64772 5094 -1 /data/data/com.google.android.onetimeinitializer
+64772 5095 -1 /data/data/com.google.android.onetimeinitializer/cache
+64772 5096 -1 /data/data/com.google.android.onetimeinitializer/code_cache
+64772 6062 -1 /data/data/com.google.android.onetimeinitializer/shared_prefs
+64772 6064 -1 /data/data/com.google.android.onetimeinitializer/shared_prefs/oti.xml
+64772 1347 -1 /data/data/com.google.mds
+64772 1337 -1 /data/data/com.google.mds/cache
+64772 1348 -1 /data/data/com.google.mds/code_cache
+64772 6240 -1 /data/data/com.google.mds/shared_prefs
+64772 6241 -1 /data/data/com.google.mds/shared_prefs/com.google.mds.xml
+64772 3102 -1 /data/data/com.android.server.telecom
+64772 3103 -1 /data/data/com.android.server.telecom/cache
+64772 3104 -1 /data/data/com.android.server.telecom/code_cache
+64772 3105 -1 /data/data/com.android.keychain
+64772 3106 -1 /data/data/com.android.keychain/cache
+64772 3107 -1 /data/data/com.android.keychain/code_cache
+64772 3108 -1 /data/data/com.android.service.ims
+64772 3109 -1 /data/data/com.android.service.ims/cache
+64772 3110 -1 /data/data/com.android.service.ims/code_cache
+64772 5097 -1 /data/data/com.google.android.ext.shared
+64772 5098 -1 /data/data/com.google.android.ext.shared/cache
+64772 5099 -1 /data/data/com.google.android.ext.shared/code_cache
+64772 5104 -1 /data/data/com.google.android.apps.diagnosticstool
+64772 5105 -1 /data/data/com.google.android.apps.diagnosticstool/cache
+64772 5106 -1 /data/data/com.google.android.apps.diagnosticstool/code_cache
+64772 3120 -1 /data/data/com.android.theme.icon_pack.filled.systemui
+64772 3121 -1 /data/data/com.android.theme.icon_pack.filled.systemui/cache
+64772 3122 -1 /data/data/com.android.theme.icon_pack.filled.systemui/code_cache
+64772 5183 -1 /data/data/com.google.android.gm
+64772 5184 -1 /data/data/com.google.android.gm/cache
+64772 5185 -1 /data/data/com.google.android.gm/code_cache
+64772 1992 -1 /data/data/com.google.android.gm/shared_prefs
+64772 6441 -1 /data/data/com.google.android.gm/shared_prefs/UnifiedEmail.xml
+64772 9585 -1 /data/data/com.google.android.gm/shared_prefs/GMAIL_NETWORK_LOGGING_DEPOT.xml
+64772 5966 -1 /data/data/com.google.android.gm/shared_prefs/Gmail.xml
+64772 2153 -1 /data/data/com.google.android.gm/shared_prefs/_has_set_default_values.xml
+64772 2204 -1 /data/data/com.google.android.gm/shared_prefs/com.google.android.gm_preferences.xml
+64772 2205 -1 /data/data/com.google.android.gm/shared_prefs/MailAppProvider.xml
+64772 6026 -1 /data/data/com.google.android.gm/shared_prefs/FlagPrefs.xml
+64772 5962 -1 /data/data/com.google.android.gm/shared_prefs/timeZoneDbVersion.xml
+64772 6408 -1 /data/data/com.google.android.gm/shared_prefs/AndroidMail.Main.xml
+64772 2150 -1 /data/data/com.google.android.gm/databases
+64772 2155 -1 /data/data/com.google.android.gm/databases/EmailProvider.db
+64772 2203 -1 /data/data/com.google.android.gm/databases/EmailProvider.db-journal
+64772 2315 -1 /data/data/com.google.android.gm/databases/EmailProviderBody.db
+64772 2324 -1 /data/data/com.google.android.gm/databases/EmailProviderBody.db-journal
+64772 1433 -1 /data/data/com.google.android.gm/files
+64772 1462 -1 /data/data/com.google.android.gm/files/gaClientId
+64772 3126 -1 /data/data/com.android.calllogbackup
+64772 3127 -1 /data/data/com.android.calllogbackup/cache
+64772 3128 -1 /data/data/com.android.calllogbackup/code_cache
+64772 3129 -1 /data/data/com.android.safetyregulatoryinfo
+64772 3130 -1 /data/data/com.android.safetyregulatoryinfo/cache
+64772 3131 -1 /data/data/com.android.safetyregulatoryinfo/code_cache
+64772 3132 -1 /data/data/com.android.localtransport
+64772 3133 -1 /data/data/com.android.localtransport/cache
+64772 3134 -1 /data/data/com.android.localtransport/code_cache
+64772 3552 -1 /data/data/com.android.localtransport/files
+64772 3553 -1 /data/data/com.android.localtransport/files/1
+64772 3554 -1 /data/data/com.android.localtransport/files/1/_full
+64772 3555 -1 /data/data/com.android.localtransport/files/1/_delta
+64772 5125 -1 /data/data/com.verizon.obdm_permissions
+64772 5126 -1 /data/data/com.verizon.obdm_permissions/cache
+64772 5127 -1 /data/data/com.verizon.obdm_permissions/code_cache
+64772 3139 -1 /data/data/com.android.carrierdefaultapp
+64772 3140 -1 /data/data/com.android.carrierdefaultapp/cache
+64772 3141 -1 /data/data/com.android.carrierdefaultapp/code_cache
+64772 5122 -1 /data/data/com.google.android.connectivitymonitor
+64772 5123 -1 /data/data/com.google.android.connectivitymonitor/cache
+64772 5124 -1 /data/data/com.google.android.connectivitymonitor/code_cache
+64772 5917 -1 /data/data/com.google.android.connectivitymonitor/shared_prefs
+64772 3146 -1 /data/data/com.android.theme.icon_pack.filled.android
+64772 3147 -1 /data/data/com.android.theme.icon_pack.filled.android/cache
+64772 3148 -1 /data/data/com.android.theme.icon_pack.filled.android/code_cache
+64772 3150 -1 /data/data/com.android.proxyhandler
+64772 3151 -1 /data/data/com.android.proxyhandler/cache
+64772 3152 -1 /data/data/com.android.proxyhandler/code_cache
+64772 3153 -1 /data/data/com.android.theme.icon_pack.circular.systemui
+64772 3155 -1 /data/data/com.android.theme.icon_pack.circular.systemui/cache
+64772 3156 -1 /data/data/com.android.theme.icon_pack.circular.systemui/code_cache
+64772 5134 -1 /data/data/com.google.android.soundpicker
+64772 5135 -1 /data/data/com.google.android.soundpicker/cache
+64772 5136 -1 /data/data/com.google.android.soundpicker/code_cache
+64772 3166 -1 /data/data/com.android.soundpicker
+64772 3167 -1 /data/data/com.android.soundpicker/cache
+64772 3168 -1 /data/data/com.android.soundpicker/code_cache
+64772 3163 -1 /data/data/com.android.managedprovisioning
+64772 3164 -1 /data/data/com.android.managedprovisioning/cache
+64772 3165 -1 /data/data/com.android.managedprovisioning/code_cache
+64772 3501 -1 /data/data/com.android.managedprovisioning/shared_prefs
+64772 3502 -1 /data/data/com.android.managedprovisioning/files
+64772 5131 -1 /data/data/com.google.android.apps.messaging
+64772 5132 -1 /data/data/com.google.android.apps.messaging/cache
+64772 5133 -1 /data/data/com.google.android.apps.messaging/code_cache
+64772 5568 -1 /data/data/com.google.android.apps.messaging/files
+64772 5603 -1 /data/data/com.google.android.apps.messaging/files/tiktok
+64772 5604 -1 /data/data/com.google.android.apps.messaging/files/tiktok/103243289
+64772 5637 -1 /data/data/com.google.android.apps.messaging/files/4.4.083 (hydra_rc26_alldpi.arm64-v8a.phone)
+64772 5571 -1 /data/data/com.google.android.apps.messaging/shared_prefs
+64772 7643 -1 /data/data/com.google.android.apps.messaging/shared_prefs/com.google.android.gms.measurement.prefs.xml
+64772 4754 -1 /data/data/com.google.android.apps.messaging/shared_prefs/bugle.xml
+64772 5675 -1 /data/data/com.google.android.apps.messaging/shared_prefs/PhenotypePrefs.xml
+64772 5677 -1 /data/data/com.google.android.apps.messaging/shared_prefs/growthkit_phenotype_prefs.xml
+64772 5681 -1 /data/data/com.google.android.apps.messaging/shared_prefs/growthkit_shared_prefs.xml
+64772 5686 -1 /data/data/com.google.android.apps.messaging/shared_prefs/buglesub_-1.xml
+64772 6285 -1 /data/data/com.google.android.apps.messaging/shared_prefs/carrierservices_library_phenotype_preferences.xml
+64772 5695 -1 /data/data/com.google.android.apps.messaging/shared_prefs/com.google.android.gms.appid.xml
+64772 7316 -1 /data/data/com.google.android.apps.messaging/shared_prefs/com.google.android.apps.messaging_preferences.xml
+64772 6290 -1 /data/data/com.google.android.apps.messaging/shared_prefs/gsma.joyn.preferences.xml
+64772 5574 -1 /data/data/com.google.android.apps.messaging/no_backup
+64772 5575 -1 /data/data/com.google.android.apps.messaging/no_backup/com.google.android.gms.appid-no-backup
+64772 5694 -1 /data/data/com.google.android.apps.messaging/no_backup/com.google.InstanceId.properties
+64772 5608 -1 /data/data/com.google.android.apps.messaging/databases
+64772 5609 -1 /data/data/com.google.android.apps.messaging/databases/androidx.work.workdb
+64772 5611 -1 /data/data/com.google.android.apps.messaging/databases/androidx.work.workdb-wal
+64772 5612 -1 /data/data/com.google.android.apps.messaging/databases/androidx.work.workdb-shm
+64772 5640 -1 /data/data/com.google.android.apps.messaging/databases/bugle_db
+64772 5642 -1 /data/data/com.google.android.apps.messaging/databases/bugle_db-wal
+64772 5643 -1 /data/data/com.google.android.apps.messaging/databases/bugle_db-shm
+64772 7227 -1 /data/data/com.google.android.apps.messaging/databases/growthkit.db
+64772 3175 -1 /data/data/com.android.providers.partnerbookmarks
+64772 3176 -1 /data/data/com.android.providers.partnerbookmarks/cache
+64772 3177 -1 /data/data/com.android.providers.partnerbookmarks/code_cache
+64772 3181 -1 /data/data/com.android.service.ims.presence
+64772 3182 -1 /data/data/com.android.service.ims.presence/cache
+64772 3183 -1 /data/data/com.android.service.ims.presence/code_cache
+64772 3356 -1 /data/data/com.android.service.ims.presence/databases
+64772 3520 -1 /data/data/com.android.service.ims.presence/databases/rcseab.db
+64772 3521 -1 /data/data/com.android.service.ims.presence/databases/rcseab.db-journal
+64772 3519 -1 /data/data/com.android.service.ims.presence/shared_prefs
+64772 3526 -1 /data/data/com.android.service.ims.presence/shared_prefs/com.android.vt.eab.xml
+64772 3184 -1 /data/data/com.android.wallpaper.livepicker
+64772 3185 -1 /data/data/com.android.wallpaper.livepicker/cache
+64772 3186 -1 /data/data/com.android.wallpaper.livepicker/code_cache
+64772 3187 -1 /data/data/com.android.phone.auto_generated_rro_vendor__
+64772 3188 -1 /data/data/com.android.phone.auto_generated_rro_vendor__/cache
+64772 3189 -1 /data/data/com.android.phone.auto_generated_rro_vendor__/code_cache
+64772 3193 -1 /data/data/com.android.theme.icon.squircle
+64772 3194 -1 /data/data/com.android.theme.icon.squircle/cache
+64772 3195 -1 /data/data/com.android.theme.icon.squircle/code_cache
+64772 3214 -1 /data/data/com.android.nfc.auto_generated_rro_vendor__
+64772 3215 -1 /data/data/com.android.nfc.auto_generated_rro_vendor__/cache
+64772 3216 -1 /data/data/com.android.nfc.auto_generated_rro_vendor__/code_cache
+64772 3235 -1 /data/data/com.android.shell
+64772 3236 -1 /data/data/com.android.shell/cache
+64772 3237 -1 /data/data/com.android.shell/code_cache
+64772 3250 -1 /data/data/com.android.emergency
+64772 3251 -1 /data/data/com.android.emergency/cache
+64772 3252 -1 /data/data/com.android.emergency/code_cache
+64772 3256 -1 /data/data/com.android.location.fused
+64772 3257 -1 /data/data/com.android.location.fused/cache
+64772 3258 -1 /data/data/com.android.location.fused/code_cache
+64772 3259 -1 /data/data/com.android.theme.color.orchid
+64772 3260 -1 /data/data/com.android.theme.color.orchid/cache
+64772 3261 -1 /data/data/com.android.theme.color.orchid/code_cache
+64772 3268 -1 /data/data/com.android.theme.color.purple
+64772 3269 -1 /data/data/com.android.theme.color.purple/cache
+64772 3270 -1 /data/data/com.android.theme.color.purple/code_cache
+64772 3274 -1 /data/data/com.qualcomm.qti.confdialer
+64772 3275 -1 /data/data/com.qualcomm.qti.confdialer/cache
+64772 3276 -1 /data/data/com.qualcomm.qti.confdialer/code_cache
+64772 5171 -1 /data/data/com.google.android.grilservice
+64772 5172 -1 /data/data/com.google.android.grilservice/cache
+64772 5173 -1 /data/data/com.google.android.grilservice/code_cache
+64772 3280 -1 /data/data/com.android.traceur
+64772 3281 -1 /data/data/com.android.traceur/cache
+64772 3282 -1 /data/data/com.android.traceur/code_cache
+64772 3578 -1 /data/data/com.android.traceur/shared_prefs
+64772 3581 -1 /data/data/com.android.traceur/shared_prefs/com.android.traceur_preferences.xml
+64772 3283 -1 /data/data/com.google.pixel.crosshatch.gamedriver
+64772 3284 -1 /data/data/com.google.pixel.crosshatch.gamedriver/cache
+64772 3285 -1 /data/data/com.google.pixel.crosshatch.gamedriver/code_cache
+64772 3286 -1 /data/data/com.android.bluetooth
+64772 3287 -1 /data/data/com.android.bluetooth/cache
+64772 3288 -1 /data/data/com.android.bluetooth/code_cache
+64772 5189 -1 /data/data/com.android.sdm.plugins.sprintdm
+64772 5190 -1 /data/data/com.android.sdm.plugins.sprintdm/cache
+64772 5191 -1 /data/data/com.android.sdm.plugins.sprintdm/code_cache
+64772 3298 -1 /data/data/com.qualcomm.embms
+64772 3299 -1 /data/data/com.qualcomm.embms/cache
+64772 3300 -1 /data/data/com.qualcomm.embms/code_cache
+64772 3307 -1 /data/data/com.android.theme.icon.roundedrect
+64772 3308 -1 /data/data/com.android.theme.icon.roundedrect/cache
+64772 3309 -1 /data/data/com.android.theme.icon.roundedrect/code_cache
+64772 3310 -1 /data/data/com.android.internal.systemui.navbar.gestural_narrow_back
+64772 3311 -1 /data/data/com.android.internal.systemui.navbar.gestural_narrow_back/cache
+64772 3312 -1 /data/data/com.android.internal.systemui.navbar.gestural_narrow_back/code_cache
+64772 3313 -1 /data/data/com.android.theme.icon_pack.rounded.settings
+64772 3314 -1 /data/data/com.android.theme.icon_pack.rounded.settings/cache
+64772 3315 -1 /data/data/com.android.theme.icon_pack.rounded.settings/code_cache
+64772 3319 -1 /data/data/com.android.theme.icon_pack.circular.android
+64772 3320 -1 /data/data/com.android.theme.icon_pack.circular.android/cache
+64772 3321 -1 /data/data/com.android.theme.icon_pack.circular.android/code_cache
+64772 5113 -1 /data/data/com.android.simappdialog.auto_generated_rro_product__
+64772 5114 -1 /data/data/com.android.simappdialog.auto_generated_rro_product__/cache
+64772 5115 -1 /data/data/com.android.simappdialog.auto_generated_rro_product__/code_cache
+64772 5116 -1 /data/data/com.android.safetyregulatoryinfo.auto_generated_rro_product__
+64772 5117 -1 /data/data/com.android.safetyregulatoryinfo.auto_generated_rro_product__/cache
+64772 5118 -1 /data/data/com.android.safetyregulatoryinfo.auto_generated_rro_product__/code_cache
+64772 5128 -1 /data/data/com.android.systemui.auto_generated_rro_product__
+64772 5129 -1 /data/data/com.android.systemui.auto_generated_rro_product__/cache
+64772 5130 -1 /data/data/com.android.systemui.auto_generated_rro_product__/code_cache
+64772 5140 -1 /data/data/android.autoinstalls.config.google.nexus
+64772 5141 -1 /data/data/android.autoinstalls.config.google.nexus/cache
+64772 5142 -1 /data/data/android.autoinstalls.config.google.nexus/code_cache
+64772 5159 -1 /data/data/com.google.android.marvin.talkback
+64772 5160 -1 /data/data/com.google.android.marvin.talkback/cache
+64772 5161 -1 /data/data/com.google.android.marvin.talkback/code_cache
+64772 5165 -1 /data/data/com.android.hotwordenrollment.xgoogle
+64772 5166 -1 /data/data/com.android.hotwordenrollment.xgoogle/cache
+64772 5167 -1 /data/data/com.android.hotwordenrollment.xgoogle/code_cache
+64772 5595 -1 /data/data/com.android.hotwordenrollment.xgoogle/shared_prefs
+64772 5605 -1 /data/data/com.android.hotwordenrollment.xgoogle/shared_prefs/enrollment_prefs.xml
+64772 5192 -1 /data/data/com.android.ramdump
+64772 5193 -1 /data/data/com.android.ramdump/cache
+64772 5194 -1 /data/data/com.android.ramdump/code_cache
+64772 5679 -1 /data/data/com.android.ramdump/files
+64772 6106 -1 /data/data/com.android.ramdump/databases
+64772 6107 -1 /data/data/com.android.ramdump/databases/ramdump.db
+64772 6108 -1 /data/data/com.android.ramdump/databases/ramdump.db-journal
+64772 5195 -1 /data/data/com.google.android.permissioncontroller
+64772 5196 -1 /data/data/com.google.android.permissioncontroller/cache
+64772 5197 -1 /data/data/com.google.android.permissioncontroller/code_cache
+64772 5198 -1 /data/data/com.google.intelligence.sense
+64772 5199 -1 /data/data/com.google.intelligence.sense/cache
+64772 5200 -1 /data/data/com.google.intelligence.sense/code_cache
+64772 6195 -1 /data/data/com.google.intelligence.sense/shared_prefs
+64772 6204 -1 /data/data/com.google.intelligence.sense/shared_prefs/com.google.intelligence.sense_preferences.xml
+64772 6207 -1 /data/data/com.google.intelligence.sense/shared_prefs/_has_set_default_values.xml
+64772 6222 -1 /data/data/com.google.intelligence.sense/shared_prefs/phenotypePrefs.xml
+64772 6197 -1 /data/data/com.google.intelligence.sense/files
+64772 6198 -1 /data/data/com.google.intelligence.sense/databases
+64772 6199 -1 /data/data/com.google.intelligence.sense/databases/superpacks.db
+64772 6200 -1 /data/data/com.google.intelligence.sense/databases/superpacks.db-journal
+64772 5201 -1 /data/data/com.google.android.setupwizard
+64772 5202 -1 /data/data/com.google.android.setupwizard/cache
+64772 5203 -1 /data/data/com.google.android.setupwizard/code_cache
+64772 1532 -1 /data/data/com.google.android.setupwizard/shared_prefs
+64772 1541 -1 /data/data/com.google.android.setupwizard/files
+64772 1542 -1 /data/data/com.google.android.setupwizard/files/metrics
+64772 1543 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP
+64772 1544 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_c83624cc-dd63-4935-b7a2-8953f812a04c.protobuf
+64772 1663 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_f9db700f-766d-4962-a025-d1ebfd434c4c.protobuf
+64772 5878 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_f13c2ece-103d-4cd8-8cd2-0dd60f9d0a15.protobuf
+64772 6101 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_4ff8029d-1ac1-4980-9479-e9893bd85670.protobuf
+64772 6417 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_da5ce5c7-59a2-4532-a5da-c61075cd2ecb.protobuf
+64772 6888 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_783f5c56-ada0-4201-8b55-23695e47fbba.protobuf
+64772 7012 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_b4d96681-1124-4962-94e5-81f191d9342f.protobuf
+64772 6975 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_695d4d5b-a7b1-4a87-b9a7-4d56c4383669.protobuf
+64772 7097 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_3d425ea5-fe06-4225-b560-0ada9e3bbc7e.protobuf
+64772 3779 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_c4d8f88b-acde-4805-a502-60814f992ec9.protobuf
+64772 1587 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_PREDEFERRED_SETUP
+64772 1590 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_PREDEFERRED_SETUP/event_95401e40-f206-4f85-be1d-40e568b58302.protobuf
+64772 5204 -1 /data/data/com.google.android.netgrapher
+64772 5205 -1 /data/data/com.google.android.netgrapher/cache
+64772 5206 -1 /data/data/com.google.android.netgrapher/code_cache
+64772 5213 -1 /data/data/com.google.android.angle
+64772 5214 -1 /data/data/com.google.android.angle/cache
+64772 5215 -1 /data/data/com.google.android.angle/code_cache
+64772 5698 -1 /data/data/com.google.android.angle/shared_prefs
+64772 5699 -1 /data/data/com.google.android.angle/shared_prefs/com.google.android.angle_preferences.xml
+64772 5222 -1 /data/data/com.google.android.volta
+64772 5223 -1 /data/data/com.google.android.volta/cache
+64772 5224 -1 /data/data/com.google.android.volta/code_cache
+64772 6132 -1 /data/data/com.google.android.volta/shared_prefs
+64772 7916 -1 /data/data/com.google.android.volta/shared_prefs/com.google.android.volta_preferences.xml
+64772 6134 -1 /data/data/com.google.android.volta/shared_prefs/_has_set_default_values.xml
+64772 6135 -1 /data/data/com.google.android.volta/shared_prefs/analytics.xml
+64772 6137 -1 /data/data/com.google.android.volta/databases
+64772 6139 -1 /data/data/com.google.android.volta/databases/volta_metrics.db
+64772 6141 -1 /data/data/com.google.android.volta/databases/volta_metrics.db-wal
+64772 6142 -1 /data/data/com.google.android.volta/databases/volta_metrics.db-shm
+64772 6677 -1 /data/data/com.google.android.volta/files
+64772 5231 -1 /data/data/com.android.providers.settings.auto_generated_rro_product__
+64772 5232 -1 /data/data/com.android.providers.settings.auto_generated_rro_product__/cache
+64772 5233 -1 /data/data/com.android.providers.settings.auto_generated_rro_product__/code_cache
+64772 5234 -1 /data/data/com.google.android.apps.wellbeing
+64772 5235 -1 /data/data/com.google.android.apps.wellbeing/cache
+64772 5236 -1 /data/data/com.google.android.apps.wellbeing/code_cache
+64772 5240 -1 /data/data/com.google.android.apps.wellbeing/files
+64772 5241 -1 /data/data/com.google.android.apps.wellbeing/files/tiktok
+64772 5242 -1 /data/data/com.google.android.apps.wellbeing/files/tiktok/103243289
+64772 5450 -1 /data/data/com.google.android.apps.wellbeing/files/103795117
+64772 6734 -1 /data/data/com.google.android.apps.wellbeing/files/AppSyncPreferences.pb
+64772 6808 -1 /data/data/com.google.android.apps.wellbeing/files/AppUsagePreferences.pb
+64772 2953 -1 /data/data/com.google.android.apps.wellbeing/files/AppLimitPreferences.pb
+64772 1735 -1 /data/data/com.google.android.apps.wellbeing/files/AutoDndPreferences.pb
+64772 6439 -1 /data/data/com.google.android.apps.wellbeing/files/phenotype
+64772 7268 -1 /data/data/com.google.android.apps.wellbeing/files/phenotype/com.google.android.apps.wellbeing.device
+64772 5341 -1 /data/data/com.google.android.apps.wellbeing/shared_prefs
+64772 1872 -1 /data/data/com.google.android.apps.wellbeing/databases
+64772 1870 -1 /data/data/com.google.android.apps.wellbeing/databases/app_config
+64772 3580 -1 /data/data/com.google.android.apps.wellbeing/databases/app_usage
+64772 3615 -1 /data/data/com.google.android.apps.wellbeing/databases/app_usage-wal
+64772 3445 -1 /data/data/com.google.android.apps.wellbeing/databases/app_usage-shm
+64772 5237 -1 /data/data/com.google.android.dialer
+64772 5238 -1 /data/data/com.google.android.dialer/cache
+64772 3172 -1 /data/data/com.google.android.dialer/cache/persistent_log
+64772 5055 -1 /data/data/com.google.android.dialer/cache/persistent_log/plain_text
+64772 1729 -1 /data/data/com.google.android.dialer/cache/persistent_log/plain_text/0
+64772 5239 -1 /data/data/com.google.android.dialer/code_cache
+64772 3617 -1 /data/data/com.google.android.dialer/files
+64772 2404 -1 /data/data/com.google.android.dialer/files/photos
+64772 4778 -1 /data/data/com.google.android.dialer/files/photos/raw
+64772 4145 -1 /data/data/com.google.android.dialer/files/thumbnails
+64772 4775 -1 /data/data/com.google.android.dialer/files/thumbnails/raw
+64772 4782 -1 /data/data/com.google.android.dialer/files/audios
+64772 4812 -1 /data/data/com.google.android.dialer/files/audios/raw
+64772 4141 -1 /data/data/com.google.android.dialer/databases
+64772 4815 -1 /data/data/com.google.android.dialer/databases/voicemail.db
+64772 4840 -1 /data/data/com.google.android.dialer/databases/voicemail.db-journal
+64772 5054 -1 /data/data/com.google.android.dialer/databases/dialer.db
+64772 2951 -1 /data/data/com.google.android.dialer/databases/dialer.db-journal
+64772 4875 -1 /data/data/com.google.android.dialer/shared_prefs
+64772 5017 -1 /data/data/com.google.android.dialer/shared_prefs/com.google.android.dialer.xml
+64772 5961 -1 /data/data/com.google.android.dialer/shared_prefs/com.google.android.dialer_preferences.xml
+64772 5963 -1 /data/data/com.google.android.dialer/shared_prefs/dialer_phenotype_flags.xml
+64772 2974 -1 /data/data/com.google.android.dialer/shared_prefs/com.android.dialer.xml
+64772 5249 -1 /data/data/com.google.android.captiveportallogin
+64772 5250 -1 /data/data/com.google.android.captiveportallogin/cache
+64772 5251 -1 /data/data/com.google.android.captiveportallogin/code_cache
+64772 5258 -1 /data/data/com.google.android.apps.docs
+64772 5259 -1 /data/data/com.google.android.apps.docs/cache
+64772 3569 -1 /data/data/com.google.android.apps.docs/cache/diskCache
+64772 3114 -1 /data/data/com.google.android.apps.docs/cache/diskCache/fetching
+64772 7078 -1 /data/data/com.google.android.apps.docs/cache/docs_glide
+64772 7073 -1 /data/data/com.google.android.apps.docs/cache/docs_glide/temp
+64772 7077 -1 /data/data/com.google.android.apps.docs/cache/docs_glide/data
+64772 5260 -1 /data/data/com.google.android.apps.docs/code_cache
+64772 4895 -1 /data/data/com.google.android.apps.docs/shared_prefs
+64772 7040 -1 /data/data/com.google.android.apps.docs/shared_prefs/com.google.android.gms.analytics.prefs.xml
+64772 6774 -1 /data/data/com.google.android.apps.docs/shared_prefs/com.google.android.apps.docs_preferences.xml
+64772 1764 -1 /data/data/com.google.android.apps.docs/shared_prefs/growthkit_phenotype_prefs.xml
+64772 4942 -1 /data/data/com.google.android.apps.docs/shared_prefs/growthkit_shared_prefs.xml
+64772 4961 -1 /data/data/com.google.android.apps.docs/databases
+64772 5027 -1 /data/data/com.google.android.apps.docs/databases/google_analytics_v4.db
+64772 2797 -1 /data/data/com.google.android.apps.docs/databases/google_analytics_v4.db-journal
+64772 4773 -1 /data/data/com.google.android.apps.docs/databases/DocList.db
+64772 2854 -1 /data/data/com.google.android.apps.docs/databases/DocList.db-journal
+64772 7038 -1 /data/data/com.google.android.apps.docs/databases/DocList.db-wal
+64772 7047 -1 /data/data/com.google.android.apps.docs/databases/DocList.db-shm
+64772 5020 -1 /data/data/com.google.android.apps.docs/databases/growthkit.db
+64772 3424 -1 /data/data/com.google.android.apps.docs/files
+64772 3425 -1 /data/data/com.google.android.apps.docs/files/gaClientId
+64772 6787 -1 /data/data/com.google.android.apps.docs/files/shiny_blobs
+64772 7061 -1 /data/data/com.google.android.apps.docs/files/fileinternal
+64772 7068 -1 /data/data/com.google.android.apps.docs/files/appmetadata
+64772 5261 -1 /data/data/com.google.android.apps.maps
+64772 5262 -1 /data/data/com.google.android.apps.maps/cache
+64772 5263 -1 /data/data/com.google.android.apps.maps/code_cache
+64772 5741 -1 /data/data/com.google.android.apps.maps/files
+64772 5744 -1 /data/data/com.google.android.apps.maps/files/DATA_Preferences
+64772 5762 -1 /data/data/com.google.android.apps.maps/files/users
+64772 5763 -1 /data/data/com.google.android.apps.maps/files/users/paint
+64772 5764 -1 /data/data/com.google.android.apps.maps/files/users/paint/disabled
+64772 5767 -1 /data/data/com.google.android.apps.maps/files/users/routing
+64772 5768 -1 /data/data/com.google.android.apps.maps/files/users/routing/disabled
+64772 5769 -1 /data/data/com.google.android.apps.maps/files/users/search
+64772 5770 -1 /data/data/com.google.android.apps.maps/files/users/search/disabled
+64772 5926 -1 /data/data/com.google.android.apps.maps/files/users/rerouting
+64772 5927 -1 /data/data/com.google.android.apps.maps/files/users/rerouting/disabled
+64772 5665 -1 /data/data/com.google.android.apps.maps/files/location_uploader_persistence.cs
+64772 6015 -1 /data/data/com.google.android.apps.maps/files/ls_state_cache.pb.cs
+64772 5774 -1 /data/data/com.google.android.apps.maps/files/offlinedatabase
+64772 5775 -1 /data/data/com.google.android.apps.maps/files/offlinedatabase/offline.db
+64772 5788 -1 /data/data/com.google.android.apps.maps/files/DATA_ShortTermStorage_gmm_notification_status_active
+64772 7362 -1 /data/data/com.google.android.apps.maps/files/DATA_ShortTermStorage_gmm_notification_status_active_Version
+64772 5742 -1 /data/data/com.google.android.apps.maps/shared_prefs
+64772 5743 -1 /data/data/com.google.android.apps.maps/shared_prefs/cache_settings_preference.xml
+64772 7381 -1 /data/data/com.google.android.apps.maps/shared_prefs/settings_preference.xml
+64772 5755 -1 /data/data/com.google.android.apps.maps/shared_prefs/_has_set_default_values.xml
+64772 5749 -1 /data/data/com.google.android.apps.maps/app_
+64772 5750 -1 /data/data/com.google.android.apps.maps/app_/testdata
+64772 5765 -1 /data/data/com.google.android.apps.maps/app_offline_downloads
+64772 5766 -1 /data/data/com.google.android.apps.maps/app_offline_hashes
+64772 5777 -1 /data/data/com.google.android.apps.maps/databases
+64772 5778 -1 /data/data/com.google.android.apps.maps/databases/gmm_sync.db
+64772 5780 -1 /data/data/com.google.android.apps.maps/databases/gmm_sync.db-journal
+64772 5790 -1 /data/data/com.google.android.apps.maps/databases/gmm_storage.db
+64772 5791 -1 /data/data/com.google.android.apps.maps/databases/gmm_storage.db-journal
+64772 6385 -1 /data/data/com.google.android.apps.maps/databases/ue3.db
+64772 6386 -1 /data/data/com.google.android.apps.maps/databases/ue3.db-journal
+64772 5273 -1 /data/data/com.google.android.markup
+64772 5274 -1 /data/data/com.google.android.markup/cache
+64772 5275 -1 /data/data/com.google.android.markup/code_cache
+64772 5276 -1 /data/data/com.google.android.webview
+64772 5277 -1 /data/data/com.google.android.webview/cache
+64772 5278 -1 /data/data/com.google.android.webview/code_cache
+64772 6159 -1 /data/data/com.google.android.webview/app_webview
+64772 6161 -1 /data/data/com.google.android.webview/app_textures
+64772 5289 -1 /data/data/com.google.android.syncadapters.contacts
+64772 5290 -1 /data/data/com.google.android.syncadapters.contacts/cache
+64772 5291 -1 /data/data/com.google.android.syncadapters.contacts/code_cache
+64772 1660 -1 /data/data/com.google.android.syncadapters.contacts/app_sslcache
+64772 5298 -1 /data/data/com.google.android.overlay.googleconfig
+64772 5299 -1 /data/data/com.google.android.overlay.googleconfig/cache
+64772 5300 -1 /data/data/com.google.android.overlay.googleconfig/code_cache
+64772 5301 -1 /data/data/com.google.android.calculator
+64772 5302 -1 /data/data/com.google.android.calculator/cache
+64772 5303 -1 /data/data/com.google.android.calculator/code_cache
+64772 6298 -1 /data/data/com.google.android.calculator/shared_prefs
+64772 3637 -1 /data/data/com.google.android.calculator/shared_prefs/com.google.android.gms.measurement.prefs.xml
+64772 6315 -1 /data/data/com.google.android.calculator/shared_prefs/com.google.android.calculator_preferences.xml
+64772 6306 -1 /data/data/com.google.android.calculator/databases
+64772 6307 -1 /data/data/com.google.android.calculator/databases/Expressions.db
+64772 6308 -1 /data/data/com.google.android.calculator/databases/Expressions.db-journal
+64772 6312 -1 /data/data/com.google.android.calculator/databases/google_app_measurement_local.db
+64772 6313 -1 /data/data/com.google.android.calculator/databases/google_app_measurement_local.db-journal
+64772 5308 -1 /data/data/com.android.bips.auto_generated_rro_product__
+64772 5309 -1 /data/data/com.android.bips.auto_generated_rro_product__/cache
+64772 5310 -1 /data/data/com.android.bips.auto_generated_rro_product__/code_cache
+64772 5317 -1 /data/data/com.google.android.gms
+64772 5318 -1 /data/data/com.google.android.gms/cache
+64772 1932 -1 /data/data/com.google.android.gms/cache/httpclient_tmp
+64772 4950 -1 /data/data/com.google.android.gms/cache/volley
+64772 6960 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db
+64772 7103 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/LOG
+64772 7107 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/LOCK
+64772 7112 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/000003.log
+64772 6897 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/CURRENT
+64772 7105 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/MANIFEST-000002
+64772 7117 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db
+64772 7111 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/LOG
+64772 7143 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/LOCK
+64772 6997 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/000003.log
+64772 6772 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/CURRENT
+64772 6999 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/MANIFEST-000002
+64772 6028 -1 /data/data/com.google.android.gms/cache/nearby_bluetooth_metadata
+64772 5319 -1 /data/data/com.google.android.gms/code_cache
+64772 1522 -1 /data/data/com.google.android.gms/databases
+64772 1523 -1 /data/data/com.google.android.gms/databases/phenotype.db
+64772 1524 -1 /data/data/com.google.android.gms/databases/phenotype.db-journal
+64772 1739 -1 /data/data/com.google.android.gms/databases/android_pay
+64772 1754 -1 /data/data/com.google.android.gms/databases/android_pay-journal
+64772 2017 -1 /data/data/com.google.android.gms/databases/playlog.db
+64772 7301 -1 /data/data/com.google.android.gms/databases/icing-indexapi-errors.db
+64772 2052 -1 /data/data/com.google.android.gms/databases/pluscontacts.db
+64772 2057 -1 /data/data/com.google.android.gms/databases/pluscontacts.db-journal
+64772 2206 -1 /data/data/com.google.android.gms/databases/context_feature_default.db
+64772 2264 -1 /data/data/com.google.android.gms/databases/context_feature_default.db-journal
+64772 2277 -1 /data/data/com.google.android.gms/databases/gass.db
+64772 2275 -1 /data/data/com.google.android.gms/databases/gass.db-journal
+64772 2286 -1 /data/data/com.google.android.gms/databases/metadata.db
+64772 2284 -1 /data/data/com.google.android.gms/databases/metadata.db-journal
+64772 2357 -1 /data/data/com.google.android.gms/databases/peoplelog.db
+64772 3528 -1 /data/data/com.google.android.gms/databases/cast.db
+64772 3635 -1 /data/data/com.google.android.gms/databases/cast.db-journal
+64772 4764 -1 /data/data/com.google.android.gms/databases/context___ContextManagerNullAccount__.db
+64772 4771 -1 /data/data/com.google.android.gms/databases/context___ContextManagerNullAccount__.db-journal
+64772 4794 -1 /data/data/com.google.android.gms/databases/device_connections.db
+64772 4796 -1 /data/data/com.google.android.gms/databases/device_connections.db-journal
+64772 4849 -1 /data/data/com.google.android.gms/databases/ns.db
+64772 4854 -1 /data/data/com.google.android.gms/databases/ns.db-journal
+64772 4869 -1 /data/data/com.google.android.gms/databases/dg.db
+64772 4558 -1 /data/data/com.google.android.gms/databases/dg.db-journal
+64772 4898 -1 /data/data/com.google.android.gms/databases/rmq.db
+64772 4926 -1 /data/data/com.google.android.gms/databases/rmq.db-journal
+64772 2972 -1 /data/data/com.google.android.gms/databases/google_app_measurement.db
+64772 2975 -1 /data/data/com.google.android.gms/databases/google_app_measurement.db-journal
+64772 2999 -1 /data/data/com.google.android.gms/databases/icing_mmssms.db
+64772 2996 -1 /data/data/com.google.android.gms/databases/icing_mmssms.db-journal
+64772 3116 -1 /data/data/com.google.android.gms/databases/gms.notifications.db
+64772 3119 -1 /data/data/com.google.android.gms/databases/gms.notifications.db-journal
+64772 3157 -1 /data/data/com.google.android.gms/databases/icing_contacts.db
+64772 3161 -1 /data/data/com.google.android.gms/databases/icing_contacts.db-journal
+64772 3169 -1 /data/data/com.google.android.gms/databases/reminders.db
+64772 3495 -1 /data/data/com.google.android.gms/databases/reminders.db-journal
+64772 3362 -1 /data/data/com.google.android.gms/databases/ipa_mmssms.db
+64772 1638 -1 /data/data/com.google.android.gms/databases/ipa_mmssms.db-journal
+64772 1814 -1 /data/data/com.google.android.gms/databases/icing-indexapi.db
+64772 1771 -1 /data/data/com.google.android.gms/databases/icing-indexapi.db-journal
+64772 1443 -1 /data/data/com.google.android.gms/databases/constellation.db
+64772 1599 -1 /data/data/com.google.android.gms/databases/constellation.db-journal
+64772 1867 -1 /data/data/com.google.android.gms/databases/google_analytics_v4.db
+64772 1366 -1 /data/data/com.google.android.gms/databases/google_analytics_v4.db-journal
+64772 4148 -1 /data/data/com.google.android.gms/databases/chromesync.data_store
+64772 3591 -1 /data/data/com.google.android.gms/databases/chromesync.data_store-journal
+64772 4738 -1 /data/data/com.google.android.gms/databases/matchstickv9.db
+64772 5038 -1 /data/data/com.google.android.gms/databases/matchstickv9.db-journal
+64772 3017 -1 /data/data/com.google.android.gms/databases/mobstore_gc_db_v0
+64772 2973 -1 /data/data/com.google.android.gms/databases/mobstore_gc_db_v0-journal
+64772 5532 -1 /data/data/com.google.android.gms/databases/dgp.db
+64772 5533 -1 /data/data/com.google.android.gms/databases/dgp.db-journal
+64772 6418 -1 /data/data/com.google.android.gms/databases/netrec
+64772 6419 -1 /data/data/com.google.android.gms/databases/netrec-journal
+64772 7059 -1 /data/data/com.google.android.gms/databases/icing-proxy-calendar.db
+64772 7060 -1 /data/data/com.google.android.gms/databases/icing-proxy-calendar.db-journal
+64772 7302 -1 /data/data/com.google.android.gms/databases/icing-indexapi-errors.db-journal
+64772 7032 -1 /data/data/com.google.android.gms/databases/icing-mdh.db
+64772 7031 -1 /data/data/com.google.android.gms/databases/icing-mdh.db-journal
+64772 7980 -1 /data/data/com.google.android.gms/databases/metrics.db.21
+64772 7985 -1 /data/data/com.google.android.gms/databases/metrics.db.21-journal
+64772 1564 -1 /data/data/com.google.android.gms/shared_prefs
+64772 1582 -1 /data/data/com.google.android.gms/shared_prefs/QosTierPref.xml
+64772 4804 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.netrec.xml
+64772 2093 -1 /data/data/com.google.android.gms/shared_prefs/adid_settings.xml
+64772 8610 -1 /data/data/com.google.android.gms/shared_prefs/AppDataSearch-main-icing-settings.xml
+64772 6051 -1 /data/data/com.google.android.gms/shared_prefs/ULR_PERSISTENT_PREFS.xml
+64772 6384 -1 /data/data/com.google.android.gms/shared_prefs/LOCATION_REPORTING.xml
+64772 9430 -1 /data/data/com.google.android.gms/shared_prefs/AppDataSearch-main-config.xml
+64772 2730 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.auth.devicesignals.DeviceSignalsStore.xml
+64772 7129 -1 /data/data/com.google.android.gms/shared_prefs/google_cast.xml
+64772 9177 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms_preferences.xml
+64772 7023 -1 /data/data/com.google.android.gms/shared_prefs/GmsBackupTransport.backupScheduler.xml
+64772 4800 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.backup.BackupAccountNotifierService.xml
+64772 4814 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gcm.xml
+64772 7294 -1 /data/data/com.google.android.gms/shared_prefs/METRICS_LOGGER_PREFERENCE_FILE.xml
+64772 4838 -1 /data/data/com.google.android.gms/shared_prefs/gms.learning.CrashThrottler.xml
+64772 4852 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.learning.cache_manager.xml
+64772 4944 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.magictether.client.SETTINGS_PREFERENCE_FILE.xml
+64772 5007 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.magictether.host.CLIENT_CONNECTION_MANAGER_PREFERENCE_FILE.xml
+64772 5009 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.magictether.client.CONFIG_HELPER_PREFERENCE_FILE.xml
+64772 1592 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.measurement.prefs.xml
+64772 1359 -1 /data/data/com.google.android.gms/shared_prefs/proxy-apps-corpus.xml
+64772 6958 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.update.storage.xml
+64772 3016 -1 /data/data/com.google.android.gms/shared_prefs/BEACON_STATE.xml
+64772 6029 -1 /data/data/com.google.android.gms/shared_prefs/gms.people.xml
+64772 3136 -1 /data/data/com.google.android.gms/shared_prefs/com.google.firebase.auth.instantValidator.xml
+64772 6962 -1 /data/data/com.google.android.gms/shared_prefs/salter_pref.xml
+64772 5492 -1 /data/data/com.google.android.gms/shared_prefs/icing_internal_corpora_prefs.xml
+64772 3278 -1 /data/data/com.google.android.gms/shared_prefs/nearbydirect_configuration.xml
+64772 7150 -1 /data/data/com.google.android.gms/shared_prefs/Checkin.xml
+64772 3527 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.cache.MerchantCache.xml
+64772 3567 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.fragment.WalletFragment.PREFS.xml
+64772 3534 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.service.ow.LocalPreAuth.xml
+64772 3279 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.service.ow.TransactionContextStorage.xml
+64772 3277 -1 /data/data/com.google.android.gms/shared_prefs/FabExperimentPrefsFile.xml
+64772 3197 -1 /data/data/com.google.android.gms/shared_prefs/ppl_first_sdk.xml
+64772 7051 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.westworld.xml
+64772 1648 -1 /data/data/com.google.android.gms/shared_prefs/LockboxOptInSettings.xml
+64772 1776 -1 /data/data/com.google.android.gms/shared_prefs/ipa-sms-corpus.xml
+64772 1416 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.analytics.prefs.xml
+64772 7634 -1 /data/data/com.google.android.gms/shared_prefs/EventLogChimeraService.xml
+64772 2405 -1 /data/data/com.google.android.gms/shared_prefs/google_sdk_flags.xml
+64772 7616 -1 /data/data/com.google.android.gms/shared_prefs/DownloadService.xml
+64772 4847 -1 /data/data/com.google.android.gms/shared_prefs/SchedulerPrefs.xml
+64772 4819 -1 /data/data/com.google.android.gms/shared_prefs/DeviceConfigUtils.xml
+64772 2839 -1 /data/data/com.google.android.gms/shared_prefs/CheckinLogging.xml
+64772 3100 -1 /data/data/com.google.android.gms/shared_prefs/CAST_ACTIVE_NETWORK_MAP.xml
+64772 3096 -1 /data/data/com.google.android.gms/shared_prefs/PREF_CAST_SENDER_NONCE.xml
+64772 3060 -1 /data/data/com.google.android.gms/shared_prefs/PREF_CAST_SENDER_ID.xml
+64772 9489 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_file_group_manager_metadata.xml
+64772 3565 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_shared_file_manager_metadata.xml
+64772 7014 -1 /data/data/com.google.android.gms/shared_prefs/coreanalyticsprefs.xml
+64772 3295 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_groups.xml
+64772 1740 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_group_key_properties.xml
+64772 2937 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_shared_files.xml
+64772 9488 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_manager_metadata.xml
+64772 1651 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_migrations.xml
+64772 6366 -1 /data/data/com.google.android.gms/shared_prefs/mdm.xml
+64772 7151 -1 /data/data/com.google.android.gms/shared_prefs/Netstats.xml
+64772 1383 -1 /data/data/com.google.android.gms/shared_prefs/instantapps.Routing.xml
+64772 5466 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_phenotype_config.xml
+64772 5467 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.lockbox.xml
+64772 5468 -1 /data/data/com.google.android.gms/shared_prefs/contactinteractions_gms_prefs.xml
+64772 5470 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_gcm_task_periods.xml
+64772 5474 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_phenotype_registrar.xml
+64772 5478 -1 /data/data/com.google.android.gms/shared_prefs/google_ads_flags.xml
+64772 5479 -1 /data/data/com.google.android.gms/shared_prefs/social.package_doritos.xml
+64772 6684 -1 /data/data/com.google.android.gms/shared_prefs/proxy-sms-corpus.xml
+64772 5493 -1 /data/data/com.google.android.gms/shared_prefs/IndexWorkerChimeraService_preferences.xml
+64772 5501 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.icing.mdh.service.MobileDataHubGcmTaskService_mdh-forcedsync.xml
+64772 5503 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.icing.mdh.service.MobileDataHubGcmTaskService_mdh-wipeout.xml
+64772 5505 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.icing.mdh.service.MobileDataHubGcmTaskService_mdh-subscription-cleanup.xml
+64772 7391 -1 /data/data/com.google.android.gms/shared_prefs/Telephonystats.xml
+64772 7390 -1 /data/data/com.google.android.gms/shared_prefs/Graphicsstats.xml
+64772 7152 -1 /data/data/com.google.android.gms/shared_prefs/Settingsstats.xml
+64772 7498 -1 /data/data/com.google.android.gms/shared_prefs/Fingerprintstats.xml
+64772 7558 -1 /data/data/com.google.android.gms/shared_prefs/Mediastats.xml
+64772 7521 -1 /data/data/com.google.android.gms/shared_prefs/Ipconnectivitystats.xml
+64772 7559 -1 /data/data/com.google.android.gms/shared_prefs/Batterystats.xml
+64772 7576 -1 /data/data/com.google.android.gms/shared_prefs/Diskstats.xml
+64772 7578 -1 /data/data/com.google.android.gms/shared_prefs/DropboxRealtime.xml
+64772 1344 -1 /data/data/com.google.android.gms/shared_prefs/Notificationstats.xml
+64772 4759 -1 /data/data/com.google.android.gms/shared_prefs/UnifiedDumpsysTask.xml
+64772 1483 -1 /data/data/com.google.android.gms/shared_prefs/Wifistats.xml
+64772 7943 -1 /data/data/com.google.android.gms/shared_prefs/Telecomstats.xml
+64772 8265 -1 /data/data/com.google.android.gms/shared_prefs/Dropbox.xml
+64772 7949 -1 /data/data/com.google.android.gms/shared_prefs/Launcherstats.xml
+64772 8271 -1 /data/data/com.google.android.gms/shared_prefs/SurfaceFlinger.xml
+64772 8347 -1 /data/data/com.google.android.gms/shared_prefs/Procstats.xml
+64772 4824 -1 /data/data/com.google.android.gms/shared_prefs/usage_stats_manager_prefs.xml
+64772 5635 -1 /data/data/com.google.android.gms/shared_prefs/GEO_DATA_SERVICE_STORE.xml
+64772 1329 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.auth.authzen.cryptauth.DeviceStateSyncManager.xml
+64772 6930 -1 /data/data/com.google.android.gms/shared_prefs/platform_prefs.xml
+64772 7028 -1 /data/data/com.google.android.gms/shared_prefs/GmsBackupTransport.restoreScheduler.xml
+64772 6036 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.netrec.ssidTries.xml
+64772 6445 -1 /data/data/com.google.android.gms/shared_prefs/ULR_HISTORIAN_STATE.xml
+64772 6057 -1 /data/data/com.google.android.gms/shared_prefs/TestCodePref.xml
+64772 6100 -1 /data/data/com.google.android.gms/shared_prefs/carservice.xml
+64772 7551 -1 /data/data/com.google.android.gms/shared_prefs/romanesco_prefs.xml
+64772 6356 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.service.ib.ParcelableCryptoKeys.xml
+64772 6247 -1 /data/data/com.google.android.gms/shared_prefs/jams.prefs.default.xml
+64772 6269 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.safetynet.xml
+64772 6422 -1 /data/data/com.google.android.gms/shared_prefs/UdcCtxMgrPrefs.xml
+64772 3767 -1 /data/data/com.google.android.gms/shared_prefs/matchstick_prefs.xml
+64772 9492 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_network_usage_monitor.xml
+64772 7275 -1 /data/data/com.google.android.gms/shared_prefs/GoogleAnalyticsPlayLogs.xml
+64772 7035 -1 /data/data/com.google.android.gms/shared_prefs/BackupDeviceState.xml
+64772 1565 -1 /data/data/com.google.android.gms/files
+64772 2090 -1 /data/data/com.google.android.gms/files/nlp_ck
+64772 2105 -1 /data/data/com.google.android.gms/files/fonts
+64772 2106 -1 /data/data/com.google.android.gms/files/fonts/opentype
+64772 2325 -1 /data/data/com.google.android.gms/files/fonts/opentype/Google_Sans_Display-400-100_0-0_0.ttf
+64772 2280 -1 /data/data/com.google.android.gms/files/fonts/opentype/Google_Sans-400-100_0-0_0.ttf
+64772 2282 -1 /data/data/com.google.android.gms/files/fonts/opentype/Google_Sans-500-100_0-0_0.ttf
+64772 2120 -1 /data/data/com.google.android.gms/files/fonts/directory
+64772 5561 -1 /data/data/com.google.android.gms/files/fonts/system.directory.pb
+64772 2122 -1 /data/data/com.google.android.gms/files/AppDataSearch
+64772 2367 -1 /data/data/com.google.android.gms/files/AppDataSearch/main
+64772 2569 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur
+64772 2627 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.docids
+64772 2575 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/compact_status
+64772 2640 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.perdocdata
+64772 2663 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.cscoring
+64772 2720 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.docs
+64772 2723 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.h
+64772 2727 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.n
+64772 2726 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.x
+64772 2725 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.s
+64772 2779 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.deleted
+64772 2784 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.counts
+64772 2785 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.h
+64772 2786 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.n
+64772 2787 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.x
+64772 2783 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.s
+64772 2731 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.deleted
+64772 2927 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.usage
+64772 2757 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.delusage
+64772 2751 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.h
+64772 3511 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.n
+64772 3547 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.x
+64772 3557 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.s
+64772 3559 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.deleted
+64772 3563 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.h
+64772 3537 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.n
+64772 3538 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.x
+64772 3588 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.s
+64772 3589 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.deleted
+64772 3621 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.index
+64772 3880 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.h
+64772 3881 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.n
+64772 3878 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.x
+64772 3879 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.s
+64772 3877 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.deleted
+64772 4441 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.h
+64772 4442 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.n
+64772 4439 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.x
+64772 4440 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.s
+64772 4438 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.deleted
+64772 3882 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.hb
+64772 5477 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.deleted
+64772 7251 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.status.flushed
+64772 4920 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-1
+64772 9551 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.prop.3
+64772 3765 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.prop.0
+64772 6232 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-13
+64772 6358 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-16
+64772 6514 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-14
+64772 5307 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.status
+64772 7295 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.0
+64772 7296 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.3
+64772 7297 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.16
+64772 7298 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.15
+64772 7299 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.1
+64772 6360 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-17
+64772 6715 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-18
+64772 6319 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.18
+64772 6310 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.20
+64772 6180 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.19
+64772 5507 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/main-corpus-scratch-data.tmp
+64772 6739 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/css
+64772 6740 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/css/log
+64772 2379 -1 /data/data/com.google.android.gms/files/clearcut
+64772 2394 -1 /data/data/com.google.android.gms/files/clearcut/0
+64772 2395 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD
+64772 2393 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866
+64772 2398 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/play_logger_context.pb
+64772 2396 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/1571007393366.NONE
+64772 6743 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/1571007523603.NONE
+64772 4860 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/1571086303942.NONE
+64772 5816 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629
+64772 5817 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/play_logger_context.pb
+64772 5818 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/1571007405165.NONE
+64772 6886 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/1571007529733.NONE
+64772 6971 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/1571086313401.NONE
+64772 2573 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC
+64772 2574 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632
+64772 2662 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/play_logger_context.pb
+64772 2782 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/1571007393955.NONE
+64772 6755 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/1571007523995.NONE
+64772 3097 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/1571086304163.NONE
+64772 4137 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER
+64772 4134 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548
+64772 4133 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/play_logger_context.pb
+64772 4144 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/1571007394404.NONE
+64772 6752 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/1571007523907.NONE
+64772 6769 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/1571086307394.NONE
+64772 4742 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER
+64772 4745 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER/603039182
+64772 4748 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER/603039182/play_logger_context.pb
+64772 4750 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER/603039182/1571007394557.NONE
+64772 4951 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS
+64772 4952 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611
+64772 4953 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/play_logger_context.pb
+64772 4922 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/1571007395822.NONE
+64772 6777 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/1571007524446.NONE
+64772 6758 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/1571086304269.NONE
+64772 4974 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER
+64772 4972 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655
+64772 4975 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/play_logger_context.pb
+64772 4976 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/1571007395955.NONE
+64772 6771 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/1571007524307.NONE
+64772 6521 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/1571086304194.NONE
+64772 4994 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE
+64772 4996 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE/-846547223
+64772 4990 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE/-846547223/play_logger_context.pb
+64772 4999 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE/-846547223/1571007395999.NONE
+64772 5000 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION
+64772 5003 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565
+64772 5011 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/play_logger_context.pb
+64772 5014 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/1571007396041.NONE
+64772 6786 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/1571007524605.NONE
+64772 2517 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/1571086304208.NONE
+64772 2876 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA
+64772 2877 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336
+64772 2908 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/play_logger_context.pb
+64772 2909 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/1571007396222.NONE
+64772 6784 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/1571007524576.NONE
+64772 6673 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/1571086304144.NONE
+64772 3408 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545
+64772 3407 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/play_logger_context.pb
+64772 3376 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/1571007396696.NONE
+64772 6951 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/1571007534530.NONE
+64772 6921 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/1571086318208.NONE
+64772 3033 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES
+64772 3034 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051
+64772 3032 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/play_logger_context.pb
+64772 3036 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/1571007396377.NONE
+64772 6745 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/1571007523818.NONE
+64772 6746 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/1571086304060.NONE
+64772 3061 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME
+64772 3062 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192
+64772 3059 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/play_logger_context.pb
+64772 3073 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/1571007396399.NONE
+64772 6754 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/1571007523951.NONE
+64772 6705 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/1571086304101.NONE
+64772 3101 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS
+64772 3112 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600
+64772 3111 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/play_logger_context.pb
+64772 3115 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/1571007396441.NONE
+64772 6748 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/1571007523860.NONE
+64772 6750 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/1571086304078.NONE
+64772 3124 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS
+64772 3125 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996
+64772 3123 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/play_logger_context.pb
+64772 3137 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/1571007396460.NONE
+64772 7586 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/1571011940660.NONE
+64772 6575 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/1571086348997.NONE
+64772 3162 -1 /data/data/com.google.android.gms/files/clearcut/0/LE
+64772 3160 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896
+64772 3170 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/play_logger_context.pb
+64772 3171 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/1571007396513.NONE
+64772 6790 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/1571007524702.NONE
+64772 6845 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/1571086310373.NONE
+64772 3179 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS
+64772 3180 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070
+64772 3178 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/play_logger_context.pb
+64772 3450 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/1571007396536.NONE
+64772 6956 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/1571007534603.NONE
+64772 6413 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/1571086318283.NONE
+64772 3210 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE
+64772 3208 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991
+64772 3230 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/play_logger_context.pb
+64772 3231 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/1571007396961.NONE
+64772 6791 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/1571007524728.NONE
+64772 3499 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/1571086310550.NONE
+64772 3561 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS
+64772 3562 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701
+64772 3262 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/play_logger_context.pb
+64772 3305 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/1571007397145.NONE
+64772 6983 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/1571007535138.NONE
+64772 6704 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/1571086318873.NONE
+64772 1550 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA
+64772 4958 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090
+64772 4963 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/play_logger_context.pb
+64772 3583 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/1571007397308.NONE
+64772 6812 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/1571007527010.NONE
+64772 6703 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/1571086308336.NONE
+64772 1613 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS
+64772 1643 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279
+64772 1647 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/play_logger_context.pb
+64772 1657 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/1571007397375.NONE
+64772 6970 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/1571007535031.NONE
+64772 6782 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/1571086318705.NONE
+64772 1403 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS
+64772 1653 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521
+64772 1591 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/play_logger_context.pb
+64772 1390 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/1571007398221.NONE
+64772 6937 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/1571007534192.NONE
+64772 6947 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/1571086317928.NONE
+64772 4700 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK
+64772 4498 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793
+64772 4501 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/play_logger_context.pb
+64772 1396 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/1571007399195.NONE
+64772 9223 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/1571018496320.NONE
+64772 3770 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/1571092497382.NONE
+64772 4918 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER
+64772 3404 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177
+64772 3399 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/play_logger_context.pb
+64772 3410 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/1571007399944.NONE
+64772 6805 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/1571007525869.NONE
+64772 6795 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/1571086306843.NONE
+64772 3340 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE
+64772 3350 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580
+64772 3343 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/play_logger_context.pb
+64772 1603 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/1571007400039.NONE
+64772 7345 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/1571010628730.NONE
+64772 9366 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/1571089412544.NONE
+64772 1365 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE
+64772 1485 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545
+64772 1418 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545/play_logger_context.pb
+64772 1393 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545/1571007400095.NONE
+64772 6169 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545/1571050723868.NONE
+64772 5516 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC
+64772 5517 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691
+64772 5518 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/play_logger_context.pb
+64772 5519 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/1571007400805.NONE
+64772 6895 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/1571007531568.NONE
+64772 6737 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/1571086315278.NONE
+64772 5544 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS
+64772 5545 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633
+64772 5546 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/play_logger_context.pb
+64772 5550 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/1571007401037.NONE
+64772 6967 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/1571007534932.NONE
+64772 2976 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/1571086318636.NONE
+64772 5555 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP
+64772 5556 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435
+64772 5557 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/play_logger_context.pb
+64772 5558 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/1571007401123.NONE
+64772 6945 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/1571007534259.NONE
+64772 6887 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/1571086318024.NONE
+64772 5572 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES
+64772 5573 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419
+64772 5576 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/play_logger_context.pb
+64772 5578 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/1571007401427.NONE
+64772 6846 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/1571007527414.NONE
+64772 6834 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/1571086308137.NONE
+64772 5580 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES
+64772 5581 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649
+64772 5582 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/play_logger_context.pb
+64772 5583 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/1571007401442.NONE
+64772 6847 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/1571007527445.NONE
+64772 6435 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/1571086308143.NONE
+64772 5700 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD
+64772 5701 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270
+64772 5702 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/play_logger_context.pb
+64772 5703 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/1571007402723.NONE
+64772 6844 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/1571007527242.NONE
+64772 4880 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/1571086307991.NONE
+64772 5705 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS
+64772 5706 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004
+64772 5707 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/play_logger_context.pb
+64772 5708 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/1571007402840.NONE
+64772 6849 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/1571007527774.NONE
+64772 6900 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/1571086308600.NONE
+64772 5731 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT
+64772 5732 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427
+64772 5733 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427/play_logger_context.pb
+64772 5734 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427/1571007403361.NONE
+64772 2737 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427/1571090393505.NONE
+64772 5735 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES
+64772 5736 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759
+64772 5737 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/play_logger_context.pb
+64772 5738 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/1571007403374.NONE
+64772 6851 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/1571007528067.NONE
+64772 6809 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/1571086309256.NONE
+64772 5792 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P
+64772 5793 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349
+64772 5794 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/play_logger_context.pb
+64772 5795 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/1571007404334.NONE
+64772 6876 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/1571007528744.NONE
+64772 6020 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/1571086309840.NONE
+64772 5798 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS
+64772 5799 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405
+64772 5800 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/play_logger_context.pb
+64772 5802 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/1571007404439.NONE
+64772 6877 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/1571007528777.NONE
+64772 6034 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/1571086309854.NONE
+64772 5837 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING
+64772 5838 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824
+64772 5839 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/play_logger_context.pb
+64772 5840 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/1571007405554.NONE
+64772 7034 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/1571007540804.NONE
+64772 6404 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/1571086327278.NONE
+64772 5887 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES
+64772 5889 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547
+64772 5890 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/play_logger_context.pb
+64772 5891 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/1571007406669.NONE
+64772 6891 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/1571007530312.NONE
+64772 1772 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/1571086314036.NONE
+64772 5949 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS
+64772 5950 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636
+64772 5951 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/play_logger_context.pb
+64772 5952 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/1571007409143.NONE
+64772 6902 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/1571007532531.NONE
+64772 3497 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/1571086316175.NONE
+64772 5954 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES
+64772 5955 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800
+64772 5956 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/play_logger_context.pb
+64772 5957 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/1571007409294.NONE
+64772 6904 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/1571007532604.NONE
+64772 4135 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/1571086316203.NONE
+64772 6050 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR
+64772 6052 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462
+64772 6053 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/play_logger_context.pb
+64772 6054 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/1571007410838.NONE
+64772 6929 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/1571007534047.NONE
+64772 6336 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/1571086317841.NONE
+64772 6095 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR
+64772 6096 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249
+64772 6097 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/play_logger_context.pb
+64772 6098 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/1571007412450.NONE
+64772 7011 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/1571007535994.NONE
+64772 6678 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/1571086320642.NONE
+64772 6229 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446
+64772 6230 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/play_logger_context.pb
+64772 6231 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/1571007415279.NONE
+64772 7026 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/1571007538690.NONE
+64772 7181 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/1571086323985.NONE
+64772 6215 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES
+64772 6216 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644
+64772 6217 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/play_logger_context.pb
+64772 6218 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/1571007415174.NONE
+64772 7021 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/1571007538188.NONE
+64772 1619 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/1571086323453.NONE
+64772 6427 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING
+64772 6428 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423
+64772 6429 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/play_logger_context.pb
+64772 6430 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/1571007460671.NONE
+64772 6788 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/1571007524660.NONE
+64772 6513 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/1571086304253.NONE
+64772 6528 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH
+64772 6529 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029
+64772 6530 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/play_logger_context.pb
+64772 6531 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/1571007478024.NONE
+64772 7125 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/1571007600722.NONE
+64772 6233 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/1571086387172.NONE
+64772 6544 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842
+64772 6545 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/play_logger_context.pb
+64772 6546 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/1571007484364.NONE
+64772 7889 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/1571011998119.NONE
+64772 9270 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/1571131773690.NONE
+64772 7126 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909
+64772 7127 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909/play_logger_context.pb
+64772 7128 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909/1571007603556.NONE
+64772 4728 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909/1571086389170.NONE
+64772 7082 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/1383692627
+64772 7113 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/1383692627/play_logger_context.pb
+64772 7153 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/1383692627/1571050783901.NONE
+64772 7118 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS
+64772 7119 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137
+64772 7120 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137/play_logger_context.pb
+64772 7121 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137/1571007591058.NONE
+64772 6680 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137/1571094297498.NONE
+64772 7530 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS
+64772 7531 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS/35534825
+64772 7532 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS/35534825/play_logger_context.pb
+64772 7534 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS/35534825/1571011939706.NONE
+64772 7546 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS
+64772 7547 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS/1153794811
+64772 7548 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS/1153794811/play_logger_context.pb
+64772 7549 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS/1153794811/1571011939833.NONE
+64772 9178 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE
+64772 9179 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752
+64772 9180 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752/play_logger_context.pb
+64772 9181 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752/1571017733035.NONE
+64772 9581 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752/1571096097808.NONE
+64772 6991 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH
+64772 6813 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH/56105022
+64772 6986 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH/56105022/play_logger_context.pb
+64772 7000 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH/56105022/1571252116625.NONE
+64772 7461 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE
+64772 7453 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE/-1852617316
+64772 7526 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE/-1852617316/play_logger_context.pb
+64772 7145 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE/-1852617316/1571262831220.NONE
+64772 4753 -1 /data/data/com.google.android.gms/files/clearcut/2
+64772 4756 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE
+64772 4758 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856
+64772 4760 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/play_logger_context.pb
+64772 4762 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/1571007394581.NONE
+64772 6763 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/1571007524207.NONE
+64772 6552 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/1571086304179.NONE
+64772 3144 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS
+64772 3145 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994
+64772 3143 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/play_logger_context.pb
+64772 3158 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/1571007396472.NONE
+64772 7587 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/1571011940666.NONE
+64772 7037 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/1571086349000.NONE
+64772 5945 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS
+64772 5946 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904
+64772 5947 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/play_logger_context.pb
+64772 5948 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/1571007409121.NONE
+64772 6901 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/1571007532500.NONE
+64772 6974 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/1571086316163.NONE
+64772 2397 -1 /data/data/com.google.android.gms/files/geofencer_ks
+64772 6724 -1 /data/data/com.google.android.gms/files/geofencer_state_list
+64772 4866 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb
+64772 5655 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/LOG
+64772 4873 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/LOCK
+64772 6685 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/LOG.old
+64772 5656 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/000007.log
+64772 5658 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/CURRENT
+64772 5657 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/MANIFEST-000006
+64772 4556 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb
+64772 5660 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/LOG
+64772 4554 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/LOCK
+64772 6697 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/LOG.old
+64772 5662 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/000007.log
+64772 5663 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/CURRENT
+64772 5661 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/MANIFEST-000006
+64772 4959 -1 /data/data/com.google.android.gms/files/com.google.android.gms.auth.be.change.AccountsChange
+64772 5041 -1 /data/data/com.google.android.gms/files/auth.channel.store.properties
+64772 5031 -1 /data/data/com.google.android.gms/files/place_cache_keyfile
+64772 3159 -1 /data/data/com.google.android.gms/files/auth.authzen.store.transactions_v2
+64772 3451 -1 /data/data/com.google.android.gms/files/nearby-discovery
+64772 3459 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db
+64772 6355 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/LOG
+64772 3458 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/LOCK
+64772 6961 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/LOG.old
+64772 6353 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/000007.log
+64772 6357 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/CURRENT
+64772 6362 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/MANIFEST-000006
+64772 3296 -1 /data/data/com.google.android.gms/files/nearby_messages
+64772 3229 -1 /data/data/com.google.android.gms/files/google_app_measurement.db
+64772 7229 -1 /data/data/com.google.android.gms/files/icing_apps_corpus_component_names.txt
+64772 3781 -1 /data/data/com.google.android.gms/files/icing_apps_corpus_entries.bin
+64772 5484 -1 /data/data/com.google.android.gms/files/unpacked
+64772 5485 -1 /data/data/com.google.android.gms/files/unpacked/shared
+64772 5486 -1 /data/data/com.google.android.gms/files/unpacked/shared/cld3model
+64772 5487 -1 /data/data/com.google.android.gms/files/unpacked/shared/cld3model/cld3-model-0001
+64772 7036 -1 /data/data/com.google.android.gms/files/mdh
+64772 7041 -1 /data/data/com.google.android.gms/files/mdh/level.db
+64772 6608 -1 /data/data/com.google.android.gms/files/mdh/level.db/LOG
+64772 7043 -1 /data/data/com.google.android.gms/files/mdh/level.db/LOCK
+64772 6875 -1 /data/data/com.google.android.gms/files/mdh/level.db/LOG.old
+64772 6619 -1 /data/data/com.google.android.gms/files/mdh/level.db/CURRENT
+64772 6612 -1 /data/data/com.google.android.gms/files/mdh/level.db/000005.log
+64772 6617 -1 /data/data/com.google.android.gms/files/mdh/level.db/MANIFEST-000004
+64772 5923 -1 /data/data/com.google.android.gms/files/d2d_restore_data
+64772 6041 -1 /data/data/com.google.android.gms/files/gmscore_global_dirs.txt
+64772 9166 -1 /data/data/com.google.android.gms/files/gms_icing_mdd_garbage_file
+64772 9482 -1 /data/data/com.google.android.gms/files/nlp_acd
+64772 2055 -1 /data/data/com.google.android.gms/app_usage_reporting_db
+64772 4919 -1 /data/data/com.google.android.gms/app_dg_cache
+64772 4943 -1 /data/data/com.google.android.gms/app_place_inference_data_index
+64772 4955 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1
+64772 3006 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/version
+64772 3536 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/LOG
+64772 3005 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/LOCK
+64772 3417 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/LOG.old
+64772 3540 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/000031.log
+64772 3564 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/CURRENT
+64772 3542 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/MANIFEST-000030
+64772 2943 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2
+64772 3072 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/version
+64772 3579 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/LOG
+64772 3098 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/LOCK
+64772 3439 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/LOG.old
+64772 3582 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/000031.log
+64772 3585 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/CURRENT
+64772 3584 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/MANIFEST-000030
+64772 3117 -1 /data/data/com.google.android.gms/app_place_inference_data_index/ttl2
+64772 3398 -1 /data/data/com.google.android.gms/app_instantapps
+64772 3632 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase
+64772 6412 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/LOG
+64772 3572 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/LOCK
+64772 6853 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/LOG.old
+64772 6438 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/000007.log
+64772 6913 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/CURRENT
+64772 6794 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/MANIFEST-000006
+64772 3209 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb
+64772 6914 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/LOG
+64772 3297 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/LOCK
+64772 6857 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/LOG.old
+64772 6916 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/000007.log
+64772 6918 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/CURRENT
+64772 6917 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/MANIFEST-000006
+64772 3833 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb
+64772 6919 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/LOG
+64772 2278 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/LOCK
+64772 6861 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/LOG.old
+64772 6923 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/000007.log
+64772 6741 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/CURRENT
+64772 6738 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/MANIFEST-000006
+64772 3338 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb
+64772 6381 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/LOG
+64772 4964 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/LOCK
+64772 6865 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/LOG.old
+64772 6059 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/000007.log
+64772 6398 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/CURRENT
+64772 6811 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/MANIFEST-000006
+64772 1762 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase
+64772 6011 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/LOG
+64772 3263 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/LOCK
+64772 6869 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/LOG.old
+64772 6012 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/000007.log
+64772 6324 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/CURRENT
+64772 6037 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/MANIFEST-000006
+64772 5697 -1 /data/data/com.google.android.gms/app_APP
+64772 6003 -1 /data/data/com.google.android.gms/app_ulr_db
+64772 6732 -1 /data/data/com.google.android.gms/app_ulr_db/LOG
+64772 6005 -1 /data/data/com.google.android.gms/app_ulr_db/LOCK
+64772 6922 -1 /data/data/com.google.android.gms/app_ulr_db/LOG.old
+64772 6943 -1 /data/data/com.google.android.gms/app_ulr_db/000009.log
+64772 6952 -1 /data/data/com.google.android.gms/app_ulr_db/CURRENT
+64772 6948 -1 /data/data/com.google.android.gms/app_ulr_db/MANIFEST-000007
+64772 6040 -1 /data/data/com.google.android.gms/app_vision
+64772 7976 -1 /data/data/com.google.android.gms/app_gH_async_psd
+64772 5323 -1 /data/data/com.google.android.ims
+64772 5324 -1 /data/data/com.google.android.ims/cache
+64772 5325 -1 /data/data/com.google.android.ims/code_cache
+64772 5494 -1 /data/data/com.google.android.ims/files
+64772 5600 -1 /data/data/com.google.android.ims/files/msrp.bks
+64772 5498 -1 /data/data/com.google.android.ims/shared_prefs
+64772 7049 -1 /data/data/com.google.android.ims/shared_prefs/dialer_hangouts_preferences.xml
+64772 5639 -1 /data/data/com.google.android.ims/shared_prefs/carrier_services.xml
+64772 6416 -1 /data/data/com.google.android.ims/shared_prefs/primes.xml
+64772 6061 -1 /data/data/com.google.android.ims/shared_prefs/carrierservices_library_phenotype_preferences.xml
+64772 5510 -1 /data/data/com.google.android.ims/app_logs
+64772 5511 -1 /data/data/com.google.android.ims/app_logs/carrier_services0.log.lck
+64772 5512 -1 /data/data/com.google.android.ims/app_logs/carrier_services0.log
+64772 5326 -1 /data/data/com.google.android.tag
+64772 5327 -1 /data/data/com.google.android.tag/cache
+64772 5328 -1 /data/data/com.google.android.tag/code_cache
+64772 5332 -1 /data/data/com.google.android.overlay.permissioncontroller
+64772 5333 -1 /data/data/com.google.android.overlay.permissioncontroller/cache
+64772 5334 -1 /data/data/com.google.android.overlay.permissioncontroller/code_cache
+64772 5335 -1 /data/data/com.google.android.partnersetup
+64772 5336 -1 /data/data/com.google.android.partnersetup/cache
+64772 5337 -1 /data/data/com.google.android.partnersetup/code_cache
+64772 1429 -1 /data/data/com.google.android.partnersetup/shared_prefs
+64772 6074 -1 /data/data/com.google.android.partnersetup/shared_prefs/ApplicationHidingPreferences.xml
+64772 2671 -1 /data/data/com.google.android.partnersetup/shared_prefs/RLZ.xml
+64772 7001 -1 /data/data/com.google.android.partnersetup/shared_prefs/partnersetup_phenotype_flags.xml
+64772 6077 -1 /data/data/com.google.android.partnersetup/databases
+64772 6078 -1 /data/data/com.google.android.partnersetup/databases/rlz_data.db
+64772 6079 -1 /data/data/com.google.android.partnersetup/databases/rlz_data.db-journal
+64772 5338 -1 /data/data/com.google.android.apps.wallpaper.nexus
+64772 5339 -1 /data/data/com.google.android.apps.wallpaper.nexus/cache
+64772 5340 -1 /data/data/com.google.android.apps.wallpaper.nexus/code_cache
+64772 5342 -1 /data/data/com.google.android.videos
+64772 5343 -1 /data/data/com.google.android.videos/cache
+64772 6110 -1 /data/data/com.google.android.videos/cache/play_common_main
+64772 6112 -1 /data/data/com.google.android.videos/cache/play_common_images
+64772 6113 -1 /data/data/com.google.android.videos/cache/logs_v2
+64772 6114 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account.metalog
+64772 6213 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account.metalog/play_metalog.log
+64772 6214 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account.metalog/logs_upload_attempt.log
+64772 6117 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account
+64772 7017 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account/eventlog.store5199687948434666285.log
+64772 6124 -1 /data/data/com.google.android.videos/cache/applogcat
+64772 6125 -1 /data/data/com.google.android.videos/cache/applogcat/log_0
+64772 7015 -1 /data/data/com.google.android.videos/cache/applogcat/log_1
+64772 5344 -1 /data/data/com.google.android.videos/code_cache
+64772 6109 -1 /data/data/com.google.android.videos/shared_prefs
+64772 6148 -1 /data/data/com.google.android.videos/shared_prefs/youtube.xml
+64772 6116 -1 /data/data/com.google.android.videos/shared_prefs/com.google.android.videos_preferences.xml
+64772 6111 -1 /data/data/com.google.android.videos/app_sslcache
+64772 6119 -1 /data/data/com.google.android.videos/databases
+64772 6120 -1 /data/data/com.google.android.videos/databases/purchase_store.db
+64772 6122 -1 /data/data/com.google.android.videos/databases/purchase_store.db-wal
+64772 6123 -1 /data/data/com.google.android.videos/databases/purchase_store.db-shm
+64772 5353 -1 /data/data/com.google.SSRestartDetector
+64772 5354 -1 /data/data/com.google.SSRestartDetector/cache
+64772 5355 -1 /data/data/com.google.SSRestartDetector/code_cache
+64772 5365 -1 /data/data/com.android.providers.contacts.auto_generated_rro_product__
+64772 5366 -1 /data/data/com.android.providers.contacts.auto_generated_rro_product__/cache
+64772 5367 -1 /data/data/com.android.providers.contacts.auto_generated_rro_product__/code_cache
+64772 5371 -1 /data/data/com.google.android.printservice.recommendation
+64772 5372 -1 /data/data/com.google.android.printservice.recommendation/cache
+64772 5373 -1 /data/data/com.google.android.printservice.recommendation/code_cache
+64772 5377 -1 /data/data/com.google.android.calendar
+64772 5378 -1 /data/data/com.google.android.calendar/cache
+64772 5379 -1 /data/data/com.google.android.calendar/code_cache
+64772 5460 -1 /data/data/com.google.android.calendar/databases
+64772 5461 -1 /data/data/com.google.android.calendar/databases/timelydata.db
+64772 5463 -1 /data/data/com.google.android.calendar/databases/timelydata.db-wal
+64772 5464 -1 /data/data/com.google.android.calendar/databases/timelydata.db-shm
+64772 5475 -1 /data/data/com.google.android.calendar/databases/groovedata.db
+64772 5476 -1 /data/data/com.google.android.calendar/databases/groovedata.db-journal
+64772 5482 -1 /data/data/com.google.android.calendar/databases/usernotifications.db
+64772 5488 -1 /data/data/com.google.android.calendar/databases/usernotifications.db-journal
+64772 7427 -1 /data/data/com.google.android.calendar/databases/growthkit.db
+64772 5465 -1 /data/data/com.google.android.calendar/files
+64772 5480 -1 /data/data/com.google.android.calendar/files/notification_logs
+64772 5491 -1 /data/data/com.google.android.calendar/files/notification_logs/20191013.log
+64772 6982 -1 /data/data/com.google.android.calendar/files/notification_logs/20191014.log
+64772 7425 -1 /data/data/com.google.android.calendar/files/notification_logs/20191015.log
+64772 6984 -1 /data/data/com.google.android.calendar/files/notification_logs/20191016.log
+64772 6342 -1 /data/data/com.google.android.calendar/files/gaClientId
+64772 5471 -1 /data/data/com.google.android.calendar/shared_prefs
+64772 7157 -1 /data/data/com.google.android.calendar/shared_prefs/com.google.android.calendar_preferences.xml
+64772 5489 -1 /data/data/com.google.android.calendar/shared_prefs/sync_adapter_prefs.xml.xml
+64772 5496 -1 /data/data/com.google.android.calendar/shared_prefs/growthkit_shared_prefs.xml
+64772 5497 -1 /data/data/com.google.android.calendar/shared_prefs/com.google.android.calendar_preferences_no_backup.xml
+64772 5509 -1 /data/data/com.google.android.calendar/shared_prefs/growthkit_phenotype_prefs.xml
+64772 6337 -1 /data/data/com.google.android.calendar/shared_prefs/phenotype_preferences.xml
+64772 5383 -1 /data/data/com.google.android.apps.internal.betterbug
+64772 5384 -1 /data/data/com.google.android.apps.internal.betterbug/cache
+64772 5385 -1 /data/data/com.google.android.apps.internal.betterbug/code_cache
+64772 5395 -1 /data/data/com.google.android.networkstack.permissionconfig
+64772 5396 -1 /data/data/com.google.android.networkstack.permissionconfig/cache
+64772 5397 -1 /data/data/com.google.android.networkstack.permissionconfig/code_cache
+64772 5401 -1 /data/data/com.google.android.wfcactivation
+64772 5402 -1 /data/data/com.google.android.wfcactivation/cache
+64772 5403 -1 /data/data/com.google.android.wfcactivation/code_cache
+64772 5584 -1 /data/data/com.google.android.wfcactivation/shared_prefs
+64772 5404 -1 /data/data/com.google.android.apps.pixelmigrate
+64772 5405 -1 /data/data/com.google.android.apps.pixelmigrate/cache
+64772 5406 -1 /data/data/com.google.android.apps.pixelmigrate/code_cache
+64772 5407 -1 /data/data/com.google.android.settings.intelligence
+64772 5408 -1 /data/data/com.google.android.settings.intelligence/cache
+64772 5409 -1 /data/data/com.google.android.settings.intelligence/code_cache
+64772 6094 -1 /data/data/com.google.android.settings.intelligence/shared_prefs
+64772 5410 -1 /data/data/com.google.android.projection.gearhead
+64772 5411 -1 /data/data/com.google.android.projection.gearhead/cache
+64772 6083 -1 /data/data/com.google.android.projection.gearhead/cache/change_notifier_file
+64772 5412 -1 /data/data/com.google.android.projection.gearhead/code_cache
+64772 6080 -1 /data/data/com.google.android.projection.gearhead/files
+64772 6081 -1 /data/data/com.google.android.projection.gearhead/shared_prefs
+64772 7323 -1 /data/data/com.google.android.projection.gearhead/shared_prefs/com.google.android.gms.analytics.prefs.xml
+64772 6091 -1 /data/data/com.google.android.projection.gearhead/shared_prefs/crash_shared_preferences_com.google.android.projection.gearhead:shared.xml
+64772 6093 -1 /data/data/com.google.android.projection.gearhead/shared_prefs/crash_shared_preferences_com.google.android.projection.gearhead:projection.xml
+64772 6086 -1 /data/data/com.google.android.projection.gearhead/databases
+64772 6087 -1 /data/data/com.google.android.projection.gearhead/databases/google_analytics_v4.db
+64772 6088 -1 /data/data/com.google.android.projection.gearhead/databases/google_analytics_v4.db-journal
+64772 5416 -1 /data/data/com.google.android.apps.scone
+64772 5417 -1 /data/data/com.google.android.apps.scone/cache
+64772 5418 -1 /data/data/com.google.android.apps.scone/code_cache
+64772 5419 -1 /data/data/com.google.android.apps.turbo
+64772 5420 -1 /data/data/com.google.android.apps.turbo/cache
+64772 5421 -1 /data/data/com.google.android.apps.turbo/code_cache
+64772 5879 -1 /data/data/com.google.android.apps.turbo/shared_prefs
+64772 1773 -1 /data/data/com.google.android.apps.turbo/shared_prefs/phenotypeFlags.xml
+64772 7946 -1 /data/data/com.google.android.apps.turbo/shared_prefs/app_usage_stats.xml
+64772 7614 -1 /data/data/com.google.android.apps.turbo/shared_prefs/aab_predictions.xml
+64772 7601 -1 /data/data/com.google.android.apps.turbo/shared_prefs/AppUsagePrefs.xml
+64772 9277 -1 /data/data/com.google.android.apps.turbo/shared_prefs/ZebedeeUserPrefs.xml
+64772 5880 -1 /data/data/com.google.android.apps.turbo/no_backup
+64772 5881 -1 /data/data/com.google.android.apps.turbo/no_backup/com.google.android.gms.appid-no-backup
+64772 5882 -1 /data/data/com.google.android.apps.turbo/files
+64772 5883 -1 /data/data/com.google.android.apps.turbo/files/firebase_inter_process_mutex-lock_write_report_to_sqlite.lock
+64772 6192 -1 /data/data/com.google.android.apps.turbo/files/firebase_inter_process_mutex-lock_send_report_to_server.lock
+64772 5884 -1 /data/data/com.google.android.apps.turbo/databases
+64772 5885 -1 /data/data/com.google.android.apps.turbo/databases/crash_reports
+64772 5886 -1 /data/data/com.google.android.apps.turbo/databases/crash_reports-journal
+64772 7147 -1 /data/data/com.google.android.apps.turbo/databases/appusage.db
+64772 7148 -1 /data/data/com.google.android.apps.turbo/databases/appusage.db-journal
+64772 7502 -1 /data/data/com.google.android.apps.turbo/databases/turbo.db
+64772 7504 -1 /data/data/com.google.android.apps.turbo/databases/turbo.db-wal
+64772 7505 -1 /data/data/com.google.android.apps.turbo/databases/turbo.db-shm
+64772 7523 -1 /data/data/com.google.android.apps.turbo/databases/zebedee.db
+64772 7524 -1 /data/data/com.google.android.apps.turbo/databases/zebedee.db-journal
+64772 5425 -1 /data/data/com.android.omadm.service
+64772 5426 -1 /data/data/com.android.omadm.service/cache
+64772 5427 -1 /data/data/com.android.omadm.service/code_cache
+26 1561660 -1 /data/data/com.android.omadm.service/lib
+64772 5432 -1 /data/data/com.google.android.apps.wearables.maestro.companion
+64772 5433 -1 /data/data/com.google.android.apps.wearables.maestro.companion/cache
+64772 5434 -1 /data/data/com.google.android.apps.wearables.maestro.companion/code_cache
+64772 5438 -1 /data/data/com.google.android.apps.wallpaper
+64772 5439 -1 /data/data/com.google.android.apps.wallpaper/cache
+64772 5440 -1 /data/data/com.google.android.apps.wallpaper/code_cache
+64772 5892 -1 /data/data/com.google.android.apps.wallpaper/files
+64772 5893 -1 /data/data/com.google.android.apps.wallpaper/shared_prefs
+64772 6881 -1 /data/data/com.google.android.apps.wallpaper/shared_prefs/wallpaper.xml
+64772 5444 -1 /data/data/com.google.vr.vrcore
+64772 5445 -1 /data/data/com.google.vr.vrcore/cache
+64772 5446 -1 /data/data/com.google.vr.vrcore/code_cache
+64772 5451 -1 /data/data/com.google.android.gms.location.history
+64772 5452 -1 /data/data/com.google.android.gms.location.history/cache
+64772 5453 -1 /data/data/com.google.android.gms.location.history/code_cache
+64772 5457 -1 /data/data/com.google.android.hardwareinfo
+64772 5458 -1 /data/data/com.google.android.hardwareinfo/cache
+64772 5459 -1 /data/data/com.google.android.hardwareinfo/code_cache
+64772 507 -1 /data/data/com.google.android.dreamlinerupdater
+64772 550 -1 /data/data/com.google.android.dreamlinerupdater/cache
+64772 731 -1 /data/data/com.google.android.dreamlinerupdater/code_cache
+64772 1325 -1 /data/data/com.tmobile.planprovider
+64772 1326 -1 /data/data/com.tmobile.planprovider/cache
+64772 1338 -1 /data/data/com.tmobile.planprovider/code_cache
+64772 1358 -1 /data/data/com.google.android.apps.helprtc
+64772 1345 -1 /data/data/com.google.android.apps.helprtc/cache
+64772 1351 -1 /data/data/com.google.android.apps.helprtc/code_cache
+64772 1350 -1 /data/data/qualcomm.com.vzw_msdc_api
+64772 1353 -1 /data/data/qualcomm.com.vzw_msdc_api/cache
+64772 1352 -1 /data/data/qualcomm.com.vzw_msdc_api/code_cache
+64772 1340 -1 /data/data/com.google.android.gms.setup
+64772 1361 -1 /data/data/com.google.android.gms.setup/cache
+64772 411 -1 /data/data/com.google.android.gms.setup/code_cache
+64772 1493 -1 /data/data/android.auto_generated_rro_product__
+64772 1494 -1 /data/data/android.auto_generated_rro_product__/cache
+64772 1495 -1 /data/data/android.auto_generated_rro_product__/code_cache
+64772 1502 -1 /data/data/com.google.android.vendorloggingservice
+64772 1503 -1 /data/data/com.google.android.vendorloggingservice/cache
+64772 1504 -1 /data/data/com.google.android.vendorloggingservice/code_cache
+64772 1505 -1 /data/data/com.android.connectivity.metrics
+64772 1506 -1 /data/data/com.android.connectivity.metrics/cache
+64772 1507 -1 /data/data/com.android.connectivity.metrics/code_cache
+64772 1510 -1 /data/data/com.verizon.llkagent
+64772 1511 -1 /data/data/com.verizon.llkagent/cache
+64772 1512 -1 /data/data/com.verizon.llkagent/code_cache
+64772 1516 -1 /data/data/com.google.android.inputmethod.latin
+64772 1517 -1 /data/data/com.google.android.inputmethod.latin/cache
+64772 1518 -1 /data/data/com.google.android.inputmethod.latin/code_cache
+64772 1402 -1 /data/data/com.google.android.inputmethod.latin/files
+64772 2121 -1 /data/data/com.google.android.inputmethod.latin/files/crash_detection_local_prefs
+64772 2119 -1 /data/data/com.google.android.inputmethod.latin/files/crash_detection_local_prefs/app_version_code
+64772 2124 -1 /data/data/com.google.android.inputmethod.latin/files/crash_detection_local_prefs/app_version_name
+64772 2184 -1 /data/data/com.google.android.inputmethod.latin/files/personal
+64772 6201 -1 /data/data/com.google.android.inputmethod.latin/files/personal/userhistory
+64772 7612 -1 /data/data/com.google.android.inputmethod.latin/files/personal/userhistory/UserHistory.en_US.dict
+64772 6540 -1 /data/data/com.google.android.inputmethod.latin/files/personal/Personal.en_US.dict
+64772 6203 -1 /data/data/com.google.android.inputmethod.latin/files/personal/en_us.20190429.lm.acc
+64772 7570 -1 /data/data/com.google.android.inputmethod.latin/files/personal/blacklist.en_us.list
+64772 2279 -1 /data/data/com.google.android.inputmethod.latin/files/nativecrash
+64772 6164 -1 /data/data/com.google.android.inputmethod.latin/files/dlam
+64772 6165 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks
+64772 6166 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests
+64772 6209 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/bundled_emoji-3
+64772 6210 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/bundled_emoji-3/superpacks_manifest_bundled.json
+64772 6170 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/bundled_delight-20190507
+64772 6202 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/delight-20190507
+64772 6177 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_delight
+64772 6186 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_delight/main_en_us_20190429_2
+64772 6227 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/delight
+64772 6234 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji
+64772 6237 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji/442dd7424a2b73ebe817b5223ec48db9
+64772 6238 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji/442dd7424a2b73ebe817b5223ec48db9/en
+64772 6239 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji/442dd7424a2b73ebe817b5223ec48db9/en.shortcuts
+64772 6205 -1 /data/data/com.google.android.inputmethod.latin/files/emoji_superpacks_manifest_bundled.zip
+64772 6235 -1 /data/data/com.google.android.inputmethod.latin/files/emoji_search_en_us.zip
+64772 1991 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs
+64772 7405 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_preferences.xml
+64772 4705 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_private.xml
+64772 6727 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/phenotype_prefs.xml
+64772 6220 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latinlm_tracker.xml
+64772 4143 -1 /data/data/com.google.android.inputmethod.latin/databases
+64772 4140 -1 /data/data/com.google.android.inputmethod.latin/databases/superpacks.db
+64772 4703 -1 /data/data/com.google.android.inputmethod.latin/databases/superpacks.db-journal
+64772 4716 -1 /data/data/com.google.android.inputmethod.latin/databases/PersonalDictionary.db
+64772 4731 -1 /data/data/com.google.android.inputmethod.latin/databases/PersonalDictionary.db-journal
+64772 5110 -1 /data/data/com.google.android.trichromelibrary_386509238
+64772 5111 -1 /data/data/com.google.android.trichromelibrary_386509238/cache
+64772 5112 -1 /data/data/com.google.android.trichromelibrary_386509238/code_cache
+64772 5119 -1 /data/data/com.google.android.apps.enterprise.dmagent
+64772 5120 -1 /data/data/com.google.android.apps.enterprise.dmagent/cache
+64772 5121 -1 /data/data/com.google.android.apps.enterprise.dmagent/code_cache
+64772 5704 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs
+64772 5709 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs/DeviceManagementAgent.xml
+64772 5711 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs/Messages.xml
+64772 5712 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs/DeviceManagementAgentMainDataFile.xml
+64772 5143 -1 /data/data/com.google.android.configupdater
+64772 5144 -1 /data/data/com.google.android.configupdater/cache
+64772 5145 -1 /data/data/com.google.android.configupdater/code_cache
+64772 5904 -1 /data/data/com.google.android.configupdater/files
+64772 5910 -1 /data/data/com.google.android.configupdater/files/downloads
+64772 5909 -1 /data/data/com.google.android.configupdater/shared_prefs
+64772 8542 -1 /data/data/com.google.android.configupdater/shared_prefs/configUpdaterPhenotypePref.xml
+64772 3199 -1 /data/data/com.android.bookmarkprovider
+64772 3200 -1 /data/data/com.android.bookmarkprovider/cache
+64772 3201 -1 /data/data/com.android.bookmarkprovider/code_cache
+64772 3202 -1 /data/data/com.android.settings
+64772 3203 -1 /data/data/com.android.settings/cache
+64772 3204 -1 /data/data/com.android.settings/code_cache
+64772 3205 -1 /data/data/com.android.theme.icon_pack.filled.launcher
+64772 3206 -1 /data/data/com.android.theme.icon_pack.filled.launcher/cache
+64772 3207 -1 /data/data/com.android.theme.icon_pack.filled.launcher/code_cache
+64772 5146 -1 /data/data/com.google.android.overlay.googlewebview
+64772 5147 -1 /data/data/com.google.android.overlay.googlewebview/cache
+64772 5148 -1 /data/data/com.google.android.overlay.googlewebview/code_cache
+64772 3211 -1 /data/data/com.android.cts.ctsshim
+64772 3212 -1 /data/data/com.android.cts.ctsshim/cache
+64772 3213 -1 /data/data/com.android.cts.ctsshim/code_cache
+64772 3217 -1 /data/data/com.android.theme.icon_pack.circular.launcher
+64772 3218 -1 /data/data/com.android.theme.icon_pack.circular.launcher/cache
+64772 3219 -1 /data/data/com.android.theme.icon_pack.circular.launcher/code_cache
+64772 3220 -1 /data/data/com.qti.diagservices
+64772 3221 -1 /data/data/com.qti.diagservices/cache
+64772 3222 -1 /data/data/com.qti.diagservices/code_cache
+64772 3223 -1 /data/data/com.qualcomm.qti.services.secureui
+64772 3224 -1 /data/data/com.qualcomm.qti.services.secureui/cache
+64772 3225 -1 /data/data/com.qualcomm.qti.services.secureui/code_cache
+64772 3226 -1 /data/data/com.android.vpndialogs
+64772 3227 -1 /data/data/com.android.vpndialogs/cache
+64772 3228 -1 /data/data/com.android.vpndialogs/code_cache
+64772 5207 -1 /data/data/com.verizon.services
+64772 5208 -1 /data/data/com.verizon.services/cache
+64772 5209 -1 /data/data/com.verizon.services/code_cache
+64772 3232 -1 /data/data/com.android.phone
+64772 3233 -1 /data/data/com.android.phone/cache
+64772 3234 -1 /data/data/com.android.phone/code_cache
+64772 3442 -1 /data/data/com.android.phone/files
+64772 3238 -1 /data/data/com.android.theme.icon_pack.filled.themepicker
+64772 3239 -1 /data/data/com.android.theme.icon_pack.filled.themepicker/cache
+64772 3240 -1 /data/data/com.android.theme.icon_pack.filled.themepicker/code_cache
+64772 3241 -1 /data/data/com.android.wallpaperbackup
+64772 3242 -1 /data/data/com.android.wallpaperbackup/cache
+64772 3243 -1 /data/data/com.android.wallpaperbackup/code_cache
+64772 3244 -1 /data/data/com.android.providers.blockednumber
+64772 3245 -1 /data/data/com.android.providers.blockednumber/cache
+64772 3246 -1 /data/data/com.android.providers.blockednumber/code_cache
+64772 3247 -1 /data/data/com.android.providers.userdictionary
+64772 3248 -1 /data/data/com.android.providers.userdictionary/cache
+64772 3249 -1 /data/data/com.android.providers.userdictionary/code_cache
+64772 4511 -1 /data/data/com.android.providers.userdictionary/databases
+64772 4695 -1 /data/data/com.android.providers.userdictionary/databases/user_dict.db
+64772 4698 -1 /data/data/com.android.providers.userdictionary/databases/user_dict.db-journal
+64772 3253 -1 /data/data/com.android.internal.systemui.navbar.gestural
+64772 3254 -1 /data/data/com.android.internal.systemui.navbar.gestural/cache
+64772 3255 -1 /data/data/com.android.internal.systemui.navbar.gestural/code_cache
+64772 5216 -1 /data/data/com.google.android.euicc
+64772 5217 -1 /data/data/com.google.android.euicc/cache
+64772 5218 -1 /data/data/com.google.android.euicc/code_cache
+64772 3265 -1 /data/data/com.android.systemui
+64772 3266 -1 /data/data/com.android.systemui/cache
+64772 3267 -1 /data/data/com.android.systemui/code_cache
+64772 3271 -1 /data/data/com.android.bluetoothmidiservice
+64772 3272 -1 /data/data/com.android.bluetoothmidiservice/cache
+64772 3273 -1 /data/data/com.android.bluetoothmidiservice/code_cache
+64772 3289 -1 /data/data/com.qualcomm.timeservice
+64772 3290 -1 /data/data/com.qualcomm.timeservice/cache
+64772 3291 -1 /data/data/com.qualcomm.timeservice/code_cache
+64772 3292 -1 /data/data/com.qualcomm.atfwd
+64772 3293 -1 /data/data/com.qualcomm.atfwd/cache
+64772 3294 -1 /data/data/com.qualcomm.atfwd/code_cache
+64772 3301 -1 /data/data/com.android.providers.contacts
+64772 3302 -1 /data/data/com.android.providers.contacts/cache
+64772 3303 -1 /data/data/com.android.providers.contacts/code_cache
+64772 3386 -1 /data/data/com.android.providers.contacts/databases
+64772 3387 -1 /data/data/com.android.providers.contacts/databases/calllog.db
+64772 3389 -1 /data/data/com.android.providers.contacts/databases/calllog.db-journal
+64772 3390 -1 /data/data/com.android.providers.contacts/databases/contacts2.db
+64772 3415 -1 /data/data/com.android.providers.contacts/databases/profile.db
+64772 3416 -1 /data/data/com.android.providers.contacts/databases/profile.db-journal
+64772 3396 -1 /data/data/com.android.providers.contacts/shared_prefs
+64772 3423 -1 /data/data/com.android.providers.contacts/shared_prefs/com.android.providers.contacts_preferences.xml
+64772 3514 -1 /data/data/com.android.providers.contacts/shared_prefs/ContactsUpgradeReceiver.xml
+64772 3418 -1 /data/data/com.android.providers.contacts/files
+64772 3419 -1 /data/data/com.android.providers.contacts/files/photos
+64772 3420 -1 /data/data/com.android.providers.contacts/files/profile
+64772 3421 -1 /data/data/com.android.providers.contacts/files/profile/photos
+64772 5174 -1 /data/data/com.android.theme.font.arvolato
+64772 5175 -1 /data/data/com.android.theme.font.arvolato/cache
+64772 5176 -1 /data/data/com.android.theme.font.arvolato/code_cache
+64772 3316 -1 /data/data/android.auto_generated_rro_vendor__
+64772 3317 -1 /data/data/android.auto_generated_rro_vendor__/cache
+64772 3318 -1 /data/data/android.auto_generated_rro_vendor__/code_cache
+64772 5149 -1 /data/data/com.google.android.apps.safetyhub
+64772 5150 -1 /data/data/com.google.android.apps.safetyhub/cache
+64772 5151 -1 /data/data/com.google.android.apps.safetyhub/code_cache
+64772 1588 -1 /data/data/com.google.android.apps.safetyhub/files
+64772 1614 -1 /data/data/com.google.android.apps.safetyhub/files/tiktok
+64772 1615 -1 /data/data/com.google.android.apps.safetyhub/files/tiktok/103243289
+64772 1645 -1 /data/data/com.google.android.apps.safetyhub/files/103795117
+64772 1446 -1 /data/data/com.google.android.apps.safetyhub/files/phenotype
+64772 9550 -1 /data/data/com.google.android.apps.safetyhub/files/phenotype/com.google.android.apps.safetyhub
+64772 5813 -1 /data/data/com.google.android.apps.safetyhub/files/AccountData.pb
+64772 2424 -1 /data/data/com.google.android.apps.safetyhub/files/AccountSyncData.pb
+64772 5863 -1 /data/data/com.google.android.apps.safetyhub/files/AppStateDataStore.pb
+64772 5820 -1 /data/data/com.google.android.apps.safetyhub/files/accounts
+64772 5821 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1
+64772 5847 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/MedInfoPendingUpdatesDataStore.pb
+64772 5832 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/SqliteKeyValueCache:MedInfoCache.db
+64772 5846 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/MedInfoLocalBackendDataStore.pb
+64772 5853 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/SqliteKeyValueCache:EmergencyContactsCache.db
+64772 6884 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/CarCrashSettings.pb
+64772 6736 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/EmergencyContactsPendingUpdatesDataStore.pb
+64772 5861 -1 /data/data/com.google.android.apps.safetyhub/files/LockScreenCredentialEncryptedDataStore.pb
+64772 1627 -1 /data/data/com.google.android.apps.safetyhub/shared_prefs
+64772 5810 -1 /data/data/com.google.android.apps.safetyhub/databases
+64772 5811 -1 /data/data/com.google.android.apps.safetyhub/databases/androidx.work.workdb
+64772 5814 -1 /data/data/com.google.android.apps.safetyhub/databases/androidx.work.workdb-wal
+64772 5815 -1 /data/data/com.google.android.apps.safetyhub/databases/androidx.work.workdb-shm
+64772 5162 -1 /data/data/com.google.android.apps.work.oobconfig
+64772 5163 -1 /data/data/com.google.android.apps.work.oobconfig/cache
+64772 5164 -1 /data/data/com.google.android.apps.work.oobconfig/code_cache
+64772 4939 -1 /data/data/com.google.android.apps.work.oobconfig/files
+64772 4938 -1 /data/data/com.google.android.apps.work.oobconfig/files/downloaded_images
+64772 4960 -1 /data/data/com.google.android.apps.work.oobconfig/shared_prefs
+64772 1738 -1 /data/data/com.google.android.apps.work.oobconfig/shared_prefs/com.google.android.gms.measurement.prefs.xml
+64772 5895 -1 /data/data/com.google.android.apps.work.oobconfig/shared_prefs/oobconfig_prefs.xml
+64772 4940 -1 /data/data/com.google.android.apps.work.oobconfig/databases
+64772 4978 -1 /data/data/com.google.android.apps.work.oobconfig/no_backup
+64772 4979 -1 /data/data/com.google.android.apps.work.oobconfig/no_backup/com.google.android.gms.appid-no-backup
+64772 5168 -1 /data/data/com.google.android.pixel.setupwizard
+64772 5169 -1 /data/data/com.google.android.pixel.setupwizard/cache
+64772 5170 -1 /data/data/com.google.android.pixel.setupwizard/code_cache
+64772 5177 -1 /data/data/com.google.android.deskclock
+64772 5178 -1 /data/data/com.google.android.deskclock/cache
+64772 5179 -1 /data/data/com.google.android.deskclock/code_cache
+64772 1489 -1 /data/data/com.google.android.deskclock/shared_prefs
+64772 7434 -1 /data/data/com.google.android.deskclock/shared_prefs/com.google.android.gms.analytics.prefs.xml
+64772 1933 -1 /data/data/com.google.android.deskclock/databases
+64772 1943 -1 /data/data/com.google.android.deskclock/databases/google_analytics_v4.db
+64772 1946 -1 /data/data/com.google.android.deskclock/databases/google_analytics_v4.db-journal
+64772 8786 -1 /data/data/com.google.android.deskclock/files
+64772 8754 -1 /data/data/com.google.android.deskclock/files/gaClientId
+64772 5186 -1 /data/data/com.google.android.carrier
+64772 5187 -1 /data/data/com.google.android.carrier/cache
+64772 5188 -1 /data/data/com.google.android.carrier/code_cache
+64772 5210 -1 /data/data/com.android.nfc.auto_generated_rro_product__
+64772 5211 -1 /data/data/com.android.nfc.auto_generated_rro_product__/cache
+64772 5212 -1 /data/data/com.android.nfc.auto_generated_rro_product__/code_cache
+64772 5219 -1 /data/data/com.google.android.music
+64772 5220 -1 /data/data/com.google.android.music/cache
+64772 1586 -1 /data/data/com.google.android.music/cache/content
+64772 1417 -1 /data/data/com.google.android.music/cache/logs:main
+64772 1415 -1 /data/data/com.google.android.music/cache/logs:main/null_account.metalog
+64772 4947 -1 /data/data/com.google.android.music/cache/logs:main/null_account.metalog/play_metalog.log
+64772 4949 -1 /data/data/com.google.android.music/cache/logs:main/null_account.metalog/logs_upload_attempt.log
+64772 1922 -1 /data/data/com.google.android.music/cache/logs:main/null_account
+64772 1928 -1 /data/data/com.google.android.music/cache/logs:main/null_account/eventlog.store2264903968991152129.log
+64772 6721 -1 /data/data/com.google.android.music/cache/logs:main/null_account/eventlog.store8544512898781283021.log
+64772 6702 -1 /data/data/com.google.android.music/cache/logs:main/null_account/eventlog.store2531539172186527614.log
+64772 5221 -1 /data/data/com.google.android.music/code_cache
+64772 1593 -1 /data/data/com.google.android.music/shared_prefs
+64772 2590 -1 /data/data/com.google.android.music/shared_prefs/MusicPreferences.xml
+64772 6449 -1 /data/data/com.google.android.music/shared_prefs/store.preferences.xml
+64772 2591 -1 /data/data/com.google.android.music/shared_prefs/Music.xml
+64772 1594 -1 /data/data/com.google.android.music/databases
+64772 1596 -1 /data/data/com.google.android.music/databases/config.db
+64772 1597 -1 /data/data/com.google.android.music/databases/config.db-journal
+64772 2691 -1 /data/data/com.google.android.music/databases/music.db
+64772 2693 -1 /data/data/com.google.android.music/databases/music.db-journal
+64772 1629 -1 /data/data/com.google.android.music/files
+64772 1635 -1 /data/data/com.google.android.music/files/._playmusicid
+64772 5225 -1 /data/data/com.android.hotwordenrollment.okgoogle
+64772 5226 -1 /data/data/com.android.hotwordenrollment.okgoogle/cache
+64772 5227 -1 /data/data/com.android.hotwordenrollment.okgoogle/code_cache
+64772 5560 -1 /data/data/com.android.hotwordenrollment.okgoogle/shared_prefs
+64772 5577 -1 /data/data/com.android.hotwordenrollment.okgoogle/shared_prefs/enrollment_prefs.xml
+64772 5228 -1 /data/data/com.android.sdm.plugins.diagmon
+64772 5229 -1 /data/data/com.android.sdm.plugins.diagmon/cache
+64772 5230 -1 /data/data/com.android.sdm.plugins.diagmon/code_cache
+64772 5243 -1 /data/data/com.google.audio.hearing.visualization.accessibility.scribe
+64772 5244 -1 /data/data/com.google.audio.hearing.visualization.accessibility.scribe/cache
+64772 5245 -1 /data/data/com.google.audio.hearing.visualization.accessibility.scribe/code_cache
+64772 5246 -1 /data/data/com.android.server.wifistack
+64772 5247 -1 /data/data/com.android.server.wifistack/cache
+64772 5248 -1 /data/data/com.android.server.wifistack/code_cache
+64772 5252 -1 /data/data/com.google.android.accessibility.soundamplifier
+64772 5253 -1 /data/data/com.google.android.accessibility.soundamplifier/cache
+64772 5254 -1 /data/data/com.google.android.accessibility.soundamplifier/code_cache
+64772 5255 -1 /data/data/com.google.mds.permissions
+64772 5256 -1 /data/data/com.google.mds.permissions/cache
+64772 5257 -1 /data/data/com.google.mds.permissions/code_cache
+64772 5264 -1 /data/data/com.google.android.apps.tips
+64772 5265 -1 /data/data/com.google.android.apps.tips/cache
+64772 5266 -1 /data/data/com.google.android.apps.tips/code_cache
+64772 5870 -1 /data/data/com.google.android.apps.tips/files
+64772 5871 -1 /data/data/com.google.android.apps.tips/files/tips
+64772 5872 -1 /data/data/com.google.android.apps.tips/shared_prefs
+64772 5873 -1 /data/data/com.google.android.apps.tips/shared_prefs/tips.suggestions.pref.xml
+64772 5874 -1 /data/data/com.google.android.apps.tips/shared_prefs/com.google.android.apps.tips.smartspace.pref.xml
+64772 3777 -1 /data/data/com.google.android.apps.tips/shared_prefs/com.google.android.apps.tips.pref.xml
+64772 7267 -1 /data/data/com.google.android.apps.tips/shared_prefs/com.google.android.apps.tips.download_status.xml
+64772 5267 -1 /data/data/com.google.android.documentsui.theme.pixel
+64772 5268 -1 /data/data/com.google.android.documentsui.theme.pixel/cache
+64772 5269 -1 /data/data/com.google.android.documentsui.theme.pixel/code_cache
+64772 5270 -1 /data/data/com.google.android.modulemetadata
+64772 5271 -1 /data/data/com.google.android.modulemetadata/cache
+64772 5272 -1 /data/data/com.google.android.modulemetadata/code_cache
+64772 5280 -1 /data/data/com.google.android.apps.carrier.log
+64772 5281 -1 /data/data/com.google.android.apps.carrier.log/cache
+64772 5282 -1 /data/data/com.google.android.apps.carrier.log/code_cache
+64772 5283 -1 /data/data/com.google.android.networkstack
+64772 5284 -1 /data/data/com.google.android.networkstack/cache
+64772 5285 -1 /data/data/com.google.android.networkstack/code_cache
+64772 5286 -1 /data/data/com.google.android.contacts
+64772 5287 -1 /data/data/com.google.android.contacts/cache
+64772 5288 -1 /data/data/com.google.android.contacts/code_cache
+64772 5930 -1 /data/data/com.google.android.contacts/shared_prefs
+64772 5938 -1 /data/data/com.google.android.contacts/shared_prefs/com.google.android.contacts.xml
+64772 5943 -1 /data/data/com.google.android.contacts/shared_prefs/growthkit_phenotype_prefs.xml
+64772 5944 -1 /data/data/com.google.android.contacts/shared_prefs/growthkit_shared_prefs.xml
+64772 5932 -1 /data/data/com.google.android.contacts/app_phenotype_file
+64772 7429 -1 /data/data/com.google.android.contacts/databases
+64772 7435 -1 /data/data/com.google.android.contacts/databases/contacts.db
+64772 7439 -1 /data/data/com.google.android.contacts/databases/contacts.db-journal
+64772 7230 -1 /data/data/com.google.android.contacts/databases/growthkit.db
+64772 5304 -1 /data/data/com.android.chrome
+64772 5305 -1 /data/data/com.android.chrome/cache
+64772 5306 -1 /data/data/com.android.chrome/code_cache
+64772 5995 -1 /data/data/com.android.chrome/shared_prefs
+64772 5996 -1 /data/data/com.android.chrome/app_chrome
+64772 5997 -1 /data/data/com.android.chrome/app_textures
+64772 5998 -1 /data/data/com.android.chrome/files
+64772 5999 -1 /data/data/com.android.chrome/files/splitcompat
+64772 6000 -1 /data/data/com.android.chrome/files/splitcompat/386509238
+64772 6001 -1 /data/data/com.android.chrome/files/splitcompat/386509238/verified-splits
+64772 5292 -1 /data/data/com.android.theme.icon_pack.rounded.themepicker
+64772 5293 -1 /data/data/com.android.theme.icon_pack.rounded.themepicker/cache
+64772 5294 -1 /data/data/com.android.theme.icon_pack.rounded.themepicker/code_cache
+64772 5295 -1 /data/data/com.android.server.telecom.auto_generated_rro_product__
+64772 5296 -1 /data/data/com.android.server.telecom.auto_generated_rro_product__/cache
+64772 5297 -1 /data/data/com.android.server.telecom.auto_generated_rro_product__/code_cache
+64772 5311 -1 /data/data/com.google.android.packageinstaller
+64772 5312 -1 /data/data/com.google.android.packageinstaller/cache
+64772 5313 -1 /data/data/com.google.android.packageinstaller/code_cache
+64772 5314 -1 /data/data/com.google.android.apps.customization.pixel
+64772 5315 -1 /data/data/com.google.android.apps.customization.pixel/cache
+64772 5316 -1 /data/data/com.google.android.apps.customization.pixel/code_cache
+64772 5320 -1 /data/data/com.google.android.gsf
+64772 5321 -1 /data/data/com.google.android.gsf/cache
+64772 5322 -1 /data/data/com.google.android.gsf/code_cache
+64772 1557 -1 /data/data/com.google.android.gsf/databases
+64772 1558 -1 /data/data/com.google.android.gsf/databases/gservices.db
+64772 1559 -1 /data/data/com.google.android.gsf/databases/gservices.db-journal
+64772 1575 -1 /data/data/com.google.android.gsf/databases/googlesettings.db
+64772 1576 -1 /data/data/com.google.android.gsf/databases/googlesettings.db-journal
+64772 1578 -1 /data/data/com.google.android.gsf/databases/subscribedfeeds.db
+64772 1579 -1 /data/data/com.google.android.gsf/databases/subscribedfeeds.db-journal
+64772 1577 -1 /data/data/com.google.android.gsf/app_sslcache
+64772 1450 -1 /data/data/com.google.android.gsf/files
+64772 1420 -1 /data/data/com.google.android.gsf/files/signatures
+64772 1934 -1 /data/data/com.google.android.gsf/files/signatures/sig-473270056
+64772 1945 -1 /data/data/com.google.android.gsf/files/signatures/sig-1865707881
+64772 1936 -1 /data/data/com.google.android.gsf/files/signatures/sig525966318
+64772 1439 -1 /data/data/com.google.android.gsf/files/signatures/sig1996988062
+64772 1871 -1 /data/data/com.google.android.gsf/files/signatures/sig1157802047
+64772 2002 -1 /data/data/com.google.android.gsf/files/signatures/sig1250383197
+64772 1891 -1 /data/data/com.google.android.gsf/files/signatures/sig701992148
+64772 1381 -1 /data/data/com.google.android.gsf/files/signatures/sig-1636142052
+64772 1730 -1 /data/data/com.google.android.gsf/files/signatures/sig-440486894
+64772 2049 -1 /data/data/com.google.android.gsf/files/signatures/sig2111548302
+64772 2018 -1 /data/data/com.google.android.gsf/files/signatures/sig116737351
+64772 2020 -1 /data/data/com.google.android.gsf/files/signatures/sig2117378174
+64772 2021 -1 /data/data/com.google.android.gsf/files/signatures/sig-466204221
+64772 1944 -1 /data/data/com.google.android.gsf/files/signatures/sig172156119
+64772 1935 -1 /data/data/com.google.android.gsf/files/signatures/sig-2018359329
+64772 2092 -1 /data/data/com.google.android.gsf/files/signatures/sig959336513
+64772 2054 -1 /data/data/com.google.android.gsf/files/signatures/sig-256882296
+64772 2050 -1 /data/data/com.google.android.gsf/files/signatures/sig-1243595125
+64772 2048 -1 /data/data/com.google.android.gsf/files/signatures/sig445845208
+64772 2145 -1 /data/data/com.google.android.gsf/files/signatures/sig-133834289
+64772 2143 -1 /data/data/com.google.android.gsf/files/signatures/sig503923833
+64772 2102 -1 /data/data/com.google.android.gsf/files/signatures/sig-281206196
+64772 2149 -1 /data/data/com.google.android.gsf/files/signatures/sig879679437
+64772 2208 -1 /data/data/com.google.android.gsf/files/signatures/sig-1557736770
+64772 1468 -1 /data/data/com.google.android.gsf/files/signatures/sig2101071397
+64772 2207 -1 /data/data/com.google.android.gsf/files/signatures/sig-1421057011
+64772 2267 -1 /data/data/com.google.android.gsf/files/signatures/sig-4494797
+64772 2192 -1 /data/data/com.google.android.gsf/files/signatures/sig2120501675
+64772 2179 -1 /data/data/com.google.android.gsf/files/signatures/sig435719881
+64772 2101 -1 /data/data/com.google.android.gsf/files/signatures/sig-319209697
+64772 1948 -1 /data/data/com.google.android.gsf/files/signatures/sig-305135504
+64772 1549 -1 /data/data/com.google.android.gsf/files/signatures/sig-1894234234
+64772 2687 -1 /data/data/com.google.android.gsf/files/signatures/sig-1294377024
+64772 2491 -1 /data/data/com.google.android.gsf/files/signatures/sig1404880495
+64772 2276 -1 /data/data/com.google.android.gsf/files/signatures/sig-1177129189
+64772 2312 -1 /data/data/com.google.android.gsf/files/signatures/sig217922647
+64772 2285 -1 /data/data/com.google.android.gsf/files/signatures/sig-914084140
+64772 2311 -1 /data/data/com.google.android.gsf/files/signatures/sig1533585311
+64772 2316 -1 /data/data/com.google.android.gsf/files/signatures/sig-1960899144
+64772 2313 -1 /data/data/com.google.android.gsf/files/signatures/sig1369036940
+64772 2314 -1 /data/data/com.google.android.gsf/files/signatures/sig1142668760
+64772 2359 -1 /data/data/com.google.android.gsf/files/signatures/sig-230636179
+64772 2362 -1 /data/data/com.google.android.gsf/files/signatures/sig-642730196
+64772 2423 -1 /data/data/com.google.android.gsf/files/signatures/sig886936602
+64772 2425 -1 /data/data/com.google.android.gsf/files/signatures/sig-558984208
+64772 2323 -1 /data/data/com.google.android.gsf/files/signatures/sig828861265
+64772 2327 -1 /data/data/com.google.android.gsf/files/signatures/sig-469927610
+64772 5025 -1 /data/data/com.google.android.gsf/shared_prefs
+64772 5329 -1 /data/data/com.google.android.tts
+64772 5330 -1 /data/data/com.google.android.tts/cache
+64772 5331 -1 /data/data/com.google.android.tts/code_cache
+64772 9253 -1 /data/data/com.google.android.tts/shared_prefs
+64772 9171 -1 /data/data/com.google.android.tts/app_patts
+64772 9251 -1 /data/data/com.google.android.tts/app_voices
+64772 5346 -1 /data/data/com.google.android.apps.nexuslauncher
+64772 5347 -1 /data/data/com.google.android.apps.nexuslauncher/cache
+64772 5348 -1 /data/data/com.google.android.apps.nexuslauncher/code_cache
+64772 1536 -1 /data/data/com.google.android.apps.nexuslauncher/files
+64772 1632 -1 /data/data/com.google.android.apps.nexuslauncher/files/downgrade_schema.json
+64772 6071 -1 /data/data/com.google.android.apps.nexuslauncher/files/log-0
+64772 1538 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs
+64772 7187 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/com.android.launcher3.prefs.xml
+64772 1755 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/plugin_prefs.xml
+64772 4721 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/com.android.launcher3.device.prefs.xml
+64772 1989 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/dynamic_qsb_prefs.xml
+64772 1609 -1 /data/data/com.google.android.apps.nexuslauncher/databases
+64772 1611 -1 /data/data/com.google.android.apps.nexuslauncher/databases/launcher.db
+64772 1612 -1 /data/data/com.google.android.apps.nexuslauncher/databases/launcher.db-journal
+64772 1655 -1 /data/data/com.google.android.apps.nexuslauncher/databases/app_icons.db
+64772 1658 -1 /data/data/com.google.android.apps.nexuslauncher/databases/app_icons.db-journal
+64772 2265 -1 /data/data/com.google.android.apps.nexuslauncher/databases/widgetpreviews.db
+64772 2263 -1 /data/data/com.google.android.apps.nexuslauncher/databases/widgetpreviews.db-journal
+64772 5350 -1 /data/data/com.google.RilConfigService
+64772 5351 -1 /data/data/com.google.RilConfigService/cache
+64772 5352 -1 /data/data/com.google.RilConfigService/code_cache
+64772 5356 -1 /data/data/com.customermobile.preload.vzw
+64772 5357 -1 /data/data/com.customermobile.preload.vzw/cache
+64772 5358 -1 /data/data/com.customermobile.preload.vzw/code_cache
+64772 5359 -1 /data/data/com.android.theme.font.arbutussource
+64772 5360 -1 /data/data/com.android.theme.font.arbutussource/cache
+64772 5361 -1 /data/data/com.android.theme.font.arbutussource/code_cache
+64772 5362 -1 /data/data/com.android.theme.font.rubikrubik
+64772 5363 -1 /data/data/com.android.theme.font.rubikrubik/cache
+64772 5364 -1 /data/data/com.android.theme.font.rubikrubik/code_cache
+64772 5368 -1 /data/data/com.google.android.feedback
+64772 5369 -1 /data/data/com.google.android.feedback/cache
+64772 5370 -1 /data/data/com.google.android.feedback/code_cache
+64772 5374 -1 /data/data/com.google.android.apps.photos
+64772 5375 -1 /data/data/com.google.android.apps.photos/cache
+64772 5376 -1 /data/data/com.google.android.apps.photos/code_cache
+64772 4784 -1 /data/data/com.google.android.apps.photos/shared_prefs
+64772 4888 -1 /data/data/com.google.android.apps.photos/shared_prefs/accounts.xml
+64772 6883 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos.dbprocessor.impl.DatabaseProcessorManagerImpl.xml
+64772 3742 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos_preferences.xml
+64772 5808 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos.backup.freestorage.xml
+64772 7636 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos.accountproperties.impl.AccountPropertiesManagerImpl.xml
+64772 7556 -1 /data/data/com.google.android.apps.photos/shared_prefs/photos.backup.xml
+64772 7637 -1 /data/data/com.google.android.apps.photos/shared_prefs/low_priority_background_job_controller.xml
+64772 4789 -1 /data/data/com.google.android.apps.photos/files
+64772 4807 -1 /data/data/com.google.android.apps.photos/app_null
+64772 3691 -1 /data/data/com.google.android.apps.photos/app_null/background_results.bin
+64772 4856 -1 /data/data/com.google.android.apps.photos/databases
+64772 4858 -1 /data/data/com.google.android.apps.photos/databases/gphotos-1.db
+64772 4891 -1 /data/data/com.google.android.apps.photos/databases/gphotos-1.db-wal
+64772 4893 -1 /data/data/com.google.android.apps.photos/databases/gphotos-1.db-shm
+64772 7564 -1 /data/data/com.google.android.apps.photos/databases/disk_cache
+64772 7566 -1 /data/data/com.google.android.apps.photos/databases/disk_cache-wal
+64772 7567 -1 /data/data/com.google.android.apps.photos/databases/disk_cache-shm
+64772 7569 -1 /data/data/com.google.android.apps.photos/databases/media_store_extras
+64772 7571 -1 /data/data/com.google.android.apps.photos/databases/media_store_extras-wal
+64772 7572 -1 /data/data/com.google.android.apps.photos/databases/media_store_extras-shm
+64772 7573 -1 /data/data/com.google.android.apps.photos/databases/local_trash.db
+64772 7574 -1 /data/data/com.google.android.apps.photos/databases/local_trash.db-journal
+64772 5380 -1 /data/data/com.google.android.documentsui
+64772 5381 -1 /data/data/com.google.android.documentsui/cache
+64772 2342 -1 /data/data/com.google.android.documentsui/cache/clippings
+64772 5382 -1 /data/data/com.google.android.documentsui/code_cache
+64772 2464 -1 /data/data/com.google.android.documentsui/shared_prefs
+64772 2689 -1 /data/data/com.google.android.documentsui/databases
+64772 2922 -1 /data/data/com.google.android.documentsui/databases/search_history.db
+64772 2463 -1 /data/data/com.google.android.documentsui/databases/search_history.db-journal
+64772 5386 -1 /data/data/com.android.sdm.plugins.dcmo
+64772 5387 -1 /data/data/com.android.sdm.plugins.dcmo/cache
+64772 5388 -1 /data/data/com.android.sdm.plugins.dcmo/code_cache
+64772 5389 -1 /data/data/com.android.providers.telephony.auto_generated_rro_product__
+64772 5390 -1 /data/data/com.android.providers.telephony.auto_generated_rro_product__/cache
+64772 5391 -1 /data/data/com.android.providers.telephony.auto_generated_rro_product__/code_cache
+64772 5392 -1 /data/data/com.android.server.wifistack.permissionconfig
+64772 5393 -1 /data/data/com.android.server.wifistack.permissionconfig/cache
+64772 5394 -1 /data/data/com.android.server.wifistack.permissionconfig/code_cache
+64772 5398 -1 /data/data/com.google.android.overlay.pixelconfigcommon
+64772 5399 -1 /data/data/com.google.android.overlay.pixelconfigcommon/cache
+64772 5400 -1 /data/data/com.google.android.overlay.pixelconfigcommon/code_cache
+64772 5422 -1 /data/data/com.google.android.tetheringentitlement
+64772 5423 -1 /data/data/com.google.android.tetheringentitlement/cache
+64772 5424 -1 /data/data/com.google.android.tetheringentitlement/code_cache
+64772 5429 -1 /data/data/com.google.android.apps.dreamliner
+64772 5430 -1 /data/data/com.google.android.apps.dreamliner/cache
+64772 5431 -1 /data/data/com.google.android.apps.dreamliner/code_cache
+64772 5435 -1 /data/data/com.google.android.hiddenmenu
+64772 5436 -1 /data/data/com.google.android.hiddenmenu/cache
+64772 5437 -1 /data/data/com.google.android.hiddenmenu/code_cache
+64772 5441 -1 /data/data/com.google.googlecbrs
+64772 5442 -1 /data/data/com.google.googlecbrs/cache
+64772 5443 -1 /data/data/com.google.googlecbrs/code_cache
+64772 6188 -1 /data/data/com.google.googlecbrs/shared_prefs
+64772 5447 -1 /data/data/com.google.vr.apps.ornament
+64772 5448 -1 /data/data/com.google.vr.apps.ornament/cache
+64772 5449 -1 /data/data/com.google.vr.apps.ornament/code_cache
+64772 5454 -1 /data/data/com.android.pixellogger
+64772 5455 -1 /data/data/com.android.pixellogger/cache
+64772 5456 -1 /data/data/com.android.pixellogger/code_cache
+64772 3623 -1 /data/data/com.android.pixellogger/shared_prefs
+64772 5673 -1 /data/data/com.android.pixellogger/shared_prefs/com.android.pixellogger_preferences.xml
+64772 1357 -1 /data/data/com.android.phone.auto_generated_rro_product__
+64772 1356 -1 /data/data/com.android.phone.auto_generated_rro_product__/cache
+64772 1355 -1 /data/data/com.android.phone.auto_generated_rro_product__/code_cache
+64772 1496 -1 /data/data/com.google.android.apps.gcs
+64772 1497 -1 /data/data/com.google.android.apps.gcs/cache
+64772 1498 -1 /data/data/com.google.android.apps.gcs/code_cache
+64772 5717 -1 /data/data/com.google.android.apps.gcs/shared_prefs
+64772 9325 -1 /data/data/com.google.android.apps.gcs/shared_prefs/gcs.xml
+64772 5730 -1 /data/data/com.google.android.apps.gcs/shared_prefs/chell.xml
+64772 7389 -1 /data/data/com.google.android.apps.gcs/shared_prefs/ph_active_prefs.xml
+64772 5728 -1 /data/data/com.google.android.apps.gcs/files
+64772 1499 -1 /data/data/com.google.android.GoogleCamera
+64772 1500 -1 /data/data/com.google.android.GoogleCamera/cache
+64772 7664 -1 /data/data/com.google.android.GoogleCamera/cache/indicatorDiskCache
+64772 7665 -1 /data/data/com.google.android.GoogleCamera/cache/indicatorDiskCache/journal
+64772 1501 -1 /data/data/com.google.android.GoogleCamera/code_cache
+64772 7603 -1 /data/data/com.google.android.GoogleCamera/shared_prefs
+64772 7610 -1 /data/data/com.google.android.GoogleCamera/shared_prefs/com.google.android.GoogleCamera_media.xml
+64772 9580 -1 /data/data/com.google.android.GoogleCamera/shared_prefs/com.google.android.GoogleCamera_preferences.xml
+64772 7062 -1 /data/data/com.google.android.GoogleCamera/shared_prefs/com.google.android.GoogleCamera_preferences_camera_0.xml
+64772 7604 -1 /data/data/com.google.android.GoogleCamera/databases
+64772 7605 -1 /data/data/com.google.android.GoogleCamera/databases/special_type_db_helper
+64772 7606 -1 /data/data/com.google.android.GoogleCamera/databases/special_type_db_helper-journal
+64772 7666 -1 /data/data/com.google.android.GoogleCamera/libhalide_hexagon_remote_skel.so
+64772 7667 -1 /data/data/com.google.android.GoogleCamera/easelmanager
+64772 7668 -1 /data/data/com.google.android.GoogleCamera/easelmanager/command_processor_gca
+64772 7669 -1 /data/data/com.google.android.GoogleCamera/finish_resources_fingerprint
+64772 7670 -1 /data/data/com.google.android.GoogleCamera/easel_ocr
+64772 7671 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph
+64772 7672 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrDetectorIpu0
+64772 7673 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrDetectorIpu0/OcrDetectorIpu.pcg
+64772 7674 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa0
+64772 7675 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa0/OcrRecognizerIpuJa.pcg
+64772 7676 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa1
+64772 7677 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa1/OcrRecognizerIpuJa.pcg
+64772 7678 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin0
+64772 7679 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin0/OcrRecognizerIpuLatin.pcg
+64772 7680 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin1
+64772 7681 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin1/OcrRecognizerIpuLatin.pcg
+64772 7682 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd0
+64772 7683 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd0/OcrRecognizerIpuSd.pcg
+64772 7684 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd1
+64772 7685 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd1/OcrRecognizerIpuSd.pcg
+64772 7686 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh0
+64772 7687 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh0/OcrRecognizerIpuZh.pcg
+64772 7688 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh1
+64772 7689 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh1/OcrRecognizerIpuZh.pcg
+64772 7690 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir
+64772 7691 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10087569004397597145.bpisa
+64772 7692 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10209223556066113634.bpisa
+64772 7693 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10709873905159781681.bpisa
+64772 7694 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10904522585673223677.bpisa
+64772 7695 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/11267844732316840130.bpisa
+64772 7696 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/11326383763017309524.bpisa
+64772 7697 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12105357205798669993.bpisa
+64772 7698 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12138731604666275567.bpisa
+64772 7699 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12329201738945749681.bpisa
+64772 7700 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12712237482452317717.bpisa
+64772 7701 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12864809788888442835.bpisa
+64772 7702 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12953993076201581833.bpisa
+64772 7703 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/13521358537878782273.bpisa
+64772 7704 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/13651310521499876515.bpisa
+64772 7705 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/13728371951721736097.bpisa
+64772 7706 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14018143257813634404.bpisa
+64772 7707 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14036382162851355049.bpisa
+64772 7708 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14057655868763362224.bpisa
+64772 7709 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14208726610290393854.bpisa
+64772 7710 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14289904657128496619.bpisa
+64772 7711 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/15033653618698153712.bpisa
+64772 7712 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/15443313718196555918.bpisa
+64772 7713 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16118697882695621531.bpisa
+64772 7714 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16243326912008231155.bpisa
+64772 7715 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16272299807084175791.bpisa
+64772 7716 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16340670968060214319.bpisa
+64772 7717 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/17214422489539218937.bpisa
+64772 7718 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/17580073313359200689.bpisa
+64772 7719 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/17591493036260864348.bpisa
+64772 7720 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18006773329251572953.bpisa
+64772 7721 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18100837068173831225.bpisa
+64772 7722 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18347964131664264599.bpisa
+64772 7723 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18353534194790523900.bpisa
+64772 7724 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2104456287055153325.bpisa
+64772 7725 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2738167721860531427.bpisa
+64772 7726 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2748651854045922879.bpisa
+64772 7727 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2863001372251013079.bpisa
+64772 7728 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3162358631466715028.bpisa
+64772 7729 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3254330855114602421.bpisa
+64772 7730 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3409405449997958084.bpisa
+64772 7731 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3664917383612675183.bpisa
+64772 7732 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3763305721033316617.bpisa
+64772 7733 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/4374933200422707271.bpisa
+64772 7734 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/455264572167911.bpisa
+64772 7735 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/4712773179293894452.bpisa
+64772 7736 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/5193921628255915930.bpisa
+64772 7737 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/5435020882190853144.bpisa
+64772 7738 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/5645294104697178969.bpisa
+64772 7739 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6215797703033569682.bpisa
+64772 7740 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6267311188771465096.bpisa
+64772 7741 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6273132515011765683.bpisa
+64772 7742 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/672232905599094243.bpisa
+64772 7743 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6849217931468627661.bpisa
+64772 7744 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6889576941308015592.bpisa
+64772 7745 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6927342490532194150.bpisa
+64772 7746 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/7021986622619756397.bpisa
+64772 7747 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/7067451772257027259.bpisa
+64772 7748 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/715162566985342862.bpisa
+64772 7749 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/837220618434744345.bpisa
+64772 7750 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/8662076257519622634.bpisa
+64772 7751 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/8705601667566942454.bpisa
+64772 7752 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/9234160637058187270.bpisa
+64772 7753 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/9446025690264022451.bpisa
+64772 7754 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/967238122630170804.bpisa
+64772 7755 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model
+64772 7756 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model
+64772 7757 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_conv_recog_all_b_hi.tmp
+64772 7758 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_conv_recog_all_b_lo.tmp
+64772 7759 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_conv_recog_all_w_0.tmp
+64772 7760 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_fc0.tmp
+64772 7761 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_fc1.tmp
+64772 7762 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_io0.tmp
+64772 7763 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_io1.tmp
+64772 7764 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fc0.tmp
+64772 7765 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fc1.tmp
+64772 7766 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn0.tmp
+64772 7767 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn1.tmp
+64772 7768 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn2.tmp
+64772 7769 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn3.tmp
+64772 7770 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_io0.tmp
+64772 7771 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_io1.tmp
+64772 7772 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/latin_conv_recog_all_b_hi.tmp
+64772 7773 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/latin_conv_recog_all_b_lo.tmp
+64772 7774 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/latin_conv_recog_all_w_0.tmp
+64772 7775 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/lstm0_weights_fc_tfmini_with_bias.tmp
+64772 7776 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/lstm0_weights_io_tfmini_with_bias.tmp
+64772 7777 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_b_hi.tmp
+64772 7778 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_b_lo.tmp
+64772 7779 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_quants.tmp
+64772 7780 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_w_0.tmp
+64772 7781 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_conv_recog_all_b_hi.tmp
+64772 7782 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_conv_recog_all_b_lo.tmp
+64772 7783 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_conv_recog_all_w_0.tmp
+64772 7784 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_lstm0_weights_bias_iofc.tmp
+64772 7785 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_lstm1_fc_weights_combined.tmp
+64772 7786 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/text_recognizer_lstm1_fc_weights_fcbottom.tmp
+64772 7787 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/text_recognizer_lstm1_fc_weights_iotop.tmp
+64772 7788 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_conv_recog_all_b_hi.tmp
+64772 7789 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_conv_recog_all_b_lo.tmp
+64772 7790 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_conv_recog_all_w_0.tmp
+64772 7791 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_fc0.tmp
+64772 7792 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_fc1.tmp
+64772 7793 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_io0.tmp
+64772 7794 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_io1.tmp
+64772 7795 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fc0.tmp
+64772 7796 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fc1.tmp
+64772 7797 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn0.tmp
+64772 7798 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn1.tmp
+64772 7799 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn2.tmp
+64772 7800 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn3.tmp
+64772 7801 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_io0_smallfc.tmp
+64772 7802 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_io1.tmp
+64772 7803 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/rpn_detector_cnn
+64772 7804 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/rpn_detector_cnn/ipu_easel.hwcfg
+64772 7805 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/rpn_detector_cnn_pisa_easel.cfg
+64772 7806 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_8STP_lstm0_lstm1_fc
+64772 7807 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_8STP_lstm0_lstm1_fc/ipu_easel.hwcfg
+64772 7808 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_8STP_lstm0_lstm1_fc_pisa_easel.cfg
+64772 7809 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_8STP_lstm0_lstm1_fcss
+64772 7810 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_8STP_lstm0_lstm1_fcss/ipu_easel.hwcfg
+64772 7811 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_8STP_lstm0_lstm1_fcss_pisa_easel.cfg
+64772 7812 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_cnn
+64772 7813 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_cnn/ipu_easel.hwcfg
+64772 7814 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_cnn_pisa_easel.cfg
+64772 7815 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_pisa_easel.cfg
+64772 7816 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_cnn
+64772 7817 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_cnn/ipu_easel.hwcfg
+64772 7818 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_cnn_pisa_easel.cfg
+64772 7819 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_pisa_easel.cfg
+64772 7820 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_8STP_lstm0_lstm1_fc
+64772 7821 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_8STP_lstm0_lstm1_fc/ipu_easel.hwcfg
+64772 7822 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_8STP_lstm0_lstm1_fc_pisa_easel.cfg
+64772 7823 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_cnn
+64772 7824 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_cnn/ipu_easel.hwcfg
+64772 7825 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_cnn_pisa_easel.cfg
+64772 7826 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_pisa_easel.cfg
+64772 7827 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_8STP_lstm0_lstm1_fcss
+64772 7828 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_8STP_lstm0_lstm1_fcss/ipu_easel.hwcfg
+64772 7829 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_8STP_lstm0_lstm1_fcss_pisa_easel.cfg
+64772 7830 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_cnn
+64772 7831 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_cnn/ipu_easel.hwcfg
+64772 7832 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_cnn_pisa_easel.cfg
+64772 7833 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_pisa_easel.cfg
+64772 7834 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_detector_client_test.bincfg
+64772 7835 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_lstm_recognizer_ja_0.1.bincfg
+64772 7836 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_lstm_recognizer_latin_0.2_quant.bincfg
+64772 7837 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_lstm_recognizer_zh_0.1.bincfg
+64772 7838 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_script_detector_0.1.bincfg
+64772 7839 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/nnserver
+64772 7841 -1 /data/data/com.google.android.GoogleCamera/ocr_resources_fingerprint
+64772 9584 -1 /data/data/com.google.android.GoogleCamera/files
+64772 9569 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr
+64772 9568 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ja_0.1.bincfg
+64772 7865 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ja_0.1_transposed.conv_model
+64772 7048 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ja_0.1_transposed.conv_nnapi_info
+64772 9519 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ko_0.1.bincfg
+64772 9576 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ko_0.1_transposed.conv_model
+64772 9575 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ko_0.1_transposed.conv_nnapi_info
+64772 9593 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_latin_0.3.bincfg
+64772 9604 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_latin_0.3_transposed.conv_model
+64772 9524 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_latin_0.3_transposed.conv_nnapi_info
+64772 9609 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_zh_0.1.bincfg
+64772 9616 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_zh_0.1_transposed.conv_model
+64772 9617 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_zh_0.1_transposed.conv_nnapi_info
+64772 9565 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_nnapi_gray_quantized.bincfg
+64772 9564 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_nnapi_vertical.bincfg
+64772 7621 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_tflite_gray_quantized.bincfg
+64772 9590 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_tflite_vertical.bincfg
+64772 9626 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_ja_la.bincfg
+64772 9628 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_ko_la.bincfg
+64772 9086 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_quant.bincfg
+64772 9474 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_zh_la.bincfg
+64772 9475 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_ja_la.bincfg
+64772 7602 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_ko_la.bincfg
+64772 9571 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_latin.bincfg
+64772 9634 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_zh_la.bincfg
+64772 9629 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite
+64772 9627 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_text_detector_mobile_space_to_depth_quantized_v2_nnapi.tflite
+64772 9647 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/seastar_lstm_recognizer_ja_0.2.class_lst
+64772 9645 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/seastar_lstm_recognizer_ko_0.2.class_lst
+64772 9631 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/seastar_lstm_recognizer_zh_0.2.class_lst
+64772 9652 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.bincfg
+64772 9625 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.conv_model
+64772 9635 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.lstm_model
+64772 9666 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.lstm_nnapi_info
+64772 9668 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.bincfg
+64772 9649 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.conv_model
+64772 9669 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.lstm_model
+64772 9657 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.lstm_nnapi_info
+64772 9671 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.bincfg
+64772 9670 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.class_lst
+64772 9650 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.conv_model
+64772 9674 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.lstm_model
+64772 9675 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.lstm_nnapi_info
+64772 9673 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.bincfg
+64772 9679 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.conv_model
+64772 9680 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.lstm_model
+64772 9681 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.lstm_nnapi_info
+64772 9683 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_script_detector_0.3.bincfg
+64772 9684 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_script_detector_0.3.conv_model
+64772 9685 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_script_detector_0.3.lstm_model
+64772 9556 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tfmini_lstm_recognizer_zh_0.1.class_lst
+64772 9589 -1 /data/data/com.google.android.GoogleCamera/files/au-city-names.bloomfilter
+64772 9586 -1 /data/data/com.google.android.GoogleCamera/files/au-street-names.bloomfilter
+64772 9512 -1 /data/data/com.google.android.GoogleCamera/files/au-token-type-data-file
+64772 9595 -1 /data/data/com.google.android.GoogleCamera/files/de-city-names.bloomfilter
+64772 9505 -1 /data/data/com.google.android.GoogleCamera/files/de-street-names.bloomfilter
+64772 9600 -1 /data/data/com.google.android.GoogleCamera/files/de-token-type-data-file
+64772 9601 -1 /data/data/com.google.android.GoogleCamera/files/ca-city-names.bloomfilter
+64772 9592 -1 /data/data/com.google.android.GoogleCamera/files/ca-street-names.bloomfilter
+64772 9603 -1 /data/data/com.google.android.GoogleCamera/files/ca-token-type-data-file
+64772 9606 -1 /data/data/com.google.android.GoogleCamera/files/uk-city-names.bloomfilter
+64772 9607 -1 /data/data/com.google.android.GoogleCamera/files/uk-street-names.bloomfilter
+64772 9608 -1 /data/data/com.google.android.GoogleCamera/files/uk-token-type-data-file
+64772 9615 -1 /data/data/com.google.android.GoogleCamera/files/in-city-names.bloomfilter
+64772 9618 -1 /data/data/com.google.android.GoogleCamera/files/in-street-names.bloomfilter
+64772 9619 -1 /data/data/com.google.android.GoogleCamera/files/in-token-type-data-file
+64772 9620 -1 /data/data/com.google.android.GoogleCamera/files/us-city-names.bloomfilter
+64772 9566 -1 /data/data/com.google.android.GoogleCamera/files/us-street-names.bloomfilter
+64772 9591 -1 /data/data/com.google.android.GoogleCamera/files/us-token-type-data-file
+64772 9630 -1 /data/data/com.google.android.GoogleCamera/files/sg-city-names.bloomfilter
+64772 9329 -1 /data/data/com.google.android.GoogleCamera/files/sg-street-names.bloomfilter
+64772 9476 -1 /data/data/com.google.android.GoogleCamera/files/sg-token-type-data-file
+64772 7595 -1 /data/data/com.google.android.GoogleCamera/files/fr-city-names.bloomfilter
+64772 9632 -1 /data/data/com.google.android.GoogleCamera/files/fr-street-names.bloomfilter
+64772 9641 -1 /data/data/com.google.android.GoogleCamera/files/fr-token-type-data-file
+64772 9646 -1 /data/data/com.google.android.GoogleCamera/files/es-city-names.bloomfilter
+64772 9648 -1 /data/data/com.google.android.GoogleCamera/files/es-street-names.bloomfilter
+64772 9638 -1 /data/data/com.google.android.GoogleCamera/files/es-token-type-data-file
+64772 9651 -1 /data/data/com.google.android.GoogleCamera/files/it-city-names.bloomfilter
+64772 9624 -1 /data/data/com.google.android.GoogleCamera/files/it-street-names.bloomfilter
+64772 9655 -1 /data/data/com.google.android.GoogleCamera/files/it-token-type-data-file
+64772 9654 -1 /data/data/com.google.android.GoogleCamera/files/ie-city-names.bloomfilter
+64772 9653 -1 /data/data/com.google.android.GoogleCamera/files/ie-street-names.bloomfilter
+64772 9656 -1 /data/data/com.google.android.GoogleCamera/files/ie-token-type-data-file
+64772 9658 -1 /data/data/com.google.android.GoogleCamera/files/tw-city-names.bloomfilter
+64772 9659 -1 /data/data/com.google.android.GoogleCamera/files/tw-street-names.bloomfilter
+64772 9558 -1 /data/data/com.google.android.GoogleCamera/files/tw-token-type-data-file
+64772 9559 -1 /data/data/com.google.android.GoogleCamera/files/jp-city-names.bloomfilter
+64772 9560 -1 /data/data/com.google.android.GoogleCamera/files/jp-street-names.bloomfilter
+64772 9561 -1 /data/data/com.google.android.GoogleCamera/files/jp-token-type-data-file
+64772 9562 -1 /data/data/com.google.android.GoogleCamera/files/kr-city-names.bloomfilter
+64772 9563 -1 /data/data/com.google.android.GoogleCamera/files/kr-street-names.bloomfilter
+64772 9667 -1 /data/data/com.google.android.GoogleCamera/files/kr-token-type-data-file
+64772 1513 -1 /data/data/com.android.vzwomatrigger
+64772 1514 -1 /data/data/com.android.vzwomatrigger/cache
+64772 1515 -1 /data/data/com.android.vzwomatrigger/code_cache
+64772 1519 -1 /data/data/com.google.android.storagemanager
+64772 1520 -1 /data/data/com.google.android.storagemanager/cache
+64772 1521 -1 /data/data/com.google.android.storagemanager/code_cache
+64772 76 -1 /data/app-private
+64772 77 -1 /data/app-ephemeral
+64772 78 -1 /data/app-asec
+64772 79 -1 /data/app-lib
+64772 80 -1 /data/app
+64772 81 -1 /data/property
+64772 8065 -1 /data/property/persistent_properties
+64772 82 -1 /data/tombstones
+64772 6826 -1 /data/tombstones/tombstone_00
+64772 6735 -1 /data/tombstones/tombstone_01
+64772 9599 -1 /data/tombstones/tombstone_02
+64772 6889 -1 /data/tombstones/tombstone_03
+64772 85 -1 /data/dalvik-cache
+64772 200 -1 /data/dalvik-cache/arm64
+64772 8396 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkStack@NetworkStack.apk@classes.dex
+64772 8681 -1 /data/dalvik-cache/arm64/system@priv-app@ProxyHandler@ProxyHandler.apk@classes.dex
+64772 8682 -1 /data/dalvik-cache/arm64/system@priv-app@ProxyHandler@ProxyHandler.apk@classes.vdex
+64772 8641 -1 /data/dalvik-cache/arm64/system@priv-app@CallLogBackup@CallLogBackup.apk@classes.vdex
+64772 8640 -1 /data/dalvik-cache/arm64/system@priv-app@CallLogBackup@CallLogBackup.apk@classes.dex
+64772 1343 -1 /data/dalvik-cache/arm64/system@priv-app@PermissionController@PermissionController.apk@classes.dex
+64772 8877 -1 /data/dalvik-cache/arm64/system@priv-app@BlockedNumberProvider@BlockedNumberProvider.apk@classes.dex
+64772 7932 -1 /data/dalvik-cache/arm64/system@priv-app@BackupEncryption@BackupEncryption.apk@classes.vdex
+64772 7955 -1 /data/dalvik-cache/arm64/system@priv-app@ExternalStorageProvider@ExternalStorageProvider.apk@classes.vdex
+64772 8655 -1 /data/dalvik-cache/arm64/system@priv-app@LocalTransport@LocalTransport.apk@classes.dex
+64772 8878 -1 /data/dalvik-cache/arm64/system@priv-app@BlockedNumberProvider@BlockedNumberProvider.apk@classes.vdex
+64772 8760 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkPermissionConfig@NetworkPermissionConfig.apk@classes.vdex
+64772 1342 -1 /data/dalvik-cache/arm64/system@priv-app@PermissionController@PermissionController.apk@classes.vdex
+64772 7999 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProvider@DownloadProvider.apk@classes.dex
+64772 8351 -1 /data/dalvik-cache/arm64/system@priv-app@MusicFX@MusicFX.apk@classes.vdex
+64772 8656 -1 /data/dalvik-cache/arm64/system@priv-app@LocalTransport@LocalTransport.apk@classes.vdex
+64772 7954 -1 /data/dalvik-cache/arm64/system@priv-app@ExternalStorageProvider@ExternalStorageProvider.apk@classes.dex
+64772 8350 -1 /data/dalvik-cache/arm64/system@priv-app@MusicFX@MusicFX.apk@classes.dex
+64772 8000 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProvider@DownloadProvider.apk@classes.vdex
+64772 8397 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkStack@NetworkStack.apk@classes.vdex
+64772 8153 -1 /data/dalvik-cache/arm64/system@priv-app@MtpService@MtpService.apk@classes.vdex
+64772 8152 -1 /data/dalvik-cache/arm64/system@priv-app@MtpService@MtpService.apk@classes.dex
+64772 8724 -1 /data/dalvik-cache/arm64/system@priv-app@SoundPicker@SoundPicker.apk@classes.dex
+64772 1360 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUI@DocumentsUI.apk@classes.vdex
+64772 8759 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkPermissionConfig@NetworkPermissionConfig.apk@classes.dex
+64772 1362 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUI@DocumentsUI.apk@classes.dex
+64772 8725 -1 /data/dalvik-cache/arm64/system@priv-app@SoundPicker@SoundPicker.apk@classes.vdex
+64772 8996 -1 /data/dalvik-cache/arm64/system@priv-app@ContactsProvider@ContactsProvider.apk@classes.vdex
+64772 7931 -1 /data/dalvik-cache/arm64/system@priv-app@BackupEncryption@BackupEncryption.apk@classes.dex
+64772 8873 -1 /data/dalvik-cache/arm64/system@priv-app@Shell@Shell.apk@classes.vdex
+64772 8161 -1 /data/dalvik-cache/arm64/system@priv-app@ONS@ONS.apk@classes.vdex
+64772 8885 -1 /data/dalvik-cache/arm64/system@priv-app@UserDictionaryProvider@UserDictionaryProvider.apk@classes.dex
+64772 1378 -1 /data/dalvik-cache/arm64/system@priv-app@ExtServices@ExtServices.apk@classes.dex
+64772 8995 -1 /data/dalvik-cache/arm64/system@priv-app@ContactsProvider@ContactsProvider.apk@classes.dex
+64772 8872 -1 /data/dalvik-cache/arm64/system@priv-app@Shell@Shell.apk@classes.dex
+64772 8886 -1 /data/dalvik-cache/arm64/system@priv-app@UserDictionaryProvider@UserDictionaryProvider.apk@classes.vdex
+64772 7896 -1 /data/dalvik-cache/arm64/system@priv-app@CalendarProvider@CalendarProvider.apk@classes.dex
+64772 8059 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProviderUi@DownloadProviderUi.apk@classes.dex
+64772 7897 -1 /data/dalvik-cache/arm64/system@priv-app@CalendarProvider@CalendarProvider.apk@classes.vdex
+64772 8843 -1 /data/dalvik-cache/arm64/system@priv-app@VpnDialogs@VpnDialogs.apk@classes.dex
+64772 8167 -1 /data/dalvik-cache/arm64/system@priv-app@BackupRestoreConfirmation@BackupRestoreConfirmation.apk@classes.dex
+64772 8060 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProviderUi@DownloadProviderUi.apk@classes.vdex
+64772 1377 -1 /data/dalvik-cache/arm64/system@priv-app@ExtServices@ExtServices.apk@classes.vdex
+64772 8168 -1 /data/dalvik-cache/arm64/system@priv-app@BackupRestoreConfirmation@BackupRestoreConfirmation.apk@classes.vdex
+64772 7994 -1 /data/dalvik-cache/arm64/system@priv-app@MmsService@MmsService.apk@classes.dex
+64772 8049 -1 /data/dalvik-cache/arm64/system@priv-app@TimeZoneUpdater@TimeZoneUpdater.apk@classes.dex
+64772 8160 -1 /data/dalvik-cache/arm64/system@priv-app@ONS@ONS.apk@classes.dex
+64772 8239 -1 /data/dalvik-cache/arm64/system@priv-app@SharedStorageBackup@SharedStorageBackup.apk@classes.vdex
+64772 8238 -1 /data/dalvik-cache/arm64/system@priv-app@SharedStorageBackup@SharedStorageBackup.apk@classes.dex
+64772 7995 -1 /data/dalvik-cache/arm64/system@priv-app@MmsService@MmsService.apk@classes.vdex
+64772 8844 -1 /data/dalvik-cache/arm64/system@priv-app@VpnDialogs@VpnDialogs.apk@classes.vdex
+64772 8182 -1 /data/dalvik-cache/arm64/system@priv-app@StatementService@StatementService.apk@classes.vdex
+64772 1400 -1 /data/dalvik-cache/arm64/system@priv-app@PackageInstaller@PackageInstaller.apk@classes.dex
+64772 1409 -1 /data/dalvik-cache/arm64/system@priv-app@Tag@Tag.apk@classes.vdex
+64772 7901 -1 /data/dalvik-cache/arm64/system@priv-app@MediaProvider@MediaProvider.apk@classes.vdex
+64772 7843 -1 /data/dalvik-cache/arm64/system@priv-app@TelephonyProvider@TelephonyProvider.apk@classes.dex
+64772 7849 -1 /data/dalvik-cache/arm64/system@priv-app@DynamicSystemInstallationService@DynamicSystemInstallationService.apk@classes.vdex
+64772 7878 -1 /data/dalvik-cache/arm64/product@priv-app@Velvet@Velvet.apk@classes.vdex
+64772 8371 -1 /data/dalvik-cache/arm64/system@priv-app@CellBroadcastAppPlatform@CellBroadcastAppPlatform.apk@classes.dex
+64772 8974 -1 /data/dalvik-cache/arm64/system@app@Bluetooth@Bluetooth.apk@classes.dex
+64772 7978 -1 /data/dalvik-cache/arm64/system@app@CompanionDeviceManager@CompanionDeviceManager.apk@classes.dex
+64772 7920 -1 /data/dalvik-cache/arm64/system@priv-app@CNEService@CNEService.apk@classes.vdex
+64772 8070 -1 /data/dalvik-cache/arm64/system@app@PacProcessor@PacProcessor.apk@classes.dex
+64772 1431 -1 /data/dalvik-cache/arm64/system@app@ExtShared@ExtShared.apk@classes.dex
+64772 8752 -1 /data/dalvik-cache/arm64/system@app@LiveWallpapersPicker@LiveWallpapersPicker.apk@classes.dex
+64772 8071 -1 /data/dalvik-cache/arm64/system@app@PacProcessor@PacProcessor.apk@classes.vdex
+64772 8330 -1 /data/dalvik-cache/arm64/system@app@CaptivePortalLogin@CaptivePortalLogin.apk@classes.dex
+64772 7966 -1 /data/dalvik-cache/arm64/system@app@uimremoteclient@uimremoteclient.apk@classes.vdex
+64772 8990 -1 /data/dalvik-cache/arm64/system@app@embms@embms.apk@classes.dex
+64772 8916 -1 /data/dalvik-cache/arm64/system@app@BluetoothMidiService@BluetoothMidiService.apk@classes.dex
+64772 8075 -1 /data/dalvik-cache/arm64/system@app@SimAppDialog@SimAppDialog.apk@classes.dex
+64772 8671 -1 /data/dalvik-cache/arm64/system@app@CarrierDefaultApp@CarrierDefaultApp.apk@classes.dex
+64772 8331 -1 /data/dalvik-cache/arm64/system@app@CaptivePortalLogin@CaptivePortalLogin.apk@classes.vdex
+64772 8163 -1 /data/dalvik-cache/arm64/system@app@Stk@Stk.apk@classes.dex
+64772 8130 -1 /data/dalvik-cache/arm64/system@app@datastatusnotification@datastatusnotification.apk@classes.vdex
+64772 8028 -1 /data/dalvik-cache/arm64/system@app@QtiTelephonyService@QtiTelephonyService.apk@classes.dex
+64772 7971 -1 /data/dalvik-cache/arm64/system@app@HTMLViewer@HTMLViewer.apk@classes.vdex
+64772 8148 -1 /data/dalvik-cache/arm64/system@app@EasterEgg@EasterEgg.apk@classes.dex
+64772 8650 -1 /data/dalvik-cache/arm64/system@app@SafetyRegulatoryInfo@SafetyRegulatoryInfo.apk@classes.dex
+64772 8173 -1 /data/dalvik-cache/arm64/system@app@radioconfig@radioconfig.apk@classes.dex
+64772 8986 -1 /data/dalvik-cache/arm64/system@app@atfwd@atfwd.apk@classes.vdex
+64772 8410 -1 /data/dalvik-cache/arm64/system@app@RcsService@RcsService.apk@classes.dex
+64772 8174 -1 /data/dalvik-cache/arm64/system@app@radioconfig@radioconfig.apk@classes.vdex
+64772 8411 -1 /data/dalvik-cache/arm64/system@app@RcsService@RcsService.apk@classes.vdex
+64772 8629 -1 /data/dalvik-cache/arm64/system@priv-app@TagGoogle@TagGoogle.apk@classes.dex
+64772 8749 -1 /data/dalvik-cache/arm64/system@app@PresencePolling@PresencePolling.apk@classes.vdex
+64772 8985 -1 /data/dalvik-cache/arm64/system@app@atfwd@atfwd.apk@classes.dex
+64772 8921 -1 /data/dalvik-cache/arm64/system@app@ConferenceDialer@ConferenceDialer.apk@classes.dex
+64772 8157 -1 /data/dalvik-cache/arm64/system@app@NfcNci@NfcNci.apk@classes.vdex
+64772 8177 -1 /data/dalvik-cache/arm64/system@app@ims@ims.apk@classes.dex
+64772 8080 -1 /data/dalvik-cache/arm64/system@app@CertInstaller@CertInstaller.apk@classes.dex
+64772 8324 -1 /data/dalvik-cache/arm64/system@priv-app@WifiStack@WifiStack.apk@classes.dex
+64772 8309 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleDialer@GoogleDialer.apk@classes.dex
+64772 8922 -1 /data/dalvik-cache/arm64/system@app@ConferenceDialer@ConferenceDialer.apk@classes.vdex
+64772 7660 -1 /data/dalvik-cache/arm64/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.dex
+64772 7909 -1 /data/dalvik-cache/arm64/system@app@GoogleExtShared@GoogleExtShared.apk@classes.dex
+64772 8211 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePermissionController@GooglePermissionController.apk@classes.dex
+64772 8729 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUIGoogle@DocumentsUIGoogle.apk@classes.dex
+64772 8416 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePackageInstaller@GooglePackageInstaller.apk@classes.dex
+64772 8630 -1 /data/dalvik-cache/arm64/system@priv-app@TagGoogle@TagGoogle.apk@classes.vdex
+64772 8632 -1 /data/dalvik-cache/arm64/system@priv-app@TagGoogle@TagGoogle.apk@classes.art
+64772 8823 -1 /data/dalvik-cache/arm64/product@priv-app@MaestroPrebuilt@MaestroPrebuilt.apk@classes.vdex
+64772 8181 -1 /data/dalvik-cache/arm64/system@priv-app@StatementService@StatementService.apk@classes.dex
+64772 8232 -1 /data/dalvik-cache/arm64/system@priv-app@qcrilmsgtunnel@qcrilmsgtunnel.apk@classes.dex
+64772 8719 -1 /data/dalvik-cache/arm64/system@priv-app@ManagedProvisioning@ManagedProvisioning.apk@classes.dex
+64772 8233 -1 /data/dalvik-cache/arm64/system@priv-app@qcrilmsgtunnel@qcrilmsgtunnel.apk@classes.vdex
+64772 8050 -1 /data/dalvik-cache/arm64/system@priv-app@TimeZoneUpdater@TimeZoneUpdater.apk@classes.vdex
+64772 8720 -1 /data/dalvik-cache/arm64/system@priv-app@ManagedProvisioning@ManagedProvisioning.apk@classes.vdex
+64772 7965 -1 /data/dalvik-cache/arm64/system@app@uimremoteclient@uimremoteclient.apk@classes.dex
+64772 7848 -1 /data/dalvik-cache/arm64/system@priv-app@DynamicSystemInstallationService@DynamicSystemInstallationService.apk@classes.dex
+64772 8858 -1 /data/dalvik-cache/arm64/system@priv-app@TeleService@TeleService.apk@classes.dex
+64772 8859 -1 /data/dalvik-cache/arm64/system@priv-app@TeleService@TeleService.apk@classes.vdex
+64772 7919 -1 /data/dalvik-cache/arm64/system@priv-app@CNEService@CNEService.apk@classes.dex
+64772 1410 -1 /data/dalvik-cache/arm64/system@priv-app@Tag@Tag.apk@classes.dex
+64772 1399 -1 /data/dalvik-cache/arm64/system@priv-app@PackageInstaller@PackageInstaller.apk@classes.vdex
+64772 8187 -1 /data/dalvik-cache/arm64/system@app@OsuLogin@OsuLogin.apk@classes.vdex
+64772 8372 -1 /data/dalvik-cache/arm64/system@priv-app@CellBroadcastAppPlatform@CellBroadcastAppPlatform.apk@classes.vdex
+64772 8186 -1 /data/dalvik-cache/arm64/system@app@OsuLogin@OsuLogin.apk@classes.dex
+64772 7844 -1 /data/dalvik-cache/arm64/system@priv-app@TelephonyProvider@TelephonyProvider.apk@classes.vdex
+64772 7900 -1 /data/dalvik-cache/arm64/system@priv-app@MediaProvider@MediaProvider.apk@classes.dex
+64772 8263 -1 /data/dalvik-cache/arm64/system@app@PrintSpooler@PrintSpooler.apk@classes.dex
+64772 8975 -1 /data/dalvik-cache/arm64/system@app@Bluetooth@Bluetooth.apk@classes.vdex
+64772 8299 -1 /data/dalvik-cache/arm64/system@app@SecureElement@SecureElement.apk@classes.dex
+64772 7979 -1 /data/dalvik-cache/arm64/system@app@CompanionDeviceManager@CompanionDeviceManager.apk@classes.vdex
+64772 8300 -1 /data/dalvik-cache/arm64/system@app@SecureElement@SecureElement.apk@classes.vdex
+64772 8264 -1 /data/dalvik-cache/arm64/system@app@PrintSpooler@PrintSpooler.apk@classes.vdex
+64772 8941 -1 /data/dalvik-cache/arm64/system@app@Traceur@Traceur.apk@classes.dex
+64772 8038 -1 /data/dalvik-cache/arm64/system@app@uimremoteserver@uimremoteserver.apk@classes.dex
+64772 8942 -1 /data/dalvik-cache/arm64/system@app@Traceur@Traceur.apk@classes.vdex
+64772 1430 -1 /data/dalvik-cache/arm64/system@app@ExtShared@ExtShared.apk@classes.vdex
+64772 8753 -1 /data/dalvik-cache/arm64/system@app@LiveWallpapersPicker@LiveWallpapersPicker.apk@classes.vdex
+64772 8039 -1 /data/dalvik-cache/arm64/system@app@uimremoteserver@uimremoteserver.apk@classes.vdex
+64772 8834 -1 /data/dalvik-cache/arm64/system@app@QTIDiagServices@QTIDiagServices.apk@classes.vdex
+64772 8991 -1 /data/dalvik-cache/arm64/system@app@embms@embms.apk@classes.vdex
+64772 8149 -1 /data/dalvik-cache/arm64/system@app@EasterEgg@EasterEgg.apk@classes.vdex
+64772 8917 -1 /data/dalvik-cache/arm64/system@app@BluetoothMidiService@BluetoothMidiService.apk@classes.vdex
+64772 8833 -1 /data/dalvik-cache/arm64/system@app@QTIDiagServices@QTIDiagServices.apk@classes.dex
+64772 8164 -1 /data/dalvik-cache/arm64/system@app@Stk@Stk.apk@classes.vdex
+64772 8178 -1 /data/dalvik-cache/arm64/system@app@ims@ims.apk@classes.vdex
+64772 8076 -1 /data/dalvik-cache/arm64/system@app@SimAppDialog@SimAppDialog.apk@classes.vdex
+64772 8764 -1 /data/dalvik-cache/arm64/system@app@BookmarkProvider@BookmarkProvider.apk@classes.dex
+64772 8129 -1 /data/dalvik-cache/arm64/system@app@datastatusnotification@datastatusnotification.apk@classes.dex
+64772 8765 -1 /data/dalvik-cache/arm64/system@app@BookmarkProvider@BookmarkProvider.apk@classes.vdex
+64772 8651 -1 /data/dalvik-cache/arm64/system@app@SafetyRegulatoryInfo@SafetyRegulatoryInfo.apk@classes.vdex
+64772 8315 -1 /data/dalvik-cache/arm64/system@app@BuiltInPrintService@BuiltInPrintService.apk@classes.dex
+64772 8316 -1 /data/dalvik-cache/arm64/system@app@BuiltInPrintService@BuiltInPrintService.apk@classes.vdex
+64772 7970 -1 /data/dalvik-cache/arm64/system@app@HTMLViewer@HTMLViewer.apk@classes.dex
+64772 8672 -1 /data/dalvik-cache/arm64/system@app@CarrierDefaultApp@CarrierDefaultApp.apk@classes.vdex
+64772 8081 -1 /data/dalvik-cache/arm64/system@app@CertInstaller@CertInstaller.apk@classes.vdex
+64772 8029 -1 /data/dalvik-cache/arm64/system@app@QtiTelephonyService@QtiTelephonyService.apk@classes.vdex
+64772 8293 -1 /data/dalvik-cache/arm64/system@app@BasicDreams@BasicDreams.apk@classes.dex
+64772 8156 -1 /data/dalvik-cache/arm64/system@app@NfcNci@NfcNci.apk@classes.dex
+64772 8748 -1 /data/dalvik-cache/arm64/system@app@PresencePolling@PresencePolling.apk@classes.dex
+64772 7974 -1 /data/dalvik-cache/arm64/system@app@uceShimService@uceShimService.apk@classes.dex
+64772 7975 -1 /data/dalvik-cache/arm64/system@app@uceShimService@uceShimService.apk@classes.vdex
+64772 8294 -1 /data/dalvik-cache/arm64/system@app@BasicDreams@BasicDreams.apk@classes.vdex
+64772 8704 -1 /data/dalvik-cache/arm64/system@app@GooglePrintRecommendationService@GooglePrintRecommendationService.apk@classes.vdex
+64772 7540 -1 /data/dalvik-cache/arm64/product@priv-app@OemDmTrigger@OemDmTrigger.apk@classes.art
+64772 7600 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSetup@CarrierSetup.apk@classes.art
+64772 7880 -1 /data/dalvik-cache/arm64/product@priv-app@Velvet@Velvet.apk@classes.art
+64772 7925 -1 /data/dalvik-cache/arm64/product@app@DiagnosticsToolPrebuilt@DiagnosticsToolPrebuilt.apk@classes.vdex
+64772 7927 -1 /data/dalvik-cache/arm64/product@app@DiagnosticsToolPrebuilt@DiagnosticsToolPrebuilt.apk@classes.art
+64772 7936 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccSupportPixel@EuiccSupportPixel.apk@classes.dex
+64772 8391 -1 /data/dalvik-cache/arm64/product@app@CarrierMetrics@CarrierMetrics.apk@classes.dex
+64772 7957 -1 /data/dalvik-cache/arm64/system@priv-app@ExternalStorageProvider@ExternalStorageProvider.apk@classes.art
+64772 7973 -1 /data/dalvik-cache/arm64/system@app@HTMLViewer@HTMLViewer.apk@classes.art
+64772 7983 -1 /data/dalvik-cache/arm64/product@priv-app@ConnectivityMonitor@ConnectivityMonitor.apk@classes.dex
+64772 8021 -1 /data/dalvik-cache/arm64/product@app@WallpapersBReel2018@WallpapersBReel2018.apk@classes.art
+64772 8033 -1 /data/dalvik-cache/arm64/product@priv-app@ConfigUpdater@ConfigUpdater.apk@classes.dex
+64772 8034 -1 /data/dalvik-cache/arm64/product@priv-app@ConfigUpdater@ConfigUpdater.apk@classes.vdex
+64772 8047 -1 /data/dalvik-cache/arm64/product@priv-app@SafetyHubPrebuilt@SafetyHubPrebuilt.apk@classes.art
+64772 8083 -1 /data/dalvik-cache/arm64/system@app@CertInstaller@CertInstaller.apk@classes.art
+64772 8085 -1 /data/dalvik-cache/arm64/product@app@talkback@talkback.apk@classes.dex
+64772 8136 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentXGoogleWCD9340@HotwordEnrollmentXGoogleWCD9340.apk@classes.art
+64772 8151 -1 /data/dalvik-cache/arm64/system@app@EasterEgg@EasterEgg.apk@classes.art
+64772 8189 -1 /data/dalvik-cache/arm64/system@app@OsuLogin@OsuLogin.apk@classes.art
+64772 8199 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSettings@CarrierSettings.apk@classes.art
+64772 8201 -1 /data/dalvik-cache/arm64/product@priv-app@SprintDM@SprintDM.apk@classes.dex
+64772 8206 -1 /data/dalvik-cache/arm64/product@app@RamdumpUploader@RamdumpUploader.apk@classes.dex
+64772 8216 -1 /data/dalvik-cache/arm64/product@priv-app@AmbientSensePrebuilt@AmbientSensePrebuilt.apk@classes.dex
+64772 8221 -1 /data/dalvik-cache/arm64/product@priv-app@SetupWizardPrebuilt@SetupWizardPrebuilt.apk@classes.dex
+64772 8358 -1 /data/dalvik-cache/arm64/product@app@Drive@Drive.apk@classes.art
+64772 8222 -1 /data/dalvik-cache/arm64/product@priv-app@SetupWizardPrebuilt@SetupWizardPrebuilt.apk@classes.vdex
+64772 8241 -1 /data/dalvik-cache/arm64/system@priv-app@SharedStorageBackup@SharedStorageBackup.apk@classes.art
+64772 8254 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.vdex
+64772 8277 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentOKGoogleWCD9340@HotwordEnrollmentOKGoogleWCD9340.apk@classes.art
+64772 8283 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaClient@MobileFeliCaClient.apk@classes.dex
+64772 8284 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaClient@MobileFeliCaClient.apk@classes.vdex
+64772 8296 -1 /data/dalvik-cache/arm64/system@app@BasicDreams@BasicDreams.apk@classes.art
+64772 8320 -1 /data/dalvik-cache/arm64/product@priv-app@ScribePrebuilt@ScribePrebuilt.apk@classes.dex
+64772 8323 -1 /data/dalvik-cache/arm64/product@priv-app@ScribePrebuilt@ScribePrebuilt.apk@classes.art
+64772 8343 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystemPermissions@ModemDiagnosticSystemPermissions.apk@classes.art
+64772 8345 -1 /data/dalvik-cache/arm64/product@app@xdivert@xdivert.apk@classes.dex
+64772 8366 -1 /data/dalvik-cache/arm64/product@app@MarkupGoogle@MarkupGoogle.apk@classes.dex
+64772 8367 -1 /data/dalvik-cache/arm64/product@app@MarkupGoogle@MarkupGoogle.apk@classes.vdex
+64772 8392 -1 /data/dalvik-cache/arm64/product@app@CarrierMetrics@CarrierMetrics.apk@classes.vdex
+64772 8405 -1 /data/dalvik-cache/arm64/product@app@GoogleContactsSyncAdapter@GoogleContactsSyncAdapter.apk@classes.art
+64772 8619 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleServicesFramework@GoogleServicesFramework.apk@classes.dex
+64772 8622 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleServicesFramework@GoogleServicesFramework.apk@classes.art
+64772 8624 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierServices@CarrierServices.apk@classes.dex
+64772 8627 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierServices@CarrierServices.apk@classes.art
+64772 8643 -1 /data/dalvik-cache/arm64/system@priv-app@CallLogBackup@CallLogBackup.apk@classes.art
+64772 8653 -1 /data/dalvik-cache/arm64/system@app@SafetyRegulatoryInfo@SafetyRegulatoryInfo.apk@classes.art
+64772 8667 -1 /data/dalvik-cache/arm64/product@priv-app@NexusLauncherRelease@NexusLauncherRelease.apk@classes.vdex
+64772 8674 -1 /data/dalvik-cache/arm64/system@app@CarrierDefaultApp@CarrierDefaultApp.apk@classes.art
+64772 8676 -1 /data/dalvik-cache/arm64/product@priv-app@RilConfigService@RilConfigService.apk@classes.dex
+64772 8744 -1 /data/dalvik-cache/arm64/system@app@PartnerBookmarksProvider@PartnerBookmarksProvider.apk@classes.dex
+64772 8325 -1 /data/dalvik-cache/arm64/system@priv-app@WifiStack@WifiStack.apk@classes.vdex
+64772 7661 -1 /data/dalvik-cache/arm64/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.vdex
+64772 7910 -1 /data/dalvik-cache/arm64/system@app@GoogleExtShared@GoogleExtShared.apk@classes.vdex
+64772 8310 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleDialer@GoogleDialer.apk@classes.vdex
+64772 8730 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUIGoogle@DocumentsUIGoogle.apk@classes.vdex
+64772 8417 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePackageInstaller@GooglePackageInstaller.apk@classes.vdex
+64772 8703 -1 /data/dalvik-cache/arm64/system@app@GooglePrintRecommendationService@GooglePrintRecommendationService.apk@classes.dex
+64772 8822 -1 /data/dalvik-cache/arm64/product@priv-app@MaestroPrebuilt@MaestroPrebuilt.apk@classes.dex
+64772 7639 -1 /data/dalvik-cache/arm64/product@app@VZWAPNLib@VZWAPNLib.apk@classes.dex
+64772 7851 -1 /data/dalvik-cache/arm64/system@priv-app@DynamicSystemInstallationService@DynamicSystemInstallationService.apk@classes.art
+64772 7853 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMO@ConnMO.apk@classes.dex
+64772 7854 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMO@ConnMO.apk@classes.vdex
+64772 7877 -1 /data/dalvik-cache/arm64/product@priv-app@Velvet@Velvet.apk@classes.dex
+64772 7893 -1 /data/dalvik-cache/arm64/product@priv-app@MyVerizonServices@MyVerizonServices.apk@classes.vdex
+64772 7899 -1 /data/dalvik-cache/arm64/system@priv-app@CalendarProvider@CalendarProvider.apk@classes.art
+64772 7907 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleOneTimeInitializer@GoogleOneTimeInitializer.apk@classes.art
+64772 7924 -1 /data/dalvik-cache/arm64/product@app@DiagnosticsToolPrebuilt@DiagnosticsToolPrebuilt.apk@classes.dex
+64772 7959 -1 /data/dalvik-cache/arm64/product@app@DMAgent@DMAgent.apk@classes.dex
+64772 7968 -1 /data/dalvik-cache/arm64/system@app@uimremoteclient@uimremoteclient.apk@classes.art
+64772 7984 -1 /data/dalvik-cache/arm64/product@priv-app@ConnectivityMonitor@ConnectivityMonitor.apk@classes.vdex
+64772 7987 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPluginBoot@MobileFeliCaWebPluginBoot.apk@classes.dex
+64772 7988 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPluginBoot@MobileFeliCaWebPluginBoot.apk@classes.vdex
+64772 7990 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPlugin@MobileFeliCaWebPlugin.apk@classes.dex
+64772 7997 -1 /data/dalvik-cache/arm64/system@priv-app@MmsService@MmsService.apk@classes.art
+64772 8002 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProvider@DownloadProvider.apk@classes.art
+64772 8016 -1 /data/dalvik-cache/arm64/product@app@SoundPickerPrebuilt@SoundPickerPrebuilt.apk@classes.art
+64772 8031 -1 /data/dalvik-cache/arm64/system@app@QtiTelephonyService@QtiTelephonyService.apk@classes.art
+64772 8036 -1 /data/dalvik-cache/arm64/product@priv-app@ConfigUpdater@ConfigUpdater.apk@classes.art
+64772 8052 -1 /data/dalvik-cache/arm64/system@priv-app@TimeZoneUpdater@TimeZoneUpdater.apk@classes.art
+64772 8062 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProviderUi@DownloadProviderUi.apk@classes.art
+64772 8073 -1 /data/dalvik-cache/arm64/system@app@PacProcessor@PacProcessor.apk@classes.art
+64772 8078 -1 /data/dalvik-cache/arm64/system@app@SimAppDialog@SimAppDialog.apk@classes.art
+64772 8086 -1 /data/dalvik-cache/arm64/product@app@talkback@talkback.apk@classes.vdex
+64772 8090 -1 /data/dalvik-cache/arm64/product@priv-app@OTAConfigPrebuilt@OTAConfigPrebuilt.apk@classes.dex
+64772 8091 -1 /data/dalvik-cache/arm64/product@priv-app@OTAConfigPrebuilt@OTAConfigPrebuilt.apk@classes.vdex
+64772 8093 -1 /data/dalvik-cache/arm64/product@priv-app@OTAConfigPrebuilt@OTAConfigPrebuilt.apk@classes.art
+64772 8133 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentXGoogleWCD9340@HotwordEnrollmentXGoogleWCD9340.apk@classes.dex
+64772 8134 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentXGoogleWCD9340@HotwordEnrollmentXGoogleWCD9340.apk@classes.vdex
+64772 8139 -1 /data/dalvik-cache/arm64/product@priv-app@PixelSetupWizard@PixelSetupWizard.apk@classes.vdex
+64772 8144 -1 /data/dalvik-cache/arm64/product@priv-app@grilservice@grilservice.apk@classes.vdex
+64772 8146 -1 /data/dalvik-cache/arm64/product@priv-app@grilservice@grilservice.apk@classes.art
+64772 8159 -1 /data/dalvik-cache/arm64/system@app@NfcNci@NfcNci.apk@classes.art
+64772 8191 -1 /data/dalvik-cache/arm64/product@priv-app@MatchmakerPrebuiltPixel3@MatchmakerPrebuiltPixel3.apk@classes.dex
+64772 8194 -1 /data/dalvik-cache/arm64/product@priv-app@MatchmakerPrebuiltPixel3@MatchmakerPrebuiltPixel3.apk@classes.art
+64772 8202 -1 /data/dalvik-cache/arm64/product@priv-app@SprintDM@SprintDM.apk@classes.vdex
+64772 8204 -1 /data/dalvik-cache/arm64/product@priv-app@SprintDM@SprintDM.apk@classes.art
+64772 8214 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePermissionController@GooglePermissionController.apk@classes.art
+64772 8227 -1 /data/dalvik-cache/arm64/product@app@NetGrapher@NetGrapher.apk@classes.dex
+64772 7598 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSetup@CarrierSetup.apk@classes.vdex
+64772 7663 -1 /data/dalvik-cache/arm64/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.art
+64772 7912 -1 /data/dalvik-cache/arm64/system@app@GoogleExtShared@GoogleExtShared.apk@classes.art
+64772 8379 -1 /data/dalvik-cache/arm64/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.vdex
+64772 7962 -1 /data/dalvik-cache/arm64/product@app@DMAgent@DMAgent.apk@classes.art
+64772 7986 -1 /data/dalvik-cache/arm64/product@priv-app@ConnectivityMonitor@ConnectivityMonitor.apk@classes.art
+64772 8018 -1 /data/dalvik-cache/arm64/product@app@WallpapersBReel2018@WallpapersBReel2018.apk@classes.dex
+64772 8023 -1 /data/dalvik-cache/arm64/product@app@PlayAutoInstallConfig@PlayAutoInstallConfig.apk@classes.dex
+64772 8024 -1 /data/dalvik-cache/arm64/product@app@PlayAutoInstallConfig@PlayAutoInstallConfig.apk@classes.vdex
+64772 8026 -1 /data/dalvik-cache/arm64/product@app@PlayAutoInstallConfig@PlayAutoInstallConfig.apk@classes.art
+64772 8045 -1 /data/dalvik-cache/arm64/product@priv-app@SafetyHubPrebuilt@SafetyHubPrebuilt.apk@classes.vdex
+64772 8055 -1 /data/dalvik-cache/arm64/product@app@arcore@arcore.apk@classes.vdex
+64772 8141 -1 /data/dalvik-cache/arm64/product@priv-app@PixelSetupWizard@PixelSetupWizard.apk@classes.art
+64772 8170 -1 /data/dalvik-cache/arm64/system@priv-app@BackupRestoreConfirmation@BackupRestoreConfirmation.apk@classes.art
+64772 8184 -1 /data/dalvik-cache/arm64/system@priv-app@StatementService@StatementService.apk@classes.art
+64772 8196 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSettings@CarrierSettings.apk@classes.dex
+64772 8219 -1 /data/dalvik-cache/arm64/product@priv-app@AmbientSensePrebuilt@AmbientSensePrebuilt.apk@classes.art
+64772 8235 -1 /data/dalvik-cache/arm64/system@priv-app@qcrilmsgtunnel@qcrilmsgtunnel.apk@classes.art
+64772 8275 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentOKGoogleWCD9340@HotwordEnrollmentOKGoogleWCD9340.apk@classes.vdex
+64772 8282 -1 /data/dalvik-cache/arm64/product@priv-app@DiagMon@DiagMon.apk@classes.art
+64772 8286 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuApp@MobileFeliCaMenuApp.apk@classes.dex
+64772 8289 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaSettingApp@MobileFeliCaSettingApp.apk@classes.dex
+64772 8306 -1 /data/dalvik-cache/arm64/product@priv-app@WellbeingPrebuilt@WellbeingPrebuilt.apk@classes.vdex
+64772 8308 -1 /data/dalvik-cache/arm64/product@priv-app@WellbeingPrebuilt@WellbeingPrebuilt.apk@classes.art
+64772 8321 -1 /data/dalvik-cache/arm64/product@priv-app@ScribePrebuilt@ScribePrebuilt.apk@classes.vdex
+64772 8333 -1 /data/dalvik-cache/arm64/system@app@CaptivePortalLogin@CaptivePortalLogin.apk@classes.art
+64772 8346 -1 /data/dalvik-cache/arm64/product@app@xdivert@xdivert.apk@classes.vdex
+64772 8355 -1 /data/dalvik-cache/arm64/product@app@Drive@Drive.apk@classes.dex
+64772 8360 -1 /data/dalvik-cache/arm64/product@priv-app@TipsPrebuilt@TipsPrebuilt.apk@classes.dex
+64772 8363 -1 /data/dalvik-cache/arm64/product@priv-app@TipsPrebuilt@TipsPrebuilt.apk@classes.art
+64772 8369 -1 /data/dalvik-cache/arm64/product@app@MarkupGoogle@MarkupGoogle.apk@classes.art
+64772 8394 -1 /data/dalvik-cache/arm64/product@app@CarrierMetrics@CarrierMetrics.apk@classes.art
+64772 8399 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkStack@NetworkStack.apk@classes.art
+64772 8402 -1 /data/dalvik-cache/arm64/product@app@GoogleContactsSyncAdapter@GoogleContactsSyncAdapter.apk@classes.dex
+64772 8403 -1 /data/dalvik-cache/arm64/product@app@GoogleContactsSyncAdapter@GoogleContactsSyncAdapter.apk@classes.vdex
+64772 8498 -1 /data/dalvik-cache/arm64/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.dex
+64772 8646 -1 /data/dalvik-cache/arm64/product@priv-app@GooglePartnerSetup@GooglePartnerSetup.apk@classes.vdex
+64772 8694 -1 /data/dalvik-cache/arm64/product@priv-app@Showcase@Showcase.apk@classes.art
+64772 8697 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleFeedback@GoogleFeedback.apk@classes.dex
+64772 8735 -1 /data/dalvik-cache/arm64/product@priv-app@BetterBug@BetterBug.apk@classes.vdex
+64772 8737 -1 /data/dalvik-cache/arm64/product@priv-app@BetterBug@BetterBug.apk@classes.art
+64772 8770 -1 /data/dalvik-cache/arm64/product@priv-app@SettingsGoogle@SettingsGoogle.apk@classes.vdex
+64772 8780 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidMigratePrebuilt@AndroidMigratePrebuilt.apk@classes.vdex
+64772 8787 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidAutoFullPrebuilt@AndroidAutoFullPrebuilt.apk@classes.art
+64772 8792 -1 /data/dalvik-cache/arm64/product@priv-app@obdm_stub@obdm_stub.apk@classes.art
+64772 8800 -1 /data/dalvik-cache/arm64/product@priv-app@TurboPrebuilt@TurboPrebuilt.apk@classes.vdex
+64772 8804 -1 /data/dalvik-cache/arm64/product@app@Tycho@Tycho.apk@classes.vdex
+64772 8810 -1 /data/dalvik-cache/arm64/product@priv-app@TetheringEntitlement@TetheringEntitlement.apk@classes.art
+64772 8817 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerPrebuilt@DreamlinerPrebuilt.apk@classes.dex
+64772 8820 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerPrebuilt@DreamlinerPrebuilt.apk@classes.art
+64772 1467 -1 /data/dalvik-cache/arm64/system@app@PrintRecommendationService@PrintRecommendationService.apk@classes.dex
+64772 1466 -1 /data/dalvik-cache/arm64/system@app@PrintRecommendationService@PrintRecommendationService.apk@classes.vdex
+64772 8212 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePermissionController@GooglePermissionController.apk@classes.vdex
+64772 8745 -1 /data/dalvik-cache/arm64/system@app@PartnerBookmarksProvider@PartnerBookmarksProvider.apk@classes.vdex
+64772 8951 -1 /data/dalvik-cache/arm64/system@app@vzw_msdc_api@vzw_msdc_api.apk@classes.dex
+64772 8952 -1 /data/dalvik-cache/arm64/system@app@vzw_msdc_api@vzw_msdc_api.apk@classes.vdex
+64772 7537 -1 /data/dalvik-cache/arm64/product@priv-app@OemDmTrigger@OemDmTrigger.apk@classes.dex
+64772 7538 -1 /data/dalvik-cache/arm64/product@priv-app@OemDmTrigger@OemDmTrigger.apk@classes.vdex
+64772 7597 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSetup@CarrierSetup.apk@classes.dex
+64772 7640 -1 /data/dalvik-cache/arm64/product@app@VZWAPNLib@VZWAPNLib.apk@classes.vdex
+64772 7642 -1 /data/dalvik-cache/arm64/product@app@VZWAPNLib@VZWAPNLib.apk@classes.art
+64772 7856 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMO@ConnMO.apk@classes.art
+64772 7892 -1 /data/dalvik-cache/arm64/product@priv-app@MyVerizonServices@MyVerizonServices.apk@classes.dex
+64772 7904 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleOneTimeInitializer@GoogleOneTimeInitializer.apk@classes.dex
+64772 7905 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleOneTimeInitializer@GoogleOneTimeInitializer.apk@classes.vdex
+64772 7922 -1 /data/dalvik-cache/arm64/system@priv-app@CNEService@CNEService.apk@classes.art
+64772 7934 -1 /data/dalvik-cache/arm64/system@priv-app@BackupEncryption@BackupEncryption.apk@classes.art
+64772 7937 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccSupportPixel@EuiccSupportPixel.apk@classes.vdex
+64772 7939 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccSupportPixel@EuiccSupportPixel.apk@classes.art
+64772 8378 -1 /data/dalvik-cache/arm64/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.dex
+64772 7960 -1 /data/dalvik-cache/arm64/product@app@DMAgent@DMAgent.apk@classes.vdex
+64772 7981 -1 /data/dalvik-cache/arm64/system@app@CompanionDeviceManager@CompanionDeviceManager.apk@classes.art
+64772 7991 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPlugin@MobileFeliCaWebPlugin.apk@classes.vdex
+64772 8005 -1 /data/dalvik-cache/arm64/product@app@PrebuiltBugle@PrebuiltBugle.apk@classes.dex
+64772 8006 -1 /data/dalvik-cache/arm64/product@app@PrebuiltBugle@PrebuiltBugle.apk@classes.vdex
+64772 8356 -1 /data/dalvik-cache/arm64/product@app@Drive@Drive.apk@classes.vdex
+64772 8008 -1 /data/dalvik-cache/arm64/product@app@PrebuiltBugle@PrebuiltBugle.apk@classes.art
+64772 8013 -1 /data/dalvik-cache/arm64/product@app@SoundPickerPrebuilt@SoundPickerPrebuilt.apk@classes.dex
+64772 8014 -1 /data/dalvik-cache/arm64/product@app@SoundPickerPrebuilt@SoundPickerPrebuilt.apk@classes.vdex
+64772 8019 -1 /data/dalvik-cache/arm64/product@app@WallpapersBReel2018@WallpapersBReel2018.apk@classes.vdex
+64772 8041 -1 /data/dalvik-cache/arm64/system@app@uimremoteserver@uimremoteserver.apk@classes.art
+64772 8044 -1 /data/dalvik-cache/arm64/product@priv-app@SafetyHubPrebuilt@SafetyHubPrebuilt.apk@classes.dex
+64772 8054 -1 /data/dalvik-cache/arm64/product@app@arcore@arcore.apk@classes.dex
+64772 8057 -1 /data/dalvik-cache/arm64/product@app@arcore@arcore.apk@classes.art
+64772 8088 -1 /data/dalvik-cache/arm64/product@app@talkback@talkback.apk@classes.art
+64772 8138 -1 /data/dalvik-cache/arm64/product@priv-app@PixelSetupWizard@PixelSetupWizard.apk@classes.dex
+64772 8143 -1 /data/dalvik-cache/arm64/product@priv-app@grilservice@grilservice.apk@classes.dex
+64772 8176 -1 /data/dalvik-cache/arm64/system@app@radioconfig@radioconfig.apk@classes.art
+64772 8192 -1 /data/dalvik-cache/arm64/product@priv-app@MatchmakerPrebuiltPixel3@MatchmakerPrebuiltPixel3.apk@classes.vdex
+64772 8197 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSettings@CarrierSettings.apk@classes.vdex
+64772 8207 -1 /data/dalvik-cache/arm64/product@app@RamdumpUploader@RamdumpUploader.apk@classes.vdex
+64772 8209 -1 /data/dalvik-cache/arm64/product@app@RamdumpUploader@RamdumpUploader.apk@classes.art
+64772 8217 -1 /data/dalvik-cache/arm64/product@priv-app@AmbientSensePrebuilt@AmbientSensePrebuilt.apk@classes.vdex
+64772 8224 -1 /data/dalvik-cache/arm64/product@priv-app@SetupWizardPrebuilt@SetupWizardPrebuilt.apk@classes.art
+64772 8228 -1 /data/dalvik-cache/arm64/product@app@NetGrapher@NetGrapher.apk@classes.vdex
+64772 8230 -1 /data/dalvik-cache/arm64/product@app@NetGrapher@NetGrapher.apk@classes.art
+64772 8244 -1 /data/dalvik-cache/arm64/product@priv-app@AppDirectedSMSService@AppDirectedSMSService.apk@classes.vdex
+64772 8261 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccGoogle@EuiccGoogle.apk@classes.art
+64772 8269 -1 /data/dalvik-cache/arm64/product@priv-app@Volta@Volta.apk@classes.dex
+64772 8279 -1 /data/dalvik-cache/arm64/product@priv-app@DiagMon@DiagMon.apk@classes.dex
+64772 8280 -1 /data/dalvik-cache/arm64/product@priv-app@DiagMon@DiagMon.apk@classes.vdex
+64772 8287 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuApp@MobileFeliCaMenuApp.apk@classes.vdex
+64772 8302 -1 /data/dalvik-cache/arm64/system@app@SecureElement@SecureElement.apk@classes.art
+64772 8686 -1 /data/dalvik-cache/arm64/product@app@SSRestartDetector@SSRestartDetector.apk@classes.dex
+64772 8698 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleFeedback@GoogleFeedback.apk@classes.vdex
+64772 8700 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleFeedback@GoogleFeedback.apk@classes.art
+64772 8715 -1 /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.vdex
+64772 8727 -1 /data/dalvik-cache/arm64/system@priv-app@SoundPicker@SoundPicker.apk@classes.art
+64772 8732 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUIGoogle@DocumentsUIGoogle.apk@classes.art
+64772 8734 -1 /data/dalvik-cache/arm64/product@priv-app@BetterBug@BetterBug.apk@classes.dex
+64772 8777 -1 /data/dalvik-cache/arm64/product@priv-app@WfcActivation@WfcActivation.apk@classes.art
+64772 8779 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidMigratePrebuilt@AndroidMigratePrebuilt.apk@classes.dex
+64772 8784 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidAutoFullPrebuilt@AndroidAutoFullPrebuilt.apk@classes.dex
+64772 8789 -1 /data/dalvik-cache/arm64/product@priv-app@obdm_stub@obdm_stub.apk@classes.dex
+64772 8830 -1 /data/dalvik-cache/arm64/product@priv-app@SprintHM@SprintHM.apk@classes.art
+64772 8836 -1 /data/dalvik-cache/arm64/system@app@QTIDiagServices@QTIDiagServices.apk@classes.art
+64772 8839 -1 /data/dalvik-cache/arm64/product@app@com.qualcomm.qti.services.secureui@com.qualcomm.qti.services.secureui.apk@classes.vdex
+64772 8853 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleCBRS@GoogleCBRS.apk@classes.dex
+64772 8895 -1 /data/dalvik-cache/arm64/product@app@EmergencyInfoGoogleNoUi@EmergencyInfoGoogleNoUi.apk@classes.vdex
+64772 8900 -1 /data/dalvik-cache/arm64/product@app@LocationHistoryPrebuilt@LocationHistoryPrebuilt.apk@classes.vdex
+64772 8946 -1 /data/dalvik-cache/arm64/product@priv-app@HelpRtcPrebuilt@HelpRtcPrebuilt.apk@classes.dex
+64772 8949 -1 /data/dalvik-cache/arm64/product@priv-app@HelpRtcPrebuilt@HelpRtcPrebuilt.apk@classes.art
+64772 8977 -1 /data/dalvik-cache/arm64/system@app@Bluetooth@Bluetooth.apk@classes.art
+64772 9000 -1 /data/dalvik-cache/arm64/product@priv-app@VendorLoggingService@VendorLoggingService.apk@classes.vdex
+64772 9022 -1 /data/dalvik-cache/arm64/product@app@LatinIMEGooglePrebuilt@LatinIMEGooglePrebuilt.apk@classes.art
+64772 8253 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.dex
+64772 8256 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.art
+64772 8272 -1 /data/dalvik-cache/arm64/product@priv-app@Volta@Volta.apk@classes.art
+64772 8290 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaSettingApp@MobileFeliCaSettingApp.apk@classes.vdex
+64772 8340 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystemPermissions@ModemDiagnosticSystemPermissions.apk@classes.dex
+64772 8386 -1 /data/dalvik-cache/arm64/product@app@WebViewGoogle@WebViewGoogle.apk@classes.vdex
+64772 8419 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePackageInstaller@GooglePackageInstaller.apk@classes.art
+64772 8625 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierServices@CarrierServices.apk@classes.vdex
+64772 8634 -1 /data/dalvik-cache/arm64/product@app@GoogleTTS@GoogleTTS.apk@classes.dex
+64772 8648 -1 /data/dalvik-cache/arm64/product@priv-app@GooglePartnerSetup@GooglePartnerSetup.apk@classes.art
+64772 8658 -1 /data/dalvik-cache/arm64/system@priv-app@LocalTransport@LocalTransport.apk@classes.art
+64772 8669 -1 /data/dalvik-cache/arm64/product@priv-app@NexusLauncherRelease@NexusLauncherRelease.apk@classes.art
+64772 8677 -1 /data/dalvik-cache/arm64/product@priv-app@RilConfigService@RilConfigService.apk@classes.vdex
+64772 8708 -1 /data/dalvik-cache/arm64/product@app@Photos@Photos.apk@classes.dex
+64772 8711 -1 /data/dalvik-cache/arm64/product@app@Photos@Photos.apk@classes.art
+64772 8722 -1 /data/dalvik-cache/arm64/system@priv-app@ManagedProvisioning@ManagedProvisioning.apk@classes.art
+64772 8740 -1 /data/dalvik-cache/arm64/product@priv-app@DCMO@DCMO.apk@classes.vdex
+64772 8769 -1 /data/dalvik-cache/arm64/product@priv-app@SettingsGoogle@SettingsGoogle.apk@classes.dex
+64772 8825 -1 /data/dalvik-cache/arm64/product@priv-app@MaestroPrebuilt@MaestroPrebuilt.apk@classes.art
+64772 8964 -1 /data/dalvik-cache/arm64/product@priv-app@GmsCoreSetupPrebuilt@GmsCoreSetupPrebuilt.apk@classes.vdex
+64772 8972 -1 /data/dalvik-cache/arm64/product@priv-app@GCS@GCS.apk@classes.art
+64772 8993 -1 /data/dalvik-cache/arm64/system@app@embms@embms.apk@classes.art
+64772 8999 -1 /data/dalvik-cache/arm64/product@priv-app@VendorLoggingService@VendorLoggingService.apk@classes.dex
+64772 9015 -1 /data/dalvik-cache/arm64/product@priv-app@VzwOmaTrigger@VzwOmaTrigger.apk@classes.vdex
+64772 8828 -1 /data/dalvik-cache/arm64/product@priv-app@SprintHM@SprintHM.apk@classes.vdex
+64772 8841 -1 /data/dalvik-cache/arm64/product@app@com.qualcomm.qti.services.secureui@com.qualcomm.qti.services.secureui.apk@classes.art
+64772 8846 -1 /data/dalvik-cache/arm64/system@priv-app@VpnDialogs@VpnDialogs.apk@classes.art
+64772 8881 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuMainApp@MobileFeliCaMenuMainApp.apk@classes.vdex
+64772 8899 -1 /data/dalvik-cache/arm64/product@app@LocationHistoryPrebuilt@LocationHistoryPrebuilt.apk@classes.dex
+64772 8944 -1 /data/dalvik-cache/arm64/system@app@Traceur@Traceur.apk@classes.art
+64772 8954 -1 /data/dalvik-cache/arm64/system@app@vzw_msdc_api@vzw_msdc_api.apk@classes.art
+64772 8957 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystem@ModemDiagnosticSystem.apk@classes.dex
+64772 8966 -1 /data/dalvik-cache/arm64/product@priv-app@GmsCoreSetupPrebuilt@GmsCoreSetupPrebuilt.apk@classes.art
+64772 8981 -1 /data/dalvik-cache/arm64/vendor@app@TimeService@TimeService.apk@classes.vdex
+64772 9009 -1 /data/dalvik-cache/arm64/product@priv-app@LLKAgent@LLKAgent.apk@classes.dex
+64772 9010 -1 /data/dalvik-cache/arm64/product@priv-app@LLKAgent@LLKAgent.apk@classes.vdex
+64772 9027 -1 /data/dalvik-cache/arm64/product@priv-app@StorageManagerGoogle@StorageManagerGoogle.apk@classes.art
+64772 8335 -1 /data/dalvik-cache/arm64/product@app@SoundAmplifierPrebuilt@SoundAmplifierPrebuilt.apk@classes.dex
+64772 8341 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystemPermissions@ModemDiagnosticSystemPermissions.apk@classes.vdex
+64772 8499 -1 /data/dalvik-cache/arm64/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.vdex
+64772 8620 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleServicesFramework@GoogleServicesFramework.apk@classes.vdex
+64772 8684 -1 /data/dalvik-cache/arm64/system@priv-app@ProxyHandler@ProxyHandler.apk@classes.art
+64772 8687 -1 /data/dalvik-cache/arm64/product@app@SSRestartDetector@SSRestartDetector.apk@classes.vdex
+64772 8714 -1 /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.dex
+64772 8762 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkPermissionConfig@NetworkPermissionConfig.apk@classes.art
+64772 8795 -1 /data/dalvik-cache/arm64/product@priv-app@SCONE@SCONE.apk@classes.vdex
+64772 8808 -1 /data/dalvik-cache/arm64/product@priv-app@TetheringEntitlement@TetheringEntitlement.apk@classes.vdex
+64772 8838 -1 /data/dalvik-cache/arm64/product@app@com.qualcomm.qti.services.secureui@com.qualcomm.qti.services.secureui.apk@classes.dex
+64772 8854 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleCBRS@GoogleCBRS.apk@classes.vdex
+64772 8861 -1 /data/dalvik-cache/arm64/system@priv-app@TeleService@TeleService.apk@classes.art
+64772 8870 -1 /data/dalvik-cache/arm64/product@app@GoogleVrCore@GoogleVrCore.apk@classes.art
+64772 8936 -1 /data/dalvik-cache/arm64/product@priv-app@TMobilePlanProvider@TMobilePlanProvider.apk@classes.dex
+64772 8947 -1 /data/dalvik-cache/arm64/product@priv-app@HelpRtcPrebuilt@HelpRtcPrebuilt.apk@classes.vdex
+64772 8960 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystem@ModemDiagnosticSystem.apk@classes.art
+64772 8969 -1 /data/dalvik-cache/arm64/product@priv-app@GCS@GCS.apk@classes.dex
+64772 8970 -1 /data/dalvik-cache/arm64/product@priv-app@GCS@GCS.apk@classes.vdex
+64772 8980 -1 /data/dalvik-cache/arm64/vendor@app@TimeService@TimeService.apk@classes.dex
+64772 9002 -1 /data/dalvik-cache/arm64/product@priv-app@VendorLoggingService@VendorLoggingService.apk@classes.art
+64772 9012 -1 /data/dalvik-cache/arm64/product@priv-app@LLKAgent@LLKAgent.apk@classes.art
+64772 8709 -1 /data/dalvik-cache/arm64/product@app@Photos@Photos.apk@classes.vdex
+64772 8742 -1 /data/dalvik-cache/arm64/product@priv-app@DCMO@DCMO.apk@classes.art
+64772 8774 -1 /data/dalvik-cache/arm64/product@priv-app@WfcActivation@WfcActivation.apk@classes.dex
+64772 8775 -1 /data/dalvik-cache/arm64/product@priv-app@WfcActivation@WfcActivation.apk@classes.vdex
+64772 8782 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidMigratePrebuilt@AndroidMigratePrebuilt.apk@classes.art
+64772 8785 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidAutoFullPrebuilt@AndroidAutoFullPrebuilt.apk@classes.vdex
+64772 8797 -1 /data/dalvik-cache/arm64/product@priv-app@SCONE@SCONE.apk@classes.art
+64772 8799 -1 /data/dalvik-cache/arm64/product@priv-app@TurboPrebuilt@TurboPrebuilt.apk@classes.dex
+64772 8803 -1 /data/dalvik-cache/arm64/product@app@Tycho@Tycho.apk@classes.dex
+64772 8848 -1 /data/dalvik-cache/arm64/product@priv-app@WallpaperPickerGoogleRelease@WallpaperPickerGoogleRelease.apk@classes.dex
+64772 8889 -1 /data/dalvik-cache/arm64/product@app@Ornament@Ornament.apk@classes.dex
+64772 8905 -1 /data/dalvik-cache/arm64/product@app@PixelLogger@PixelLogger.apk@classes.vdex
+64772 8907 -1 /data/dalvik-cache/arm64/product@app@PixelLogger@PixelLogger.apk@classes.art
+64772 8911 -1 /data/dalvik-cache/arm64/product@priv-app@HardwareInfo@HardwareInfo.apk@classes.dex
+64772 8919 -1 /data/dalvik-cache/arm64/system@app@BluetoothMidiService@BluetoothMidiService.apk@classes.art
+64772 8924 -1 /data/dalvik-cache/arm64/system@app@ConferenceDialer@ConferenceDialer.apk@classes.art
+64772 8937 -1 /data/dalvik-cache/arm64/product@priv-app@TMobilePlanProvider@TMobilePlanProvider.apk@classes.vdex
+64772 8988 -1 /data/dalvik-cache/arm64/system@app@atfwd@atfwd.apk@classes.art
+64772 9004 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMetrics@ConnMetrics.apk@classes.dex
+64772 9007 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMetrics@ConnMetrics.apk@classes.art
+64772 9014 -1 /data/dalvik-cache/arm64/product@priv-app@VzwOmaTrigger@VzwOmaTrigger.apk@classes.dex
+64772 9017 -1 /data/dalvik-cache/arm64/product@priv-app@VzwOmaTrigger@VzwOmaTrigger.apk@classes.art
+64772 9024 -1 /data/dalvik-cache/arm64/product@priv-app@StorageManagerGoogle@StorageManagerGoogle.apk@classes.dex
+64772 9025 -1 /data/dalvik-cache/arm64/product@priv-app@StorageManagerGoogle@StorageManagerGoogle.apk@classes.vdex
+64772 8243 -1 /data/dalvik-cache/arm64/product@priv-app@AppDirectedSMSService@AppDirectedSMSService.apk@classes.dex
+64772 8246 -1 /data/dalvik-cache/arm64/product@priv-app@AppDirectedSMSService@AppDirectedSMSService.apk@classes.art
+64772 8258 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccGoogle@EuiccGoogle.apk@classes.dex
+64772 8259 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccGoogle@EuiccGoogle.apk@classes.vdex
+64772 8266 -1 /data/dalvik-cache/arm64/system@app@PrintSpooler@PrintSpooler.apk@classes.art
+64772 8270 -1 /data/dalvik-cache/arm64/product@priv-app@Volta@Volta.apk@classes.vdex
+64772 8274 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentOKGoogleWCD9340@HotwordEnrollmentOKGoogleWCD9340.apk@classes.dex
+64772 8312 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleDialer@GoogleDialer.apk@classes.art
+64772 8318 -1 /data/dalvik-cache/arm64/system@app@BuiltInPrintService@BuiltInPrintService.apk@classes.art
+64772 8338 -1 /data/dalvik-cache/arm64/product@app@SoundAmplifierPrebuilt@SoundAmplifierPrebuilt.apk@classes.art
+64772 8353 -1 /data/dalvik-cache/arm64/system@priv-app@MusicFX@MusicFX.apk@classes.art
+64772 8361 -1 /data/dalvik-cache/arm64/product@priv-app@TipsPrebuilt@TipsPrebuilt.apk@classes.vdex
+64772 8635 -1 /data/dalvik-cache/arm64/product@app@GoogleTTS@GoogleTTS.apk@classes.vdex
+64772 8637 -1 /data/dalvik-cache/arm64/product@app@GoogleTTS@GoogleTTS.apk@classes.art
+64772 8645 -1 /data/dalvik-cache/arm64/product@priv-app@GooglePartnerSetup@GooglePartnerSetup.apk@classes.dex
+64772 8679 -1 /data/dalvik-cache/arm64/product@priv-app@RilConfigService@RilConfigService.apk@classes.art
+64772 8691 -1 /data/dalvik-cache/arm64/product@priv-app@Showcase@Showcase.apk@classes.dex
+64772 8706 -1 /data/dalvik-cache/arm64/system@app@GooglePrintRecommendationService@GooglePrintRecommendationService.apk@classes.art
+64772 8717 -1 /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.art
+64772 8739 -1 /data/dalvik-cache/arm64/product@priv-app@DCMO@DCMO.apk@classes.dex
+64772 8755 -1 /data/dalvik-cache/arm64/system@app@LiveWallpapersPicker@LiveWallpapersPicker.apk@classes.art
+64772 8790 -1 /data/dalvik-cache/arm64/product@priv-app@obdm_stub@obdm_stub.apk@classes.vdex
+64772 8794 -1 /data/dalvik-cache/arm64/product@priv-app@SCONE@SCONE.apk@classes.dex
+64772 8802 -1 /data/dalvik-cache/arm64/product@priv-app@TurboPrebuilt@TurboPrebuilt.apk@classes.art
+64772 8818 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerPrebuilt@DreamlinerPrebuilt.apk@classes.vdex
+64772 8856 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleCBRS@GoogleCBRS.apk@classes.art
+64772 8849 -1 /data/dalvik-cache/arm64/product@priv-app@WallpaperPickerGoogleRelease@WallpaperPickerGoogleRelease.apk@classes.vdex
+64772 8875 -1 /data/dalvik-cache/arm64/system@priv-app@Shell@Shell.apk@classes.art
+64772 8880 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuMainApp@MobileFeliCaMenuMainApp.apk@classes.dex
+64772 8931 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerUpdater@DreamlinerUpdater.apk@classes.dex
+64772 8939 -1 /data/dalvik-cache/arm64/product@priv-app@TMobilePlanProvider@TMobilePlanProvider.apk@classes.art
+64772 8983 -1 /data/dalvik-cache/arm64/vendor@app@TimeService@TimeService.apk@classes.art
+64772 9005 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMetrics@ConnMetrics.apk@classes.vdex
+64772 8827 -1 /data/dalvik-cache/arm64/product@priv-app@SprintHM@SprintHM.apk@classes.dex
+64772 8867 -1 /data/dalvik-cache/arm64/product@app@GoogleVrCore@GoogleVrCore.apk@classes.dex
+64772 8897 -1 /data/dalvik-cache/arm64/product@app@EmergencyInfoGoogleNoUi@EmergencyInfoGoogleNoUi.apk@classes.art
+64772 8904 -1 /data/dalvik-cache/arm64/product@app@PixelLogger@PixelLogger.apk@classes.dex
+64772 8912 -1 /data/dalvik-cache/arm64/product@priv-app@HardwareInfo@HardwareInfo.apk@classes.vdex
+64772 8914 -1 /data/dalvik-cache/arm64/product@priv-app@HardwareInfo@HardwareInfo.apk@classes.art
+64772 8932 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerUpdater@DreamlinerUpdater.apk@classes.vdex
+64772 8934 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerUpdater@DreamlinerUpdater.apk@classes.art
+64772 9020 -1 /data/dalvik-cache/arm64/product@app@LatinIMEGooglePrebuilt@LatinIMEGooglePrebuilt.apk@classes.vdex
+64772 8305 -1 /data/dalvik-cache/arm64/product@priv-app@WellbeingPrebuilt@WellbeingPrebuilt.apk@classes.dex
+64772 8336 -1 /data/dalvik-cache/arm64/product@app@SoundAmplifierPrebuilt@SoundAmplifierPrebuilt.apk@classes.vdex
+64772 8348 -1 /data/dalvik-cache/arm64/product@app@xdivert@xdivert.apk@classes.art
+64772 8374 -1 /data/dalvik-cache/arm64/system@priv-app@CellBroadcastAppPlatform@CellBroadcastAppPlatform.apk@classes.art
+64772 8385 -1 /data/dalvik-cache/arm64/product@app@WebViewGoogle@WebViewGoogle.apk@classes.dex
+64772 8413 -1 /data/dalvik-cache/arm64/system@app@RcsService@RcsService.apk@classes.art
+64772 8666 -1 /data/dalvik-cache/arm64/product@priv-app@NexusLauncherRelease@NexusLauncherRelease.apk@classes.dex
+64772 8689 -1 /data/dalvik-cache/arm64/product@app@SSRestartDetector@SSRestartDetector.apk@classes.art
+64772 8692 -1 /data/dalvik-cache/arm64/product@priv-app@Showcase@Showcase.apk@classes.vdex
+64772 8747 -1 /data/dalvik-cache/arm64/system@app@PartnerBookmarksProvider@PartnerBookmarksProvider.apk@classes.art
+64772 8767 -1 /data/dalvik-cache/arm64/system@app@BookmarkProvider@BookmarkProvider.apk@classes.art
+64772 8772 -1 /data/dalvik-cache/arm64/product@priv-app@SettingsGoogle@SettingsGoogle.apk@classes.art
+64772 8807 -1 /data/dalvik-cache/arm64/product@priv-app@TetheringEntitlement@TetheringEntitlement.apk@classes.dex
+64772 8851 -1 /data/dalvik-cache/arm64/product@priv-app@WallpaperPickerGoogleRelease@WallpaperPickerGoogleRelease.apk@classes.art
+64772 8868 -1 /data/dalvik-cache/arm64/product@app@GoogleVrCore@GoogleVrCore.apk@classes.vdex
+64772 8890 -1 /data/dalvik-cache/arm64/product@app@Ornament@Ornament.apk@classes.vdex
+64772 8892 -1 /data/dalvik-cache/arm64/product@app@Ornament@Ornament.apk@classes.art
+64772 8894 -1 /data/dalvik-cache/arm64/product@app@EmergencyInfoGoogleNoUi@EmergencyInfoGoogleNoUi.apk@classes.dex
+64772 8902 -1 /data/dalvik-cache/arm64/product@app@LocationHistoryPrebuilt@LocationHistoryPrebuilt.apk@classes.art
+64772 8958 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystem@ModemDiagnosticSystem.apk@classes.vdex
+64772 8963 -1 /data/dalvik-cache/arm64/product@priv-app@GmsCoreSetupPrebuilt@GmsCoreSetupPrebuilt.apk@classes.dex
+64772 9019 -1 /data/dalvik-cache/arm64/product@app@LatinIMEGooglePrebuilt@LatinIMEGooglePrebuilt.apk@classes.dex
+64772 448 -1 /data/dalvik-cache/arm
+64772 1380 -1 /data/dalvik-cache/arm/system@priv-app@ExtServices@ExtServices.apk@classes.dex
+64772 7645 -1 /data/dalvik-cache/arm/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.dex
+64772 1379 -1 /data/dalvik-cache/arm/system@priv-app@ExtServices@ExtServices.apk@classes.vdex
+64772 7646 -1 /data/dalvik-cache/arm/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.vdex
+64772 7914 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP_VZW@QAS_DVC_MSP_VZW.apk@classes.dex
+64772 7915 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP_VZW@QAS_DVC_MSP_VZW.apk@classes.vdex
+64772 8926 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP@QAS_DVC_MSP.apk@classes.dex
+64772 8927 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP@QAS_DVC_MSP.apk@classes.vdex
+64772 7648 -1 /data/dalvik-cache/arm/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.art
+64772 7858 -1 /data/dalvik-cache/arm/product@priv-app@Velvet@Velvet.apk@classes.dex
+64772 7859 -1 /data/dalvik-cache/arm/product@priv-app@Velvet@Velvet.apk@classes.vdex
+64772 7861 -1 /data/dalvik-cache/arm/product@priv-app@Velvet@Velvet.apk@classes.art
+64772 7917 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP_VZW@QAS_DVC_MSP_VZW.apk@classes.art
+64772 8375 -1 /data/dalvik-cache/arm/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.dex
+64772 8376 -1 /data/dalvik-cache/arm/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.vdex
+64772 8381 -1 /data/dalvik-cache/arm/product@app@WebViewGoogle@WebViewGoogle.apk@classes.dex
+64772 8063 -1 /data/dalvik-cache/arm/product@priv-app@Phonesky@Phonesky.apk@classes.dex
+64772 8064 -1 /data/dalvik-cache/arm/product@priv-app@Phonesky@Phonesky.apk@classes.vdex
+64772 8066 -1 /data/dalvik-cache/arm/product@priv-app@Phonesky@Phonesky.apk@classes.art
+64772 8249 -1 /data/dalvik-cache/arm/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.dex
+64772 8250 -1 /data/dalvik-cache/arm/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.vdex
+64772 8252 -1 /data/dalvik-cache/arm/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.art
+64772 8382 -1 /data/dalvik-cache/arm/product@app@WebViewGoogle@WebViewGoogle.apk@classes.vdex
+64772 8420 -1 /data/dalvik-cache/arm/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.dex
+64772 8421 -1 /data/dalvik-cache/arm/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.vdex
+64772 8660 -1 /data/dalvik-cache/arm/product@app@Videos@Videos.apk@classes.dex
+64772 8661 -1 /data/dalvik-cache/arm/product@app@Videos@Videos.apk@classes.vdex
+64772 8663 -1 /data/dalvik-cache/arm/product@app@Videos@Videos.apk@classes.art
+64772 8812 -1 /data/dalvik-cache/arm/product@priv-app@DMService@DMService.apk@classes.dex
+64772 8813 -1 /data/dalvik-cache/arm/product@priv-app@DMService@DMService.apk@classes.vdex
+64772 8815 -1 /data/dalvik-cache/arm/product@priv-app@DMService@DMService.apk@classes.art
+64772 8863 -1 /data/dalvik-cache/arm/product@app@GoogleVrCore@GoogleVrCore.apk@classes.dex
+64772 8864 -1 /data/dalvik-cache/arm/product@app@GoogleVrCore@GoogleVrCore.apk@classes.vdex
+64772 8866 -1 /data/dalvik-cache/arm/product@app@GoogleVrCore@GoogleVrCore.apk@classes.art
+64772 8929 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP@QAS_DVC_MSP.apk@classes.art
+64772 86 -1 /data/ota
+64772 87 -1 /data/ota_package
+64772 88 -1 /data/resource-cache
+64772 1320 -1 /data/resource-cache/vendor@overlay@framework-res__auto_generated_rro_vendor.apk@idmap
+64772 9842 -1 /data/resource-cache/vendor@overlay@TeleService__auto_generated_rro_vendor.apk@idmap
+64772 9856 -1 /data/resource-cache/vendor@overlay@Bluetooth__auto_generated_rro_vendor.apk@idmap
+64772 9833 -1 /data/resource-cache/vendor@overlay@NfcNci__auto_generated_rro_vendor.apk@idmap
+64772 1636 -1 /data/resource-cache/vendor@overlay@SystemUI__auto_generated_rro_vendor.apk@idmap
+64772 4568 -1 /data/resource-cache/product@overlay@FontArvoLato@FontArvoLatoOverlay.apk@idmap
+64772 2104 -1 /data/resource-cache/product@overlay@DisplayCutoutNoCutout@NoCutoutOverlay.apk@idmap
+64772 2144 -1 /data/resource-cache/product@overlay@DisplayCutoutEmulationCorner@DisplayCutoutEmulationCornerOverlay.apk@idmap
+64772 2177 -1 /data/resource-cache/product@overlay@DisplayCutoutEmulationDouble@DisplayCutoutEmulationDoubleOverlay.apk@idmap
+64772 2218 -1 /data/resource-cache/product@overlay@NavigationBarModeGesturalWideBack@NavigationBarModeGesturalOverlayWideBack.apk@idmap
+64772 2257 -1 /data/resource-cache/product@overlay@AccentColorCinnamon@AccentColorCinnamonOverlay.apk@idmap
+64772 2287 -1 /data/resource-cache/product@overlay@IconPackRoundedSystemUI@IconPackRoundedSystemUIOverlay.apk@idmap
+64772 2333 -1 /data/resource-cache/product@overlay@IconPackRoundedAndroid@IconPackRoundedAndroidOverlay.apk@idmap
+64772 2371 -1 /data/resource-cache/product@overlay@DisplayCutoutEmulationTall@DisplayCutoutEmulationTallOverlay.apk@idmap
+64772 2407 -1 /data/resource-cache/product@overlay@AccentColorBlack@AccentColorBlackOverlay.apk@idmap
+64772 2444 -1 /data/resource-cache/product@overlay@AccentColorGreen@AccentColorGreenOverlay.apk@idmap
+64772 2483 -1 /data/resource-cache/product@overlay@AccentColorOcean@AccentColorOceanOverlay.apk@idmap
+64772 2520 -1 /data/resource-cache/product@overlay@AccentColorSpace@AccentColorSpaceOverlay.apk@idmap
+64772 2559 -1 /data/resource-cache/product@overlay@NavigationBarMode3Button@NavigationBarMode3ButtonOverlay.apk@idmap
+64772 2572 -1 /data/resource-cache/product@overlay@IconPackRoundedLauncher@IconPackRoundedLauncherOverlay.apk@idmap
+64772 2620 -1 /data/resource-cache/product@overlay@NavigationBarMode2Button@NavigationBarMode2ButtonOverlay.apk@idmap
+64772 2623 -1 /data/resource-cache/product@overlay@IconPackFilledSettings@IconPackFilledSettingsOverlay.apk@idmap
+64772 2621 -1 /data/resource-cache/product@overlay@NavigationBarModeGesturalExtraWideBack@NavigationBarModeGesturalOverlayExtraWideBack.apk@idmap
+64772 2624 -1 /data/resource-cache/product@overlay@IconPackCircularSettings@IconPackCircularSettingsOverlay.apk@idmap
+64772 2625 -1 /data/resource-cache/product@overlay@IconShapeTeardrop@IconShapeTeardropOverlay.apk@idmap
+64772 2626 -1 /data/resource-cache/product@overlay@IconPackFilledSystemUI@IconPackFilledSystemUIOverlay.apk@idmap
+64772 9834 -1 /data/resource-cache/product@overlay@NfcNci__auto_generated_rro_product.apk@idmap
+64772 2628 -1 /data/resource-cache/product@overlay@IconPackFilledAndroid@IconPackFilledAndroidOverlay.apk@idmap
+64772 2629 -1 /data/resource-cache/product@overlay@IconPackCircularSystemUI@IconPackCircularSystemUIOverlay.apk@idmap
+64772 2630 -1 /data/resource-cache/product@overlay@IconShapeSquircle@IconShapeSquircleOverlay.apk@idmap
+64772 2631 -1 /data/resource-cache/product@overlay@IconPackFilledLauncher@IconPackFilledLauncherOverlay.apk@idmap
+64772 2632 -1 /data/resource-cache/product@overlay@IconPackCircularLauncher@IconPackCircularLauncherOverlay.apk@idmap
+64772 2633 -1 /data/resource-cache/product@overlay@NavigationBarModeGestural@NavigationBarModeGesturalOverlay.apk@idmap
+64772 2634 -1 /data/resource-cache/product@overlay@AccentColorOrchid@AccentColorOrchidOverlay.apk@idmap
+64772 2635 -1 /data/resource-cache/product@overlay@AccentColorPurple@AccentColorPurpleOverlay.apk@idmap
+64772 2636 -1 /data/resource-cache/product@overlay@IconShapeRoundedRect@IconShapeRoundedRectOverlay.apk@idmap
+64772 2637 -1 /data/resource-cache/product@overlay@NavigationBarModeGesturalNarrowBack@NavigationBarModeGesturalOverlayNarrowBack.apk@idmap
+64772 2638 -1 /data/resource-cache/product@overlay@IconPackRoundedSettings@IconPackRoundedSettingsOverlay.apk@idmap
+64772 2639 -1 /data/resource-cache/product@overlay@IconPackCircularAndroid@IconPackCircularAndroidOverlay.apk@idmap
+64772 2622 -1 /data/resource-cache/product@overlay@GoogleConfigOverlay.apk@idmap
+64772 2646 -1 /data/resource-cache/product@overlay@GoogleWebViewOverlay.apk@idmap
+64772 2647 -1 /data/resource-cache/product@overlay@PixelConfigOverlayCommon.apk@idmap
+64772 2648 -1 /data/resource-cache/product@overlay@framework-res__auto_generated_rro_product.apk@idmap
+64772 2649 -1 /data/resource-cache/product@overlay@PixelConfigOverlay2018.apk@idmap
+64772 9809 -1 /data/resource-cache/product@overlay@ContactsProvider__auto_generated_rro_product.apk@idmap
+64772 9753 -1 /data/resource-cache/product@overlay@Telecom__auto_generated_rro_product.apk@idmap
+64772 9829 -1 /data/resource-cache/product@overlay@SettingsProvider__auto_generated_rro_product.apk@idmap
+64772 9843 -1 /data/resource-cache/product@overlay@TeleService__auto_generated_rro_product.apk@idmap
+64772 9861 -1 /data/resource-cache/product@overlay@SafetyRegulatoryInfo__auto_generated_rro_product.apk@idmap
+64772 9874 -1 /data/resource-cache/product@overlay@BuiltInPrintService__auto_generated_rro_product.apk@idmap
+64772 9750 -1 /data/resource-cache/product@overlay@SimAppDialog__auto_generated_rro_product.apk@idmap
+64772 9940 -1 /data/resource-cache/vendor@overlay@SystemUIGoogle__auto_generated_rro_vendor.apk@idmap
+64772 4315 -1 /data/resource-cache/product@overlay@IconPackCircularPixelThemePicker@IconPackCircularPixelThemePickerOverlay.apk@idmap
+64772 4548 -1 /data/resource-cache/product@overlay@IconPackRoundedPixelLauncher@IconPackRoundedPixelLauncherOverlay.apk@idmap
+64772 4681 -1 /data/resource-cache/product@overlay@IconPackRoundedPixelThemePicker@IconPackRoundedPixelThemePickerOverlay.apk@idmap
+64772 4683 -1 /data/resource-cache/product@overlay@FontArbutusSource@FontArbutusSourceOverlay.apk@idmap
+64772 4684 -1 /data/resource-cache/product@overlay@FontRubikRubik@FontRubikRubikOverlay.apk@idmap
+64772 4686 -1 /data/resource-cache/product@overlay@IconPackCircularPixelLauncher@IconPackCircularPixelLauncherOverlay.apk@idmap
+64772 4687 -1 /data/resource-cache/product@overlay@IconPackFilledPixelThemePicker@IconPackFilledPixelThemePickerOverlay.apk@idmap
+64772 9747 -1 /data/resource-cache/product@overlay@TelephonyProvider__auto_generated_rro_product.apk@idmap
+64772 9938 -1 /data/resource-cache/product@overlay@SystemUIGoogle__auto_generated_rro_product.apk@idmap
+64772 2651 -1 /data/resource-cache/product@overlay@GooglePermissionControllerOverlay.apk@idmap
+64772 4680 -1 /data/resource-cache/product@overlay@PixelDocumentsUIGoogleOverlay@PixelDocumentsUIGoogleOverlay.apk@idmap
+64772 4685 -1 /data/resource-cache/product@overlay@IconPackFilledPixelLauncher@IconPackFilledPixelLauncherOverlay.apk@idmap
+64772 89 -1 /data/lost+found
+64772 90 -1 /data/drm
+64772 4923 -1 /data/drm/fwdlock
+64772 4924 -1 /data/drm/fwdlock/kek.dat
+64772 91 -1 /data/mediadrm
+64772 92 -1 /data/anr
+64772 93 -1 /data/nfc
+64772 94 -1 /data/nfc/param
+64772 3388 -1 /data/nfc/nfaStorage.bin1
+64772 95 -1 /data/backup
+64772 3349 -1 /data/backup/pending
+64772 3352 -1 /data/backup/pending/journal8896329097179617113.tmp
+64772 1563 -1 /data/backup/pending/journal6181138908937329085.tmp
+64772 6672 -1 /data/backup/pending/journal1779791434222939980.tmp
+64772 6564 -1 /data/backup/pending/journal6393941947048230051.tmp
+64772 1662 -1 /data/backup/fb-schedule
+64772 6534 -1 /data/backup/backup_enabled
+64772 3556 -1 /data/backup/com.android.localtransport.LocalTransport
+64772 4792 -1 /data/backup/com.google.android.gms.backup.BackupTransportService
+64772 5924 -1 /data/backup/d2dMigrateTransport
+64772 96 -1 /data/ss
+64772 97 -1 /data/system
+64772 98 -1 /data/system/dropbox
+64772 2654 -1 /data/system/dropbox/system_server_strictmode@1571007122148.txt
+64772 2655 -1 /data/system/dropbox/system_server_strictmode@1571007122150.txt
+64772 2656 -1 /data/system/dropbox/system_server_strictmode@1571007122151.txt
+64772 2657 -1 /data/system/dropbox/system_server_strictmode@1571007122153.txt
+64772 2672 -1 /data/system/dropbox/storage_trim@1571007123268.txt
+64772 2673 -1 /data/system/dropbox/storage_trim@1571007123269.txt
+64772 2690 -1 /data/system/dropbox/system_server_strictmode@1571007123507.txt
+64772 2708 -1 /data/system/dropbox/system_server_strictmode@1571007123961.txt
+64772 2709 -1 /data/system/dropbox/system_server_strictmode@1571007123962.txt
+64772 2710 -1 /data/system/dropbox/system_server_strictmode@1571007123963.txt
+64772 2711 -1 /data/system/dropbox/system_server_strictmode@1571007123964.txt
+64772 2712 -1 /data/system/dropbox/system_server_strictmode@1571007123965.txt
+64772 2713 -1 /data/system/dropbox/system_server_strictmode@1571007123966.txt
+64772 2714 -1 /data/system/dropbox/system_server_strictmode@1571007123967.txt
+64772 2715 -1 /data/system/dropbox/system_server_strictmode@1571007123968.txt
+64772 2716 -1 /data/system/dropbox/system_server_strictmode@1571007123969.txt
+64772 2717 -1 /data/system/dropbox/system_server_strictmode@1571007123970.txt
+64772 2761 -1 /data/system/dropbox/system_server_strictmode@1571007124804.txt
+64772 2762 -1 /data/system/dropbox/system_server_strictmode@1571007124806.txt
+64772 2763 -1 /data/system/dropbox/system_server_strictmode@1571007124807.txt
+64772 2793 -1 /data/system/dropbox/system_server_strictmode@1571007125540.txt
+64772 2794 -1 /data/system/dropbox/system_server_strictmode@1571007125544.txt
+64772 2795 -1 /data/system/dropbox/system_server_strictmode@1571007125549.txt
+64772 2796 -1 /data/system/dropbox/system_server_strictmode@1571007125555.txt
+64772 2798 -1 /data/system/dropbox/system_server_strictmode@1571007125560.txt
+64772 2799 -1 /data/system/dropbox/system_server_strictmode@1571007125561.txt
+64772 2800 -1 /data/system/dropbox/system_server_strictmode@1571007125562.txt
+64772 2801 -1 /data/system/dropbox/system_server_strictmode@1571007125564.txt
+64772 2802 -1 /data/system/dropbox/system_server_strictmode@1571007125566.txt
+64772 2803 -1 /data/system/dropbox/system_server_strictmode@1571007125571.txt
+64772 3336 -1 /data/system/dropbox/system_server_strictmode@1571007125983.txt
+64772 3337 -1 /data/system/dropbox/system_server_strictmode@1571007125985.txt
+64772 3342 -1 /data/system/dropbox/keymaster@1571007126017.dat
+64772 3426 -1 /data/system/dropbox/system_app_strictmode@1571007127181.txt
+64772 3427 -1 /data/system/dropbox/system_app_strictmode@1571007127183.txt
+64772 3428 -1 /data/system/dropbox/system_app_strictmode@1571007127184.txt
+64772 3429 -1 /data/system/dropbox/system_app_strictmode@1571007127185.txt
+64772 3430 -1 /data/system/dropbox/system_app_strictmode@1571007127186.txt
+64772 3437 -1 /data/system/dropbox/system_app_wtf@1571007127400.txt
+64772 3517 -1 /data/system/dropbox/SYSTEM_BOOT@1571007128720.txt
+64772 3522 -1 /data/system/dropbox/system_server_wtf@1571007128832.txt
+64772 3523 -1 /data/system/dropbox/system_server_wtf@1571007128833.txt
+64772 3545 -1 /data/system/dropbox/system_server_wtf@1571007129182.txt
+64772 3546 -1 /data/system/dropbox/system_server_wtf@1571007129184.txt
+64772 3570 -1 /data/system/dropbox/system_app_strictmode@1571007129867.txt
+64772 3603 -1 /data/system/dropbox/system_server_strictmode@1571007133734.txt
+64772 3604 -1 /data/system/dropbox/system_server_strictmode@1571007133737.txt
+64772 3605 -1 /data/system/dropbox/system_server_strictmode@1571007133740.txt
+64772 3606 -1 /data/system/dropbox/system_server_strictmode@1571007133742.txt
+64772 3607 -1 /data/system/dropbox/system_server_strictmode@1571007133745.txt
+64772 3608 -1 /data/system/dropbox/system_server_strictmode@1571007133747.txt
+64772 174 -1 /data/system/dropbox/system_app_strictmode@1571007179824.txt
+64772 176 -1 /data/system/dropbox/system_app_strictmode@1571007179826.txt
+64772 198 -1 /data/system/dropbox/system_app_strictmode@1571007179828.txt
+64772 199 -1 /data/system/dropbox/system_app_strictmode@1571007179829.txt
+64772 391 -1 /data/system/dropbox/system_app_strictmode@1571007179830.txt
+64772 210 -1 /data/system/dropbox/system_app_strictmode@1571007179831.txt
+64772 986 -1 /data/system/dropbox/system_app_strictmode@1571007180529.txt
+64772 990 -1 /data/system/dropbox/system_app_strictmode@1571007180532.txt
+64772 1321 -1 /data/system/dropbox/system_app_strictmode@1571007180534.txt
+64772 1330 -1 /data/system/dropbox/system_app_strictmode@1571007180535.txt
+64772 1322 -1 /data/system/dropbox/system_app_strictmode@1571007180537.txt
+64772 4689 -1 /data/system/dropbox/system_server_strictmode@1571007375524.txt
+64772 4690 -1 /data/system/dropbox/system_server_strictmode@1571007375525.txt
+64772 4691 -1 /data/system/dropbox/system_server_strictmode@1571007375526.txt
+64772 4692 -1 /data/system/dropbox/system_server_strictmode@1571007375527.txt
+64772 4908 -1 /data/system/dropbox/system_server_strictmode@1571007387147.txt
+64772 4909 -1 /data/system/dropbox/system_server_strictmode@1571007387148.txt
+64772 4910 -1 /data/system/dropbox/system_server_strictmode@1571007387149.txt
+64772 4911 -1 /data/system/dropbox/system_server_strictmode@1571007387150.txt
+64772 4912 -1 /data/system/dropbox/system_server_strictmode@1571007387151.txt
+64772 4913 -1 /data/system/dropbox/system_server_strictmode@1571007387152.txt
+64772 4914 -1 /data/system/dropbox/system_server_strictmode@1571007387153.txt
+64772 4915 -1 /data/system/dropbox/system_server_strictmode@1571007387154.txt
+64772 4916 -1 /data/system/dropbox/system_server_strictmode@1571007387155.txt
+64772 4966 -1 /data/system/dropbox/system_server_strictmode@1571007388811.txt
+64772 4968 -1 /data/system/dropbox/system_app_wtf@1571007388832.txt
+64772 5037 -1 /data/system/dropbox/system_app_wtf@1571007389513.txt
+64772 5056 -1 /data/system/dropbox/system_server_strictmode@1571007390041.txt
+64772 5057 -1 /data/system/dropbox/system_server_strictmode@1571007390043.txt
+64772 5058 -1 /data/system/dropbox/system_server_strictmode@1571007390044.txt
+64772 5060 -1 /data/system/dropbox/system_server_strictmode@1571007390046.txt
+64772 1539 -1 /data/system/dropbox/system_server_strictmode@1571007390589.txt
+64772 2266 -1 /data/system/dropbox/system_server_strictmode@1571007392970.txt
+64772 1818 -1 /data/system/dropbox/system_server_strictmode@1571007397631.txt
+64772 1456 -1 /data/system/dropbox/system_server_strictmode@1571007397635.txt
+64772 1463 -1 /data/system/dropbox/system_server_strictmode@1571007397637.txt
+64772 1561 -1 /data/system/dropbox/event_log@1571007398581.txt
+64772 6583 -1 /data/system/dropbox/system_server_strictmode@1571007516692.txt
+64772 6584 -1 /data/system/dropbox/system_server_strictmode@1571007516693.txt
+64772 6637 -1 /data/system/dropbox/system_server_strictmode@1571007519547.txt
+64772 6638 -1 /data/system/dropbox/system_server_strictmode@1571007519548.txt
+64772 6639 -1 /data/system/dropbox/system_server_strictmode@1571007519549.txt
+64772 6663 -1 /data/system/dropbox/system_server_strictmode@1571007519955.txt
+64772 6785 -1 /data/system/dropbox/system_server_strictmode@1571007524596.txt
+64772 6797 -1 /data/system/dropbox/SYSTEM_BOOT@1571007525151.txt
+64772 6954 -1 /data/system/dropbox/event_log@1571007534578.txt
+64772 7280 -1 /data/system/dropbox/event_data@1571009317549.txt
+64772 7650 -1 /data/system/dropbox/system_server_strictmode@1571011944761.txt
+64772 7653 -1 /data/system/dropbox/system_server_strictmode@1571011944768.txt
+64772 7656 -1 /data/system/dropbox/system_server_strictmode@1571011944774.txt
+64772 7659 -1 /data/system/dropbox/system_server_strictmode@1571011944781.txt
+64772 8122 -1 /data/system/dropbox/event_data@1571012935076.txt
+64772 9173 -1 /data/system/dropbox/event_data@1571017732922.txt
+64772 9209 -1 /data/system/dropbox/system_server_strictmode@1571018434905.txt
+64772 9267 -1 /data/system/dropbox/event_data@1571020117579.txt
+64772 9451 -1 /data/system/dropbox/event_data@1571025569844.txt
+64772 9596 -1 /data/system/dropbox/event_data@1571029147050.txt
+64772 9610 -1 /data/system/dropbox/system_server_strictmode@1571029714869.txt
+64772 9611 -1 /data/system/dropbox/system_server_strictmode@1571029714873.txt
+64772 9612 -1 /data/system/dropbox/system_server_strictmode@1571029714876.txt
+64772 9695 -1 /data/system/dropbox/event_data@1571030970402.txt
+64772 9819 -1 /data/system/dropbox/event_data@1571034570803.txt
+64772 9885 -1 /data/system/dropbox/event_data@1571036370989.txt
+64772 2588 -1 /data/system/dropbox/event_data@1571039971178.txt
+64772 6708 -1 /data/system/dropbox/event_data@1571044807176.txt
+64772 4995 -1 /data/system/dropbox/system_server_strictmode@1571040994884.txt
+64772 5804 -1 /data/system/dropbox/event_data@1571047891874.txt
+64772 7019 -1 /data/system/dropbox/event_data@1571050722739.txt
+64772 7186 -1 /data/system/dropbox/system_server_strictmode@1571052214866.txt
+64772 6405 -1 /data/system/dropbox/system_server_strictmode@1571052214872.txt
+64772 6407 -1 /data/system/dropbox/system_server_strictmode@1571052214874.txt
+64772 7234 -1 /data/system/dropbox/event_data@1571052523716.txt
+64772 8106 -1 /data/system/dropbox/system_server_strictmode@1571063393129.txt
+64772 8108 -1 /data/system/dropbox/system_server_strictmode@1571063393130.txt
+64772 4848 -1 /data/system/dropbox/event_data@1571070597907.txt
+64772 8948 -1 /data/system/dropbox/event_data@1571072398269.txt
+64772 4751 -1 /data/system/dropbox/system_server_strictmode@1571074242346.txt
+64772 4752 -1 /data/system/dropbox/system_server_strictmode@1571074242347.txt
+64772 9083 -1 /data/system/dropbox/event_data@1571074242522.txt
+64772 9229 -1 /data/system/dropbox/event_data@1571078082659.txt
+64772 9361 -1 /data/system/dropbox/event_data@1571081683053.txt
+64772 9341 -1 /data/system/dropbox/system_server_strictmode@1571085274856.txt
+64772 9342 -1 /data/system/dropbox/system_server_strictmode@1571085274858.txt
+64772 9541 -1 /data/system/dropbox/system_server_strictmode@1571086177078.txt
+64772 9662 -1 /data/system/dropbox/system_server_wtf@1571086207336.txt
+64772 9876 -1 /data/system/dropbox/system_server_strictmode@1571086298986.txt
+64772 4931 -1 /data/system/dropbox/system_server_strictmode@1571086298988.txt
+64772 9989 -1 /data/system/dropbox/system_server_lowmem@1571086300453.txt.gz
+64772 1531 -1 /data/system/dropbox/system_app_wtf@1571086301489.txt
+64772 1533 -1 /data/system/dropbox/system_server_strictmode@1571086301821.txt
+64772 1534 -1 /data/system/dropbox/system_server_strictmode@1571086301822.txt
+64772 5529 -1 /data/system/dropbox/system_server_strictmode@1571086301823.txt
+64772 6607 -1 /data/system/dropbox/system_server_strictmode@1571086301825.txt
+64772 6647 -1 /data/system/dropbox/system_server_strictmode@1571086301826.txt
+64772 6661 -1 /data/system/dropbox/system_server_strictmode@1571086301827.txt
+64772 2123 -1 /data/system/dropbox/system_server_strictmode@1571086301828.txt
+64772 1642 -1 /data/system/dropbox/system_server_strictmode@1571086301829.txt
+64772 1570 -1 /data/system/dropbox/system_server_strictmode@1571086301830.txt
+64772 6692 -1 /data/system/dropbox/system_server_strictmode@1571086302186.txt
+64772 6567 -1 /data/system/dropbox/keymaster@1571086302518.dat
+64772 6753 -1 /data/system/dropbox/SYSTEM_RESTART@1571086306257.txt
+64772 7277 -1 /data/system/dropbox/system_server_wtf@1571086471890.txt
+64772 7421 -1 /data/system/dropbox/system_server_wtf@1571086508761.txt
+64772 7193 -1 /data/system/dropbox/system_server_wtf@1571086573792.txt
+64772 7470 -1 /data/system/dropbox/system_server_wtf@1571086588023.txt
+64772 4917 -1 /data/system/dropbox/system_server_strictmode@1571007387156.txt
+64772 4965 -1 /data/system/dropbox/system_server_strictmode@1571007388810.txt
+64772 4967 -1 /data/system/dropbox/system_server_strictmode@1571007388814.txt
+64772 5050 -1 /data/system/dropbox/system_server_strictmode@1571007390025.txt
+64772 5051 -1 /data/system/dropbox/system_server_strictmode@1571007390027.txt
+64772 5052 -1 /data/system/dropbox/system_server_strictmode@1571007390032.txt
+64772 5059 -1 /data/system/dropbox/system_server_strictmode@1571007390045.txt
+64772 5061 -1 /data/system/dropbox/system_server_strictmode@1571007390047.txt
+64772 5062 -1 /data/system/dropbox/system_server_strictmode@1571007390048.txt
+64772 1540 -1 /data/system/dropbox/system_server_strictmode@1571007390594.txt
+64772 1816 -1 /data/system/dropbox/system_server_strictmode@1571007397630.txt
+64772 1817 -1 /data/system/dropbox/system_server_strictmode@1571007397632.txt
+64772 1640 -1 /data/system/dropbox/system_server_strictmode@1571007397633.txt
+64772 1411 -1 /data/system/dropbox/system_server_strictmode@1571007397634.txt
+64772 1406 -1 /data/system/dropbox/system_server_strictmode@1571007397636.txt
+64772 4500 -1 /data/system/dropbox/SYSTEM_BOOT@1571007398942.txt
+64772 6582 -1 /data/system/dropbox/system_server_strictmode@1571007516691.txt
+64772 6585 -1 /data/system/dropbox/system_server_strictmode@1571007516694.txt
+64772 6610 -1 /data/system/dropbox/system_app_wtf@1571007518210.txt
+64772 6633 -1 /data/system/dropbox/system_app_wtf@1571007519195.txt
+64772 6640 -1 /data/system/dropbox/system_server_strictmode@1571007519550.txt
+64772 6641 -1 /data/system/dropbox/system_server_strictmode@1571007519552.txt
+64772 6642 -1 /data/system/dropbox/system_server_strictmode@1571007519554.txt
+64772 6643 -1 /data/system/dropbox/system_server_strictmode@1571007519556.txt
+64772 6644 -1 /data/system/dropbox/system_server_strictmode@1571007519558.txt
+64772 6645 -1 /data/system/dropbox/system_server_strictmode@1571007519560.txt
+64772 6648 -1 /data/system/dropbox/system_server_strictmode@1571007519563.txt
+64772 6662 -1 /data/system/dropbox/system_server_strictmode@1571007519954.txt
+64772 7144 -1 /data/system/dropbox/system_server_wtf@1571007651242.txt
+64772 7388 -1 /data/system/dropbox/event_data@1571011134894.txt
+64772 7651 -1 /data/system/dropbox/system_server_strictmode@1571011944764.txt
+64772 7652 -1 /data/system/dropbox/system_server_strictmode@1571011944766.txt
+64772 7654 -1 /data/system/dropbox/system_server_strictmode@1571011944770.txt
+64772 7655 -1 /data/system/dropbox/system_server_strictmode@1571011944772.txt
+64772 7657 -1 /data/system/dropbox/system_server_strictmode@1571011944777.txt
+64772 7658 -1 /data/system/dropbox/system_server_strictmode@1571011944779.txt
+64772 9077 -1 /data/system/dropbox/event_data@1571014735265.txt
+64772 9210 -1 /data/system/dropbox/system_server_strictmode@1571018434907.txt
+64772 9211 -1 /data/system/dropbox/system_server_strictmode@1571018434909.txt
+64772 9212 -1 /data/system/dropbox/system_server_strictmode@1571018434911.txt
+64772 9334 -1 /data/system/dropbox/event_data@1571021969494.txt
+64772 9391 -1 /data/system/dropbox/event_data@1571023769674.txt
+64772 9511 -1 /data/system/dropbox/event_data@1571027370035.txt
+64772 9613 -1 /data/system/dropbox/system_server_strictmode@1571029714878.txt
+64772 9754 -1 /data/system/dropbox/event_data@1571032770591.txt
+64772 9950 -1 /data/system/dropbox/event_data@1571038330625.txt
+64772 4933 -1 /data/system/dropbox/system_server_strictmode@1571040994875.txt
+64772 4956 -1 /data/system/dropbox/system_server_strictmode@1571040994878.txt
+64772 4988 -1 /data/system/dropbox/system_server_strictmode@1571040994881.txt
+64772 6679 -1 /data/system/dropbox/event_data@1571043006923.txt
+64772 6403 -1 /data/system/dropbox/system_server_strictmode@1571052214869.txt
+64772 7315 -1 /data/system/dropbox/event_data@1571054392714.txt
+64772 7326 -1 /data/system/dropbox/event_data@1571056192927.txt
+64772 7376 -1 /data/system/dropbox/system_server_strictmode@1571063393127.txt
+64772 7379 -1 /data/system/dropbox/system_server_strictmode@1571063393128.txt
+64772 8352 -1 /data/system/dropbox/event_data@1571065892596.txt
+64772 8503 -1 /data/system/dropbox/event_data@1571068797643.txt
+64772 4787 -1 /data/system/dropbox/system_server_strictmode@1571074242344.txt
+64772 4894 -1 /data/system/dropbox/system_server_strictmode@1571074242348.txt
+64772 9112 -1 /data/system/dropbox/event_data@1571076042771.txt
+64772 9269 -1 /data/system/dropbox/event_data@1571079882842.txt
+64772 9422 -1 /data/system/dropbox/event_data@1571083483249.txt
+64772 9340 -1 /data/system/dropbox/system_server_strictmode@1571085274854.txt
+64772 9477 -1 /data/system/dropbox/system_server_strictmode@1571085274860.txt
+64772 9440 -1 /data/system/dropbox/event_data@1571085295093.txt
+64772 9540 -1 /data/system/dropbox/system_server_strictmode@1571086177075.txt
+64772 9539 -1 /data/system/dropbox/system_server_strictmode@1571086177079.txt
+64772 9975 -1 /data/system/dropbox/system_server_strictmode@1571086298987.txt
+64772 4932 -1 /data/system/dropbox/system_server_strictmode@1571086298989.txt
+64772 6598 -1 /data/system/dropbox/system_app_wtf@1571086300593.txt
+64772 6606 -1 /data/system/dropbox/system_server_strictmode@1571086301824.txt
+64772 6376 -1 /data/system/dropbox/system_server_strictmode@1571086302189.txt
+64772 6044 -1 /data/system/dropbox/system_server_strictmode@1571086309409.txt
+64772 6720 -1 /data/system/dropbox/system_server_wtf@1571086498138.txt
+64772 7428 -1 /data/system/dropbox/system_server_wtf@1571086545359.txt
+64772 7443 -1 /data/system/dropbox/system_server_wtf@1571086556037.txt
+64772 7358 -1 /data/system/dropbox/system_server_wtf@1571086559577.txt
+64772 5524 -1 /data/system/dropbox/system_server_wtf@1571086570265.txt
+64772 7552 -1 /data/system/dropbox/system_server_wtf@1571086602805.txt
+64772 7469 -1 /data/system/dropbox/system_server_wtf@1571086627738.txt
+64772 7493 -1 /data/system/dropbox/system_server_wtf@1571086759408.txt
+64772 8208 -1 /data/system/dropbox/system_server_wtf@1571087008177.txt
+64772 8223 -1 /data/system/dropbox/system_server_wtf@1571087050627.txt
+64772 8521 -1 /data/system/dropbox/system_server_wtf@1571087115584.txt
+64772 8528 -1 /data/system/dropbox/system_server_wtf@1571087126189.txt
+64772 8504 -1 /data/system/dropbox/system_server_wtf@1571087149004.txt
+64772 8835 -1 /data/system/dropbox/system_server_wtf@1571087388898.txt
+64772 8585 -1 /data/system/dropbox/system_server_wtf@1571087427629.txt
+64772 8586 -1 /data/system/dropbox/system_server_wtf@1571087438384.txt
+64772 9096 -1 /data/system/dropbox/system_server_wtf@1571087652889.txt
+64772 9102 -1 /data/system/dropbox/system_server_wtf@1571087666216.txt
+64772 9069 -1 /data/system/dropbox/system_server_wtf@1571087677008.txt
+64772 8891 -1 /data/system/dropbox/system_server_wtf@1571087750044.txt
+64772 9157 -1 /data/system/dropbox/system_server_wtf@1571087775158.txt
+64772 9183 -1 /data/system/dropbox/system_server_wtf@1571087800750.txt
+64772 9156 -1 /data/system/dropbox/system_server_wtf@1571087867065.txt
+64772 9240 -1 /data/system/dropbox/system_server_wtf@1571088041504.txt
+64772 9275 -1 /data/system/dropbox/system_server_wtf@1571088056961.txt
+64772 9219 -1 /data/system/dropbox/system_server_wtf@1571088076568.txt
+64772 9306 -1 /data/system/dropbox/system_server_wtf@1571088087481.txt
+64772 9405 -1 /data/system/dropbox/system_server_wtf@1571089554709.txt
+64772 9473 -1 /data/system/dropbox/system_server_wtf@1571089605544.txt
+64772 7163 -1 /data/system/dropbox/system_server_wtf@1571089634535.txt
+64772 9522 -1 /data/system/dropbox/system_server_wtf@1571089674366.txt
+64772 1441 -1 /data/system/dropbox/system_server_wtf@1571089791187.txt
+64772 1401 -1 /data/system/dropbox/system_server_wtf@1571089802118.txt
+64772 4729 -1 /data/system/dropbox/system_server_wtf@1571089829463.txt
+64772 3392 -1 /data/system/dropbox/system_server_wtf@1571091424830.txt
+64772 3453 -1 /data/system/dropbox/system_server_wtf@1571091477133.txt
+64772 3683 -1 /data/system/dropbox/system_server_wtf@1571091898475.txt
+64772 3706 -1 /data/system/dropbox/system_server_wtf@1571091916572.txt
+64772 3719 -1 /data/system/dropbox/system_server_wtf@1571092134465.txt
+64772 6717 -1 /data/system/dropbox/event_data@1571096097687.txt
+64772 7160 -1 /data/system/dropbox/event_data@1571104615630.txt
+64772 7255 -1 /data/system/dropbox/system_server_strictmode@1571108215262.txt
+64772 8150 -1 /data/system/dropbox/system_server_strictmode@1571119110273.txt
+64772 8135 -1 /data/system/dropbox/event_data@1571119110809.txt
+64772 8547 -1 /data/system/dropbox/event_data@1571122712618.txt
+64772 8591 -1 /data/system/dropbox/event_data@1571124512668.txt
+64772 9168 -1 /data/system/dropbox/system_server_strictmode@1571129913304.txt
+64772 9176 -1 /data/system/dropbox/system_server_strictmode@1571129913310.txt
+64772 9322 -1 /data/system/dropbox/event_data@1571133516409.txt
+64772 1464 -1 /data/system/dropbox/event_data@1571137348227.txt
+64772 6541 -1 /data/system/dropbox/event_data@1571140948312.txt
+64772 3769 -1 /data/system/dropbox/event_data@1571146350196.txt
+64772 6616 -1 /data/system/dropbox/system_server_strictmode@1571151750809.txt
+64772 6674 -1 /data/system/dropbox/system_server_strictmode@1571151750810.txt
+64772 7124 -1 /data/system/dropbox/system_server_strictmode@1571162556728.txt
+64772 7185 -1 /data/system/dropbox/event_data@1571162557266.txt
+64772 7090 -1 /data/system/dropbox/event_data@1571169760163.txt
+64772 9337 -1 /data/system/dropbox/event_data@1571181095013.txt
+64772 4704 -1 /data/system/dropbox/system_server_strictmode@1571184694855.txt
+64772 6602 -1 /data/system/dropbox/event_data@1571195589472.txt
+64772 7967 -1 /data/system/dropbox/event_data@1571197389738.txt
+64772 6590 -1 /data/system/dropbox/event_data@1571199189995.txt
+64772 6380 -1 /data/system/dropbox/event_data@1571202790670.txt
+64772 6981 -1 /data/system/dropbox/system_server_strictmode@1571207434853.txt
+64772 7219 -1 /data/system/dropbox/system_server_strictmode@1571207434854.txt
+64772 7279 -1 /data/system/dropbox/event_data@1571209991766.txt
+64772 4801 -1 /data/system/dropbox/system_server_strictmode@1571218533817.txt
+64772 8068 -1 /data/system/dropbox/event_data@1571229790939.txt
+64772 9202 -1 /data/system/dropbox/event_data@1571231591088.txt
+64772 6498 -1 /data/system/dropbox/event_data@1571233391387.txt
+64772 9555 -1 /data/system/dropbox/event_data@1571236992121.txt
+64772 2766 -1 /data/system/dropbox/system_server_strictmode@1571240592388.txt
+64772 9988 -1 /data/system/dropbox/event_data@1571247793466.txt
+64772 6722 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571251360819.txt.gz
+64772 6864 -1 /data/system/dropbox/system_server_strictmode@1571251393735.txt
+64772 9689 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571254412205.txt.gz
+64772 6804 -1 /data/system/dropbox/event_data@1571254994301.txt
+64772 7414 -1 /data/system/dropbox/system_server_wtf@1571086584472.txt
+64772 7448 -1 /data/system/dropbox/system_server_wtf@1571086617079.txt
+64772 7478 -1 /data/system/dropbox/system_server_wtf@1571086634357.txt
+64772 7591 -1 /data/system/dropbox/system_server_wtf@1571086645055.txt
+64772 7575 -1 /data/system/dropbox/system_server_wtf@1571086659355.txt
+64772 7335 -1 /data/system/dropbox/system_server_wtf@1571086673625.txt
+64772 8188 -1 /data/system/dropbox/system_server_wtf@1571086997503.txt
+64772 8438 -1 /data/system/dropbox/system_server_wtf@1571087031898.txt
+64772 8469 -1 /data/system/dropbox/system_server_wtf@1571087078106.txt
+64772 8424 -1 /data/system/dropbox/system_server_wtf@1571087085978.txt
+64772 8508 -1 /data/system/dropbox/system_server_wtf@1571087096683.txt
+64772 8448 -1 /data/system/dropbox/system_server_wtf@1571087159700.txt
+64772 4841 -1 /data/system/dropbox/system_server_wtf@1571087261025.txt
+64772 8613 -1 /data/system/dropbox/system_server_wtf@1571087286428.txt
+64772 8652 -1 /data/system/dropbox/system_server_wtf@1571087299932.txt
+64772 8636 -1 /data/system/dropbox/system_server_wtf@1571087327877.txt
+64772 4879 -1 /data/system/dropbox/system_server_wtf@1571087364140.txt
+64772 4872 -1 /data/system/dropbox/system_server_wtf@1571087624227.txt
+64772 9119 -1 /data/system/dropbox/system_server_wtf@1571087689332.txt
+64772 9075 -1 /data/system/dropbox/system_server_wtf@1571087725239.txt
+64772 4788 -1 /data/system/dropbox/system_server_wtf@1571087739183.txt
+64772 9135 -1 /data/system/dropbox/system_server_wtf@1571087815223.txt
+64772 9182 -1 /data/system/dropbox/system_server_wtf@1571087826088.txt
+64772 9085 -1 /data/system/dropbox/system_server_wtf@1571087856212.txt
+64772 9191 -1 /data/system/dropbox/system_server_wtf@1571087983186.txt
+64772 9089 -1 /data/system/dropbox/system_server_wtf@1571087994009.txt
+64772 9263 -1 /data/system/dropbox/system_server_wtf@1571088017086.txt
+64772 9205 -1 /data/system/dropbox/system_server_wtf@1571088113849.txt
+64772 9349 -1 /data/system/dropbox/system_server_wtf@1571088154984.txt
+64772 9442 -1 /data/system/dropbox/system_server_wtf@1571089569304.txt
+64772 9517 -1 /data/system/dropbox/system_server_wtf@1571089616346.txt
+64772 7216 -1 /data/system/dropbox/system_server_wtf@1571089620064.txt
+64772 7217 -1 /data/system/dropbox/system_server_wtf@1571089645383.txt
+64772 7169 -1 /data/system/dropbox/system_server_wtf@1571089649041.txt
+64772 9486 -1 /data/system/dropbox/system_server_wtf@1571089677981.txt
+64772 9534 -1 /data/system/dropbox/system_server_wtf@1571089688831.txt
+64772 4826 -1 /data/system/dropbox/system_server_wtf@1571089809942.txt
+64772 3334 -1 /data/system/dropbox/system_server_wtf@1571091413920.txt
+64772 3465 -1 /data/system/dropbox/system_server_wtf@1571091532033.txt
+64772 3697 -1 /data/system/dropbox/system_server_wtf@1571091905603.txt
+64772 6698 -1 /data/system/dropbox/system_server_strictmode@1571097252738.txt
+64772 7093 -1 /data/system/dropbox/system_server_strictmode@1571108215263.txt
+64772 7071 -1 /data/system/dropbox/system_server_strictmode@1571108215264.txt
+64772 7262 -1 /data/system/dropbox/event_data@1571108215785.txt
+64772 8154 -1 /data/system/dropbox/system_server_strictmode@1571119110271.txt
+64772 8145 -1 /data/system/dropbox/system_server_strictmode@1571119110274.txt
+64772 8162 -1 /data/system/dropbox/system_server_strictmode@1571119110275.txt
+64772 8869 -1 /data/system/dropbox/event_data@1571128113667.txt
+64772 8716 -1 /data/system/dropbox/system_server_strictmode@1571140947616.txt
+64772 9362 -1 /data/system/dropbox/event_data@1571142748246.txt
+64772 9730 -1 /data/system/dropbox/event_data@1571148153215.txt
+64772 3763 -1 /data/system/dropbox/event_data@1571149951606.txt
+64772 6976 -1 /data/system/dropbox/event_data@1571158957164.txt
+64772 7254 -1 /data/system/dropbox/system_server_strictmode@1571162556725.txt
+64772 8291 -1 /data/system/dropbox/system_server_strictmode@1571173359831.txt
+64772 4735 -1 /data/system/dropbox/event_data@1571175814108.txt
+64772 9454 -1 /data/system/dropbox/system_server_strictmode@1571184694848.txt
+64772 6577 -1 /data/system/dropbox/event_data@1571186614879.txt
+64772 9703 -1 /data/system/dropbox/system_server_strictmode@1571196154847.txt
+64772 3717 -1 /data/system/dropbox/system_server_strictmode@1571196154851.txt
+64772 3718 -1 /data/system/dropbox/system_server_strictmode@1571196154852.txt
+64772 9479 -1 /data/system/dropbox/event_data@1571204590951.txt
+64772 5773 -1 /data/system/dropbox/system_server_strictmode@1571207434851.txt
+64772 7081 -1 /data/system/dropbox/event_data@1571216709961.txt
+64772 7086 -1 /data/system/dropbox/event_data@1571220789386.txt
+64772 7533 -1 /data/system/dropbox/event_data@1571222589794.txt
+64772 9071 -1 /data/system/dropbox/system_server_strictmode@1571229514857.txt
+64772 6604 -1 /data/system/dropbox/system_server_strictmode@1571229514860.txt
+64772 9368 -1 /data/system/dropbox/event_data@1571235191844.txt
+64772 7359 -1 /data/system/dropbox/system_server_strictmode@1571240592385.txt
+64772 4790 -1 /data/system/dropbox/system_server_strictmode@1571240592387.txt
+64772 3681 -1 /data/system/dropbox/event_data@1571245993210.txt
+64772 3728 -1 /data/system/dropbox/event_data@1571249593572.txt
+64772 3586 -1 /data/system/dropbox/system_server_strictmode@1571251393736.txt
+64772 9471 -1 /data/system/dropbox/system_server_strictmode@1571251393737.txt
+64772 9503 -1 /data/system/dropbox/event_data@1571251393886.txt
+64772 6762 -1 /data/system/dropbox/event_data@1571253193954.txt
+64772 7386 -1 /data/system/dropbox/system_server_strictmode@1571263672058.txt
+64772 5535 -1 /data/system/dropbox/system_server_strictmode@1571263672060.txt
+64772 3667 -1 /data/system/dropbox/system_server_strictmode@1571263672062.txt
+64772 7630 -1 /data/system/dropbox/event_data@1571264632465.txt
+64772 7545 -1 /data/system/dropbox/system_server_wtf@1571086598729.txt
+64772 6940 -1 /data/system/dropbox/system_server_wtf@1571086613487.txt
+64772 7583 -1 /data/system/dropbox/system_server_wtf@1571086648597.txt
+64772 6075 -1 /data/system/dropbox/system_server_wtf@1571086770076.txt
+64772 7942 -1 /data/system/dropbox/system_server_wtf@1571087017478.txt
+64772 8435 -1 /data/system/dropbox/system_server_wtf@1571087028266.txt
+64772 8446 -1 /data/system/dropbox/system_server_wtf@1571087042579.txt
+64772 8451 -1 /data/system/dropbox/system_server_wtf@1571087061386.txt
+64772 8288 -1 /data/system/dropbox/system_server_wtf@1571087067418.txt
+64772 8511 -1 /data/system/dropbox/system_server_wtf@1571087101259.txt
+64772 8518 -1 /data/system/dropbox/system_server_wtf@1571087111969.txt
+64772 8514 -1 /data/system/dropbox/system_server_wtf@1571087132685.txt
+64772 8532 -1 /data/system/dropbox/system_server_wtf@1571087143414.txt
+64772 8592 -1 /data/system/dropbox/system_server_wtf@1571087197048.txt
+64772 8118 -1 /data/system/dropbox/system_server_wtf@1571087207778.txt
+64772 1454 -1 /data/system/dropbox/system_server_wtf@1571087224694.txt
+64772 8500 -1 /data/system/dropbox/system_server_wtf@1571087250280.txt
+64772 8098 -1 /data/system/dropbox/system_server_wtf@1571087353373.txt
+64772 8982 -1 /data/system/dropbox/system_server_wtf@1571087402815.txt
+64772 9026 -1 /data/system/dropbox/system_server_wtf@1571087413576.txt
+64772 1367 -1 /data/system/dropbox/system_server_wtf@1571087613392.txt
+64772 8955 -1 /data/system/dropbox/system_server_wtf@1571087642050.txt
+64772 9065 -1 /data/system/dropbox/system_server_wtf@1571087700118.txt
+64772 9125 -1 /data/system/dropbox/system_server_wtf@1571087714382.txt
+64772 9103 -1 /data/system/dropbox/system_server_wtf@1571087764295.txt
+64772 9129 -1 /data/system/dropbox/system_server_wtf@1571087852221.txt
+64772 9078 -1 /data/system/dropbox/system_server_wtf@1571087873657.txt
+64772 9114 -1 /data/system/dropbox/system_server_wtf@1571088067794.txt
+64772 7231 -1 /data/system/dropbox/system_server_wtf@1571088129849.txt
+64772 9453 -1 /data/system/dropbox/system_server_wtf@1571089538151.txt
+64772 9399 -1 /data/system/dropbox/system_server_wtf@1571089549052.txt
+64772 9436 -1 /data/system/dropbox/system_server_wtf@1571089580115.txt
+64772 9434 -1 /data/system/dropbox/system_server_wtf@1571089596911.txt
+64772 7197 -1 /data/system/dropbox/system_server_wtf@1571089659850.txt
+64772 4711 -1 /data/system/dropbox/system_server_wtf@1571089820865.txt
+64772 4740 -1 /data/system/dropbox/system_server_wtf@1571089840398.txt
+64772 3646 -1 /data/system/dropbox/system_server_wtf@1571091886986.txt
+64772 3732 -1 /data/system/dropbox/system_server_wtf@1571092145971.txt
+64772 3700 -1 /data/system/dropbox/event_data@1571093526538.txt
+64772 5666 -1 /data/system/dropbox/system_server_strictmode@1571097252734.txt
+64772 7003 -1 /data/system/dropbox/event_data@1571102814739.txt
+64772 2490 -1 /data/system/dropbox/event_data@1571106415690.txt
+64772 7200 -1 /data/system/dropbox/system_server_strictmode@1571108215261.txt
+64772 7613 -1 /data/system/dropbox/event_data@1571113617817.txt
+64772 4702 -1 /data/system/dropbox/event_data@1571115510700.txt
+64772 1413 -1 /data/system/dropbox/event_data@1571117310651.txt
+64772 8824 -1 /data/system/dropbox/event_data@1571126313658.txt
+64772 9133 -1 /data/system/dropbox/system_server_strictmode@1571129913306.txt
+64772 9136 -1 /data/system/dropbox/system_server_strictmode@1571129913308.txt
+64772 9151 -1 /data/system/dropbox/event_data@1571129914069.txt
+64772 9392 -1 /data/system/dropbox/event_data@1571135547381.txt
+64772 9549 -1 /data/system/dropbox/event_data@1571139147976.txt
+64772 2698 -1 /data/system/dropbox/system_server_strictmode@1571140947618.txt
+64772 2701 -1 /data/system/dropbox/system_server_strictmode@1571140947619.txt
+64772 2721 -1 /data/system/dropbox/system_server_strictmode@1571140947620.txt
+64772 6549 -1 /data/system/dropbox/event_data@1571157156070.txt
+64772 7116 -1 /data/system/dropbox/event_data@1571160757091.txt
+64772 6998 -1 /data/system/dropbox/system_server_strictmode@1571162556726.txt
+64772 7314 -1 /data/system/dropbox/event_data@1571164357189.txt
+64772 7440 -1 /data/system/dropbox/event_data@1571166159168.txt
+64772 7465 -1 /data/system/dropbox/event_data@1571167959144.txt
+64772 8449 -1 /data/system/dropbox/system_server_strictmode@1571173359823.txt
+64772 8295 -1 /data/system/dropbox/system_server_strictmode@1571173359826.txt
+64772 8218 -1 /data/system/dropbox/system_server_strictmode@1571173359829.txt
+64772 8507 -1 /data/system/dropbox/event_data@1571173360822.txt
+64772 9286 -1 /data/system/dropbox/event_data@1571183014901.txt
+64772 9319 -1 /data/system/dropbox/event_data@1571184814773.txt
+64772 9704 -1 /data/system/dropbox/system_server_strictmode@1571196154849.txt
+64772 6873 -1 /data/system/dropbox/event_data@1571200990268.txt
+64772 5670 -1 /data/system/dropbox/event_data@1571206391211.txt
+64772 6995 -1 /data/system/dropbox/system_server_strictmode@1571207434855.txt
+64772 6987 -1 /data/system/dropbox/event_data@1571208191492.txt
+64772 1373 -1 /data/system/dropbox/system_server_strictmode@1571218533810.txt
+64772 1453 -1 /data/system/dropbox/system_server_strictmode@1571218533812.txt
+64772 6048 -1 /data/system/dropbox/event_data@1571226190461.txt
+64772 9446 -1 /data/system/dropbox/event_data@1571238792173.txt
+64772 3676 -1 /data/system/dropbox/event_data@1571244192935.txt
+64772 7269 -1 /data/system/dropbox/event_data@1571256794395.txt
+64772 7317 -1 /data/system/dropbox/system_server_strictmode@1571259562758.txt
+64772 7055 -1 /data/system/dropbox/event_data@1571260924042.txt
+64772 7444 -1 /data/system/dropbox/event_data@1571262831290.txt
+64772 5345 -1 /data/system/dropbox/system_server_wtf@1571086662849.txt
+64772 8544 -1 /data/system/dropbox/event_data@1571087216316.txt
+64772 8599 -1 /data/system/dropbox/system_server_wtf@1571087235411.txt
+64772 1336 -1 /data/system/dropbox/system_server_wtf@1571087275724.txt
+64772 8683 -1 /data/system/dropbox/system_server_wtf@1571087310649.txt
+64772 4855 -1 /data/system/dropbox/system_server_wtf@1571087338629.txt
+64772 8781 -1 /data/system/dropbox/system_server_wtf@1571087378145.txt
+64772 9605 -1 /data/system/dropbox/system_server_wtf@1571087789863.txt
+64772 9138 -1 /data/system/dropbox/system_server_wtf@1571087841350.txt
+64772 9149 -1 /data/system/dropbox/system_server_wtf@1571087884503.txt
+64772 9228 -1 /data/system/dropbox/system_server_wtf@1571087958946.txt
+64772 9203 -1 /data/system/dropbox/system_server_wtf@1571087969724.txt
+64772 9258 -1 /data/system/dropbox/system_server_wtf@1571088006295.txt
+64772 9249 -1 /data/system/dropbox/system_server_wtf@1571088030686.txt
+64772 9287 -1 /data/system/dropbox/system_server_wtf@1571088102983.txt
+64772 9237 -1 /data/system/dropbox/system_server_wtf@1571088140769.txt
+64772 9271 -1 /data/system/dropbox/system_server_wtf@1571088165904.txt
+64772 9367 -1 /data/system/dropbox/event_data@1571089413629.txt
+64772 4138 -1 /data/system/dropbox/system_server_wtf@1571089565531.txt
+64772 9424 -1 /data/system/dropbox/system_server_wtf@1571089586108.txt
+64772 9526 -1 /data/system/dropbox/system_server_wtf@1571089630898.txt
+64772 6373 -1 /data/system/dropbox/system_server_wtf@1571089663484.txt
+64772 6569 -1 /data/system/dropbox/system_server_wtf@1571089774266.txt
+64772 1368 -1 /data/system/dropbox/system_server_wtf@1571089785157.txt
+64772 3012 -1 /data/system/dropbox/event_data@1571091214118.txt
+64772 3401 -1 /data/system/dropbox/system_server_wtf@1571091466186.txt
+64772 6700 -1 /data/system/dropbox/system_server_strictmode@1571097252736.txt
+64772 6699 -1 /data/system/dropbox/system_server_strictmode@1571097252739.txt
+64772 6872 -1 /data/system/dropbox/event_data@1571099182589.txt
+64772 6527 -1 /data/system/dropbox/event_data@1571101014620.txt
+64772 6742 -1 /data/system/dropbox/event_data@1571110015778.txt
+64772 7459 -1 /data/system/dropbox/event_data@1571111817635.txt
+64772 8225 -1 /data/system/dropbox/event_data@1571120910756.txt
+64772 9297 -1 /data/system/dropbox/event_data@1571131714134.txt
+64772 3610 -1 /data/system/dropbox/event_data@1571144550195.txt
+64772 9948 -1 /data/system/dropbox/system_server_strictmode@1571151750807.txt
+64772 6659 -1 /data/system/dropbox/system_server_strictmode@1571151750808.txt
+64772 6688 -1 /data/system/dropbox/event_data@1571151751953.txt
+64772 5859 -1 /data/system/dropbox/event_data@1571153551402.txt
+64772 2152 -1 /data/system/dropbox/event_data@1571155356029.txt
+64772 4937 -1 /data/system/dropbox/system_server_strictmode@1571162556724.txt
+64772 7246 -1 /data/system/dropbox/event_data@1571171560409.txt
+64772 8771 -1 /data/system/dropbox/event_data@1571177614621.txt
+64772 9041 -1 /data/system/dropbox/event_data@1571179414739.txt
+64772 2878 -1 /data/system/dropbox/event_data@1571188900019.txt
+64772 1461 -1 /data/system/dropbox/system_server_strictmode@1571184694852.txt
+64772 4720 -1 /data/system/dropbox/system_server_strictmode@1571184694853.txt
+64772 3631 -1 /data/system/dropbox/event_data@1571191013666.txt
+64772 2778 -1 /data/system/dropbox/event_data@1571193789240.txt
+64772 7272 -1 /data/system/dropbox/event_data@1571211792041.txt
+64772 7328 -1 /data/system/dropbox/event_data@1571214100014.txt
+64772 5537 -1 /data/system/dropbox/system_server_strictmode@1571218533814.txt
+64772 4823 -1 /data/system/dropbox/event_data@1571218989346.txt
+64772 8431 -1 /data/system/dropbox/event_data@1571224390216.txt
+64772 9082 -1 /data/system/dropbox/event_data@1571227990600.txt
+64772 8879 -1 /data/system/dropbox/system_server_strictmode@1571229514854.txt
+64772 9063 -1 /data/system/dropbox/system_server_strictmode@1571229514858.txt
+64772 3500 -1 /data/system/dropbox/system_server_strictmode@1571240592382.txt
+64772 2767 -1 /data/system/dropbox/event_data@1571240592529.txt
+64772 2804 -1 /data/system/dropbox/event_data@1571242392598.txt
+64772 7030 -1 /data/system/dropbox/system_server_strictmode@1571251393733.txt
+64772 6713 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571251525154.txt.gz
+64772 1763 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571254617971.txt.gz
+64772 7370 -1 /data/system/dropbox/event_data@1571259122236.txt
+64772 7332 -1 /data/system/dropbox/system_server_strictmode@1571262829291.txt
+64772 5523 -1 /data/system/dropbox/system_server_strictmode@1571263672061.txt
+64772 99 -1 /data/system/heapdump
+64772 100 -1 /data/system/users
+64772 132 -1 /data/system/users/0
+64772 3739 -1 /data/system/users/0/package-restrictions.xml
+64772 9998 -1 /data/system/users/0/runtime-permissions.xml
+64772 4150 -1 /data/system/users/0/settings_system.xml
+64772 7633 -1 /data/system/users/0/settings_secure.xml
+64772 7313 -1 /data/system/users/0/settings_global.xml
+64772 7898 -1 /data/system/users/0/app_idle_stats.xml
+64772 2186 -1 /data/system/users/0/wallpaper_info.xml
+64772 8061 -1 /data/system/users/0/roles.xml
+64772 6500 -1 /data/system/users/0/appwidgets.xml
+64772 4906 -1 /data/system/users/0/registered_services
+64772 4907 -1 /data/system/users/0/registered_services/android.accounts.AccountAuthenticator.xml
+64772 5974 -1 /data/system/users/0/registered_services/android.content.SyncAdapter.xml
+64772 9088 -1 /data/system/users/0/settings_ssaid.xml
+64772 1530 -1 /data/system/users/0.xml
+64772 1334 -1 /data/system/users/userlist.xml
+64772 1323 -1 /data/system/battery-history
+64772 6600 -1 /data/system/battery-history/0.bin
+64772 1324 -1 /data/system/procstats
+64772 9614 -1 /data/system/procstats/state-2019-10-16-06-30-34.bin
+64772 6594 -1 /data/system/procstats/state-2019-10-16-09-35-33.bin
+64772 2676 -1 /data/system/procstats/state-2019-10-16-12-38-34.bin
+64772 9469 -1 /data/system/procstats/state-2019-10-16-15-43-12.bin
+64772 7228 -1 /data/system/procstats/state-2019-10-16-18-43-13.bin
+64772 1405 -1 /data/system/procstats/state-2019-10-15-21-02-39.bin
+64772 3722 -1 /data/system/procstats/state-2019-10-16-00-11-34.bin
+64772 6996 -1 /data/system/procstats/state-2019-10-16-03-22-34.bin
+64772 8116 -1 /data/system/batterystats.bin
+64772 1327 -1 /data/system/ifw
+64772 7525 -1 /data/system/display-manager-state.xml
+64772 1335 -1 /data/system/uiderrors.txt
+64772 1491 -1 /data/system/package_cache
+64772 9733 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b
+64772 9734 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutEmulationTall-16
+64772 9735 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularSettings-16
+64772 9686 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarMode3Button-16
+64772 9687 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularAndroid-16
+64772 9706 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedSettings-16
+64772 9707 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SystemUIGoogle__auto_generated_rro_product.apk-16
+64772 9708 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BuiltInPrintService__auto_generated_rro_product.apk-16
+64772 9709 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorGreen-16
+64772 9710 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularPixelThemePicker-16
+64772 9711 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorSpace-16
+64772 9720 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconShapeSquircle-16
+64772 9721 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ChinaMobileFrameworksRes-16
+64772 9719 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularSystemUI-16
+64772 9694 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedSystemUI-16
+64772 9567 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutNoCutout-16
+64772 9588 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGesturalNarrowBack-16
+64772 9587 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconShapeTeardrop-16
+64772 9751 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedAndroid-16
+64772 9752 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorPurple-16
+64772 9693 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Telecom__auto_generated_rro_product.apk-16
+64772 9696 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledAndroid-16
+64772 9757 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TeleService__auto_generated_rro_product.apk-16
+64772 9756 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorCinnamon-16
+64772 9758 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutEmulationDouble-16
+64772 9759 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NfcNci__auto_generated_rro_product.apk-16
+64772 9699 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SafetyRegulatoryInfo__auto_generated_rro_product.apk-16
+64772 9761 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TelephonyProvider__auto_generated_rro_product.apk-16
+64772 9762 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorOcean-16
+64772 9763 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SimAppDialog__auto_generated_rro_product.apk-16
+64772 9764 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorOrchid-16
+64772 9765 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedPixelThemePicker-16
+64772 9766 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FontArbutusSource-16
+64772 9767 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledSettings-16
+64772 9768 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePermissionControllerOverlay.apk-16
+64772 9769 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutEmulationCorner-16
+64772 9770 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledPixelThemePicker-16
+64772 9716 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedPixelLauncher-16
+64772 9772 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelConfigOverlayCommon.apk-16
+64772 9773 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelDocumentsUIGoogleOverlay-16
+64772 9745 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularPixelLauncher-16
+64772 9746 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleWebViewOverlay.apk-16
+64772 9744 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelConfigOverlay2018.apk-16
+64772 9677 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarMode2Button-16
+64772 9777 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledSystemUI-16
+64772 9778 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ContactsProvider__auto_generated_rro_product.apk-16
+64772 9678 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorBlack-16
+64772 9780 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleConfigOverlay.apk-16
+64772 9781 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGesturalWideBack-16
+64772 9640 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FontRubikRubik-16
+64772 9642 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGesturalExtraWideBack-16
+64772 9643 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsProvider__auto_generated_rro_product.apk-16
+64772 9779 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGestural-16
+64772 9782 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledPixelLauncher-16
+64772 9788 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FontArvoLato-16
+64772 9789 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/framework-res__auto_generated_rro_product.apk-16
+64772 9790 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconShapeRoundedRect-16
+64772 9791 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/framework-res__auto_generated_rro_vendor.apk-16
+64772 9738 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NfcNci__auto_generated_rro_vendor.apk-16
+64772 9739 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SystemUIGoogle__auto_generated_rro_vendor.apk-16
+64772 9740 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TeleService__auto_generated_rro_vendor.apk-16
+64772 9741 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Bluetooth__auto_generated_rro_vendor.apk-16
+64772 9742 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/framework-res.apk-16
+64772 9743 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ONS-16
+64772 9798 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SharedStorageBackup-16
+64772 9799 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NetworkPermissionConfig-16
+64772 9800 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/UserDictionaryProvider-16
+64772 9801 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CalendarProvider-16
+64772 9802 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/qcrilmsgtunnel-16
+64772 9803 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TelephonyProvider-16
+64772 9805 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DownloadProvider-16
+64772 9806 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DocumentsUIGoogle-16
+64772 9807 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/StatementService-16
+64772 9808 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CtsShimPrivPrebuilt-16
+64772 9810 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BlockedNumberProvider-16
+64772 9736 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DownloadProviderUi-16
+64772 9737 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ContactsProvider-16
+64772 9775 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VpnDialogs-16
+64772 9776 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Shell-16
+64772 9774 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TimeZoneUpdater-16
+64772 7194 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BackupRestoreConfirmation-16
+64772 9816 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ExternalStorageProvider-16
+64772 9817 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MediaProvider-16
+64772 9755 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CNEService-16
+64772 9823 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DynamicSystemInstallationService-16
+64772 9822 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Telecom-16
+64772 9824 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ManagedProvisioning-16
+64772 9825 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MmsService-16
+64772 9760 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/InputDevices-16
+64772 9827 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CallLogBackup-16
+64772 9828 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BackupEncryption-16
+64772 9830 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsProvider-16
+64772 9831 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WifiStackPermissionConfig-16
+64772 9832 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FusedLocation-16
+64772 9792 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ProxyHandler-16
+64772 9793 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CellBroadcastAppPlatform-16
+64772 9794 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LocalTransport-16
+64772 9795 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MtpService-16
+64772 9796 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePackageInstaller-16
+64772 9797 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TagGoogle-16
+64772 9839 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MusicFX-16
+64772 9840 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleExtServices-16
+64772 9841 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NetworkStack-16
+64772 9844 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SoundPicker-16
+64772 9771 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WifiStack-16
+64772 9814 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TeleService-16
+64772 9813 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePermissionController-16
+64772 9849 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePrintRecommendationService-16
+64772 9850 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/vzw_msdc_api-16
+64772 9851 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/RcsService-16
+64772 9852 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OsuLogin-16
+64772 9853 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LiveWallpapersPicker-16
+64772 9854 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CtsShimPrebuilt-16
+64772 9855 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierDefaultApp-16
+64772 9857 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PresencePolling-16
+64772 9859 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrintSpooler-16
+64772 9860 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Bluetooth-16
+64772 9862 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SafetyRegulatoryInfo-16
+64772 9811 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HTMLViewer-16
+64772 9848 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/embms-16
+64772 9846 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/radioconfig-16
+64772 7024 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CertInstaller-16
+64772 7579 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CompanionDeviceManager-16
+64772 9786 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QTIDiagServices-16
+64772 9748 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PacProcessor-16
+64772 9804 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/uimremoteserver-16
+64772 9787 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EasterEgg-16
+64772 9877 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SimAppDialog-16
+64772 9818 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QAS_DVC_MSP_VZW-16
+64772 9820 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BuiltInPrintService-16
+64772 9891 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/atfwd-16
+64772 9826 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/uimremoteclient-16
+64772 9894 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BasicDreams-16
+64772 9896 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WallpaperBackup-16
+64772 9881 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/crosshatch_game_driver-16
+64772 9904 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DreamlinerUpdater-16
+64772 9906 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleServicesFramework-16
+64772 9908 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierSetup-16
+64772 9909 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsIntelligenceGooglePrebuilt-16
+64772 9910 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AmbientSensePrebuilt-16
+64772 9873 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConnMO-16
+64772 9871 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DCMO-16
+64772 9916 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleANGLE-16
+64772 9917 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TetheringEntitlement-16
+64772 9918 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DMService-16
+64772 9865 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OemDmTrigger-16
+64772 9870 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltGmsCore-16
+64772 9928 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NexusLauncherRelease-16
+64772 9929 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TipsPrebuilt-16
+64772 9930 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GmsCoreSetupPrebuilt-16
+64772 9932 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierSettings-16
+64772 9934 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SprintDM-16
+64772 9864 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierServices-16
+64772 9941 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WellbeingPrebuilt-16
+64772 9944 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AndroidAutoFullPrebuilt-16
+64772 9892 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleCBRS-16
+64772 9952 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/RilConfigService-16
+64772 9953 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SprintHM-16
+64772 9954 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HardwareInfo-16
+64772 9955 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleFeedback-16
+64772 9956 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TurboPrebuilt-16
+64772 9957 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsGoogle-16
+64772 9920 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelSetupWizard-16
+64772 9923 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConnMetrics-16
+64772 9967 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DreamlinerPrebuilt-16
+64772 9939 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SetupWizardPrebuilt-16
+64772 9973 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SystemUIGoogle-16
+64772 9915 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaWebPluginBoot-16
+64772 9977 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelLogger-16
+64772 9978 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaClient-16
+64772 9979 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SoundAmplifierPrebuilt-16
+64772 9982 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleVrCore-16
+64772 9983 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Drive-16
+64772 9984 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SoundPickerPrebuilt-16
+64772 9986 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DiagnosticsToolPrebuilt-16
+64772 9987 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MarkupGoogle-16
+64772 9937 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SSRestartDetector-16
+64772 9958 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleTTS-16
+64772 9961 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/YouTube-16
+64772 9963 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VZWAPNLib-16
+64772 9972 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/xdivert-16
+64772 9970 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/talkback-16
+64772 2593 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NexusWallpapersStubPrebuilt2018-16
+64772 2183 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/RamdumpUploader-16
+64772 9902 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CalculatorGooglePrebuilt-16
+64772 9875 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LocationHistoryPrebuilt-16
+64772 9999 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/com.qualcomm.qti.services.secureui-16
+64772 10002 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaSettingApp-16
+64772 10004 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ModuleMetadataGoogle-16
+64772 6562 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EmergencyInfoGoogleNoUi-16
+64772 4139 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaMenuApp-16
+64772 2003 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Chrome-16
+64772 6031 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LatinIMEGooglePrebuilt-16
+64772 9858 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/datastatusnotification-16
+64772 9812 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Stk-16
+64772 9835 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PartnerBookmarksProvider-16
+64772 9836 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BookmarkProvider-16
+64772 9837 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QAS_DVC_MSP-16
+64772 9838 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NfcNci-16
+64772 9847 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConferenceDialer-16
+64772 7561 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/KeyChain-16
+64772 9749 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Traceur-16
+64772 9882 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/uceShimService-16
+64772 9883 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CaptivePortalLogin-16
+64772 9890 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SecureElement-16
+64772 9893 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QtiTelephonyService-16
+64772 9895 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleExtShared-16
+64772 9880 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ims-16
+64772 9897 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BluetoothMidiService-16
+64772 9898 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TimeService-16
+64772 9900 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Showcase-16
+64772 9899 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AppDirectedSMSService-16
+64772 9901 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OTAConfigPrebuilt-16
+64772 9905 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OBDM_Permissions-16
+64772 9907 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HotwordEnrollmentOKGoogleWCD9340-16
+64772 9911 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ScribePrebuilt-16
+64772 9872 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SafetyHubPrebuilt-16
+64772 9845 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConfigUpdater-16
+64772 9919 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TMobilePlanProvider-16
+64772 9866 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EuiccGoogle-16
+64772 9867 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VzwOmaTrigger-16
+64772 9868 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleOneTimeInitializer-16
+64772 9869 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Volta-16
+64772 9926 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/obdm_stub-16
+64772 9927 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleDialer-16
+64772 9931 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WfcActivation-16
+64772 9933 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EuiccSupportPixel-16
+64772 9935 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MatchmakerPrebuiltPixel3-16
+64772 9863 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/grilservice-16
+64772 9913 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePartnerSetup-16
+64772 9914 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Phonesky-16
+64772 9912 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BetterBug-16
+64772 9942 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TmobileGrsuPrebuilt-16
+64772 9943 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AndroidMigratePrebuilt-16
+64772 9884 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MaestroPrebuilt-16
+64772 9783 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WallpaperPickerGoogleRelease-16
+64772 9784 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ModemDiagnosticSystemPermissions-16
+64772 9785 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConnectivityMonitor-16
+64772 9886 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GCS-16
+64772 9921 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SCONE-16
+64772 9922 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DiagMon-16
+64772 9924 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HelpRtcPrebuilt-16
+64772 9925 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LLKAgent-16
+64772 9964 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MyVerizonServices-16
+64772 9965 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VendorLoggingService-16
+64772 9966 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/StorageManagerGoogle-16
+64772 9968 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ModemDiagnosticSystem-16
+64772 9969 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HotwordEnrollmentXGoogleWCD9340-16
+64772 9974 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Velvet-16
+64772 9976 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WebViewGoogle-16
+64772 9980 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltDeskClockGoogle-16
+64772 9981 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Tycho-16
+64772 9985 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleContacts-16
+64772 9936 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/arcore-16
+64772 9959 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DMAgent-16
+64772 9960 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CalendarGooglePrebuilt-16
+64772 9962 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelThemesStub2018-16
+64772 9971 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltGmail-16
+64772 2181 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaWebPlugin-16
+64772 10001 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NetGrapher-16
+64772 9903 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PlayAutoInstallConfig-16
+64772 10003 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Photos-16
+64772 9878 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleCamera-16
+64772 9879 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Videos-16
+64772 10009 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltBugle-16
+64772 9951 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaMenuMainApp-16
+64772 9945 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Ornament-16
+64772 6563 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TrichromeLibrary-16
+64772 6561 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Maps-16
+64772 6559 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Music2-16
+64772 6558 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WallpapersBReel2018-16
+64772 5028 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierMetrics-16
+64772 1925 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleContactsSyncAdapter-16
+64772 5053 -1 /data/system/packages.xml
+64772 1526 -1 /data/system/packages.list
+64772 1823 -1 /data/system/install_sessions
+64772 9946 -1 /data/system/overlays.xml
+64772 2641 -1 /data/system/sensor_service
+64772 2642 -1 /data/system/sensor_service/hmac_key
+64772 7947 -1 /data/system/screen_on_time
+64772 2644 -1 /data/system/entropy.dat
+64772 2658 -1 /data/system/watchlist_settings.xml
+64772 2659 -1 /data/system/watchlist_report.db
+64772 2660 -1 /data/system/watchlist_report.db-journal
+64772 2661 -1 /data/system/last-fstrim
+64772 2668 -1 /data/system/recoverablekeystore.db
+64772 2770 -1 /data/system/notification_log.db
+64772 4930 -1 /data/system/notification_policy.xml
+64772 3516 -1 /data/system/last-header.txt
+64772 2674 -1 /data/system/netstats
+64772 1480 -1 /data/system/package-dex-usage.list
+64772 2679 -1 /data/system/job
+64772 2952 -1 /data/system/job/jobs.xml
+64772 2680 -1 /data/system/graphicsstats
+64772 3574 -1 /data/system/graphicsstats/1570924800000
+64772 3575 -1 /data/system/graphicsstats/1570924800000/com.android.settings
+64772 3576 -1 /data/system/graphicsstats/1570924800000/com.android.settings/29
+64772 3577 -1 /data/system/graphicsstats/1570924800000/com.android.settings/29/total
+64772 1475 -1 /data/system/graphicsstats/1570924800000/com.android.deskclock
+64772 1508 -1 /data/system/graphicsstats/1570924800000/com.android.deskclock/29
+64772 1537 -1 /data/system/graphicsstats/1570924800000/com.android.deskclock/29/total
+64772 1509 -1 /data/system/graphicsstats/1570924800000/com.android.calendar
+64772 1820 -1 /data/system/graphicsstats/1570924800000/com.android.calendar/29
+64772 2196 -1 /data/system/graphicsstats/1570924800000/com.android.calendar/29/total
+64772 5849 -1 /data/system/graphicsstats/1570924800000/com.android.hotwordenrollment.okgoogle
+64772 5850 -1 /data/system/graphicsstats/1570924800000/com.android.hotwordenrollment.okgoogle/29
+64772 5851 -1 /data/system/graphicsstats/1570924800000/com.android.hotwordenrollment.okgoogle/29/total
+64772 6369 -1 /data/system/graphicsstats/1570924800000/com.google.android.calculator
+64772 6370 -1 /data/system/graphicsstats/1570924800000/com.google.android.calculator/75013172
+64772 6371 -1 /data/system/graphicsstats/1570924800000/com.google.android.calculator/75013172/total
+64772 6442 -1 /data/system/graphicsstats/1570924800000/com.google.android.googlequicksearchbox
+64772 6443 -1 /data/system/graphicsstats/1570924800000/com.google.android.googlequicksearchbox/300951992
+64772 6444 -1 /data/system/graphicsstats/1570924800000/com.google.android.googlequicksearchbox/300951992/total
+64772 7395 -1 /data/system/graphicsstats/1570924800000/com.android.systemui
+64772 7396 -1 /data/system/graphicsstats/1570924800000/com.android.systemui/29
+64772 7397 -1 /data/system/graphicsstats/1570924800000/com.android.systemui/29/total
+64772 7398 -1 /data/system/graphicsstats/1570924800000/com.google.android.apps.nexuslauncher
+64772 7399 -1 /data/system/graphicsstats/1570924800000/com.google.android.apps.nexuslauncher/701
+64772 7400 -1 /data/system/graphicsstats/1570924800000/com.google.android.apps.nexuslauncher/701/total
+64772 7401 -1 /data/system/graphicsstats/1570924800000/com.google.android.inputmethod.latin
+64772 7402 -1 /data/system/graphicsstats/1570924800000/com.google.android.inputmethod.latin/26830610
+64772 7403 -1 /data/system/graphicsstats/1570924800000/com.google.android.inputmethod.latin/26830610/total
+64772 9537 -1 /data/system/graphicsstats/1571011200000
+64772 9538 -1 /data/system/graphicsstats/1571011200000/com.android.settings
+64772 9500 -1 /data/system/graphicsstats/1571011200000/com.android.settings/29
+64772 9501 -1 /data/system/graphicsstats/1571011200000/com.android.settings/29/total
+64772 9597 -1 /data/system/graphicsstats/1571011200000/com.google.android.GoogleCamera
+64772 9697 -1 /data/system/graphicsstats/1571011200000/com.google.android.GoogleCamera/54080538
+64772 9698 -1 /data/system/graphicsstats/1571011200000/com.google.android.GoogleCamera/54080538/total
+64772 9215 -1 /data/system/graphicsstats/1571011200000/com.google.android.calculator
+64772 9137 -1 /data/system/graphicsstats/1571011200000/com.google.android.calculator/75013172
+64772 9150 -1 /data/system/graphicsstats/1571011200000/com.google.android.calculator/75013172/total
+64772 9348 -1 /data/system/graphicsstats/1571011200000/com.google.android.gms
+64772 9416 -1 /data/system/graphicsstats/1571011200000/com.google.android.gms/19275048
+64772 9381 -1 /data/system/graphicsstats/1571011200000/com.google.android.gms/19275048/total
+64772 4777 -1 /data/system/graphicsstats/1571011200000/com.android.systemui
+64772 4882 -1 /data/system/graphicsstats/1571011200000/com.android.systemui/29
+64772 6798 -1 /data/system/graphicsstats/1571011200000/com.android.systemui/29/total
+64772 6800 -1 /data/system/graphicsstats/1571011200000/com.google.android.apps.nexuslauncher
+64772 6807 -1 /data/system/graphicsstats/1571011200000/com.google.android.apps.nexuslauncher/701
+64772 6770 -1 /data/system/graphicsstats/1571011200000/com.google.android.apps.nexuslauncher/701/total
+64772 6603 -1 /data/system/graphicsstats/1571011200000/com.google.android.googlequicksearchbox
+64772 6538 -1 /data/system/graphicsstats/1571011200000/com.google.android.googlequicksearchbox/300951992
+64772 6714 -1 /data/system/graphicsstats/1571011200000/com.google.android.googlequicksearchbox/300951992/total
+64772 6363 -1 /data/system/graphicsstats/1571011200000/com.google.android.inputmethod.latin
+64772 3374 -1 /data/system/graphicsstats/1571011200000/com.google.android.inputmethod.latin/26830610
+64772 3543 -1 /data/system/graphicsstats/1571011200000/com.google.android.inputmethod.latin/26830610/total
+64772 9461 -1 /data/system/graphicsstats/1571097600000
+64772 9415 -1 /data/system/graphicsstats/1571097600000/com.google.android.googlequicksearchbox
+64772 9407 -1 /data/system/graphicsstats/1571097600000/com.google.android.googlequicksearchbox/300951992
+64772 9470 -1 /data/system/graphicsstats/1571097600000/com.google.android.googlequicksearchbox/300951992/total
+64772 9468 -1 /data/system/graphicsstats/1571097600000/com.google.android.apps.nexuslauncher
+64772 9443 -1 /data/system/graphicsstats/1571097600000/com.google.android.apps.nexuslauncher/701
+64772 9421 -1 /data/system/graphicsstats/1571097600000/com.google.android.apps.nexuslauncher/701/total
+64772 9444 -1 /data/system/graphicsstats/1571097600000/com.google.android.inputmethod.latin
+64772 9318 -1 /data/system/graphicsstats/1571097600000/com.google.android.inputmethod.latin/26830610
+64772 9456 -1 /data/system/graphicsstats/1571097600000/com.google.android.inputmethod.latin/26830610/total
+64772 9373 -1 /data/system/graphicsstats/1571097600000/com.android.systemui
+64772 9374 -1 /data/system/graphicsstats/1571097600000/com.android.systemui/29
+64772 9459 -1 /data/system/graphicsstats/1571097600000/com.android.systemui/29/total
+64772 6768 -1 /data/system/graphicsstats/1571184000000
+64772 6696 -1 /data/system/graphicsstats/1571184000000/android
+64772 6810 -1 /data/system/graphicsstats/1571184000000/android/29
+64772 4761 -1 /data/system/graphicsstats/1571184000000/android/29/total
+64772 7241 -1 /data/system/graphicsstats/1571184000000/com.google.android.gms
+64772 9001 -1 /data/system/graphicsstats/1571184000000/com.google.android.gms/19275048
+64772 6622 -1 /data/system/graphicsstats/1571184000000/com.google.android.gms/19275048/total
+64772 7287 -1 /data/system/graphicsstats/1571184000000/com.google.android.googlequicksearchbox
+64772 7320 -1 /data/system/graphicsstats/1571184000000/com.google.android.googlequicksearchbox/300951992
+64772 7408 -1 /data/system/graphicsstats/1571184000000/com.google.android.googlequicksearchbox/300951992/total
+64772 2681 -1 /data/system/stats_companion
+64772 2682 -1 /data/system/locksettings.db
+64772 1774 -1 /data/system/sound_model.db
+64772 1525 -1 /data/system/log-files.xml
+64772 9160 -1 /data/system/shortcut_service.xml
+64772 2688 -1 /data/system/battery-saver
+64772 9994 -1 /data/system/install_sessions.xml
+64772 2694 -1 /data/system/sync
+64772 6668 -1 /data/system/sync/accounts.xml
+64772 2695 -1 /data/system/syncmanager-log
+64772 2696 -1 /data/system/syncmanager-log/synclog-2019-10-13.log
+64772 7394 -1 /data/system/syncmanager-log/synclog-2019-10-14.log
+64772 5672 -1 /data/system/syncmanager-log/synclog-2019-10-15.log
+64772 9400 -1 /data/system/syncmanager-log/synclog-2019-10-16.log
+64772 2697 -1 /data/system/slice
+64772 2699 -1 /data/system/appops
+64772 1451 -1 /data/system/appops/history
+64772 7615 -1 /data/system/appops/history/900000.xml
+64772 7582 -1 /data/system/appops/history/9900000.xml
+64772 7329 -1 /data/system/appops/history/99900000.xml
+64772 8594 -1 /data/system/appops/history/999999900000.xml
+64772 6591 -1 /data/system/netpolicy.xml
+64772 6592 -1 /data/system/package-watchdog.xml
+64772 1775 -1 /data/system/sound_model.db-journal
+64772 2771 -1 /data/system/notification_log.db-journal
+64772 7039 -1 /data/system/cachequota.xml
+64772 1535 -1 /data/system/device_policies.xml
+64772 7442 -1 /data/system/appops.xml
+64772 1813 -1 /data/system/packages-warnings.xml
+64772 7543 -1 /data/system/package-dcl.list
+64772 6211 -1 /data/system/st_sound_model.db
+64772 8614 -1 /data/system/package-cstats.list
+64772 6212 -1 /data/system/st_sound_model.db-journal
+64772 9195 -1 /data/system/batterystats-daily.xml
+64772 7542 -1 /data/system/diskstats_cache.json
+64772 8615 -1 /data/system/package-usage.list
+64772 101 -1 /data/system_de
+64772 134 -1 /data/system_de/0
+64772 3345 -1 /data/system_de/0/accounts_de.db
+64772 3346 -1 /data/system_de/0/accounts_de.db-journal
+64772 3595 -1 /data/system_de/0/ringtones
+64772 3596 -1 /data/system_de/0/ringtones/ringtone_cache
+64772 3597 -1 /data/system_de/0/ringtones/notification_sound_cache
+64772 3598 -1 /data/system_de/0/ringtones/alarm_alert_cache
+64772 3638 -1 /data/system_de/0/persisted_taskIds.txt
+64772 7544 -1 /data/system_de/ambient_brightness_stats.xml
+64772 102 -1 /data/system_ce
+64772 2789 -1 /data/system_ce/0
+64772 2808 -1 /data/system_ce/0/backup
+64772 2809 -1 /data/system_ce/0/backup_stage
+64772 3322 -1 /data/system_ce/0/usagestats
+64772 3323 -1 /data/system_ce/0/usagestats/migrated
+64772 3324 -1 /data/system_ce/0/usagestats/daily
+64772 3704 -1 /data/system_ce/0/usagestats/daily/1571007125976
+64772 6623 -1 /data/system_ce/0/usagestats/daily/1571093553774
+64772 8125 -1 /data/system_ce/0/usagestats/daily/1571180013782
+64772 3325 -1 /data/system_ce/0/usagestats/weekly
+64772 4831 -1 /data/system_ce/0/usagestats/weekly/1571007125976
+64772 3326 -1 /data/system_ce/0/usagestats/monthly
+64772 7948 -1 /data/system_ce/0/usagestats/monthly/1571007125976
+64772 3327 -1 /data/system_ce/0/usagestats/yearly
+64772 7950 -1 /data/system_ce/0/usagestats/yearly/1571007125976
+64772 3328 -1 /data/system_ce/0/usagestats/version
+64772 3347 -1 /data/system_ce/0/accounts_ce.db
+64772 3348 -1 /data/system_ce/0/accounts_ce.db-journal
+64772 3592 -1 /data/system_ce/0/shortcut_service
+64772 7102 -1 /data/system_ce/0/shortcut_service/shortcuts.xml
+64772 3628 -1 /data/system_ce/0/recent_tasks
+64772 3630 -1 /data/system_ce/0/snapshots
+64772 1572 -1 /data/system_ce/0/recent_images
+64772 103 -1 /data/misc_de
+64772 135 -1 /data/misc_de/0
+64772 138 -1 /data/misc_de/0/vold
+64772 139 -1 /data/misc_de/0/storaged
+64772 140 -1 /data/misc_de/0/rollback
+64772 104 -1 /data/misc_ce
+64772 2790 -1 /data/misc_ce/0
+64772 2805 -1 /data/misc_ce/0/vold
+64772 2806 -1 /data/misc_ce/0/storaged
+64772 7460 -1 /data/misc_ce/0/storaged/storaged.proto
+64772 2807 -1 /data/misc_ce/0/rollback
+64772 3003 -1 /data/misc_ce/0/wifi
+64772 1556 -1 /data/misc_ce/0/wifi/WifiConfigStore.xml
+64772 105 -1 /data/user
+64772 75 -1 /data/user/0
+64772 106 -1 /data/user_de
+64772 137 -1 /data/user_de/0
+64772 1664 -1 /data/user_de/0/com.android.providers.telephony
+64772 1665 -1 /data/user_de/0/com.android.providers.telephony/cache
+64772 1666 -1 /data/user_de/0/com.android.providers.telephony/code_cache
+64772 2749 -1 /data/user_de/0/com.android.providers.telephony/files
+64772 2752 -1 /data/user_de/0/com.android.providers.telephony/databases
+64772 2753 -1 /data/user_de/0/com.android.providers.telephony/databases/carrierIdentification.db
+64772 2754 -1 /data/user_de/0/com.android.providers.telephony/databases/carrierIdentification.db-journal
+64772 2772 -1 /data/user_de/0/com.android.providers.telephony/databases/telephony.db
+64772 2773 -1 /data/user_de/0/com.android.providers.telephony/databases/telephony.db-journal
+64772 3431 -1 /data/user_de/0/com.android.providers.telephony/databases/HbpcdLookup.db
+64772 3432 -1 /data/user_de/0/com.android.providers.telephony/databases/HbpcdLookup.db-journal
+64772 3435 -1 /data/user_de/0/com.android.providers.telephony/databases/mmssms.db
+64772 3436 -1 /data/user_de/0/com.android.providers.telephony/databases/mmssms.db-journal
+64772 2756 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs
+64772 2775 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/CarrierIdProvider.xml
+64772 2776 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/build-id.xml
+64772 3149 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/telephonyprovider.xml
+64772 3154 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/preferred-apn.xml
+64772 1670 -1 /data/user_de/0/com.quicinc.cne.CNEService
+64772 1671 -1 /data/user_de/0/com.quicinc.cne.CNEService/cache
+64772 1672 -1 /data/user_de/0/com.quicinc.cne.CNEService/code_cache
+64772 1676 -1 /data/user_de/0/com.qualcomm.qti.uceShimService
+64772 1677 -1 /data/user_de/0/com.qualcomm.qti.uceShimService/cache
+64772 1678 -1 /data/user_de/0/com.qualcomm.qti.uceShimService/code_cache
+64772 1682 -1 /data/user_de/0/com.android.mms.service
+64772 1683 -1 /data/user_de/0/com.android.mms.service/cache
+64772 1684 -1 /data/user_de/0/com.android.mms.service/code_cache
+64772 1688 -1 /data/user_de/0/com.qualcomm.qti.telephonyservice
+64772 1689 -1 /data/user_de/0/com.qualcomm.qti.telephonyservice/cache
+64772 1690 -1 /data/user_de/0/com.qualcomm.qti.telephonyservice/code_cache
+64772 1694 -1 /data/user_de/0/android
+64772 1695 -1 /data/user_de/0/android/cache
+64772 1696 -1 /data/user_de/0/android/code_cache
+64772 1699 -1 /data/user_de/0/com.android.ons
+64772 1700 -1 /data/user_de/0/com.android.ons/cache
+64772 1701 -1 /data/user_de/0/com.android.ons/code_cache
+64772 3444 -1 /data/user_de/0/com.android.ons/shared_prefs
+64772 3446 -1 /data/user_de/0/com.android.ons/shared_prefs/ONS.xml
+64772 1705 -1 /data/user_de/0/org.codeaurora.ims
+64772 1706 -1 /data/user_de/0/org.codeaurora.ims/cache
+64772 1707 -1 /data/user_de/0/org.codeaurora.ims/code_cache
+64772 1711 -1 /data/user_de/0/com.qualcomm.qcrilmsgtunnel
+64772 1712 -1 /data/user_de/0/com.qualcomm.qcrilmsgtunnel/cache
+64772 1713 -1 /data/user_de/0/com.qualcomm.qcrilmsgtunnel/code_cache
+64772 1717 -1 /data/user_de/0/com.android.providers.settings
+64772 1718 -1 /data/user_de/0/com.android.providers.settings/cache
+64772 1719 -1 /data/user_de/0/com.android.providers.settings/code_cache
+64772 2645 -1 /data/user_de/0/com.android.providers.settings/databases
+64772 1723 -1 /data/user_de/0/com.android.inputdevices
+64772 1724 -1 /data/user_de/0/com.android.inputdevices/cache
+64772 1725 -1 /data/user_de/0/com.android.inputdevices/code_cache
+64772 3784 -1 /data/user_de/0/com.google.android.ext.services
+64772 3785 -1 /data/user_de/0/com.google.android.ext.services/cache
+64772 3786 -1 /data/user_de/0/com.google.android.ext.services/code_cache
+64772 1741 -1 /data/user_de/0/com.android.server.telecom
+64772 1742 -1 /data/user_de/0/com.android.server.telecom/cache
+64772 1743 -1 /data/user_de/0/com.android.server.telecom/code_cache
+64772 2747 -1 /data/user_de/0/com.android.server.telecom/files
+64772 5864 -1 /data/user_de/0/com.android.server.telecom/files/phone-account-registrar-state.xml
+64772 1747 -1 /data/user_de/0/com.android.service.ims
+64772 1748 -1 /data/user_de/0/com.android.service.ims/cache
+64772 1749 -1 /data/user_de/0/com.android.service.ims/code_cache
+64772 3790 -1 /data/user_de/0/com.google.android.ext.shared
+64772 3791 -1 /data/user_de/0/com.google.android.ext.shared/cache
+64772 3792 -1 /data/user_de/0/com.google.android.ext.shared/code_cache
+64772 3853 -1 /data/user_de/0/com.vzw.apnlib
+64772 3854 -1 /data/user_de/0/com.vzw.apnlib/cache
+64772 3855 -1 /data/user_de/0/com.vzw.apnlib/code_cache
+64772 1765 -1 /data/user_de/0/com.android.proxyhandler
+64772 1766 -1 /data/user_de/0/com.android.proxyhandler/cache
+64772 1767 -1 /data/user_de/0/com.android.proxyhandler/code_cache
+64772 3796 -1 /data/user_de/0/com.google.android.grilservice
+64772 3797 -1 /data/user_de/0/com.google.android.grilservice/cache
+64772 3798 -1 /data/user_de/0/com.google.android.grilservice/code_cache
+64772 1777 -1 /data/user_de/0/com.android.service.ims.presence
+64772 1778 -1 /data/user_de/0/com.android.service.ims.presence/cache
+64772 1779 -1 /data/user_de/0/com.android.service.ims.presence/code_cache
+64772 1783 -1 /data/user_de/0/com.android.settings
+64772 1784 -1 /data/user_de/0/com.android.settings/cache
+64772 1785 -1 /data/user_de/0/com.android.settings/code_cache
+64772 7214 -1 /data/user_de/0/com.android.settings/code_cache/com.android.opengl.shaders_cache
+64772 7215 -1 /data/user_de/0/com.android.settings/code_cache/com.android.skia.shaders_cache
+64772 7205 -1 /data/user_de/0/com.android.settings/shared_prefs
+64772 7211 -1 /data/user_de/0/com.android.settings/shared_prefs/battery_fix_prefs.xml
+64772 7206 -1 /data/user_de/0/com.android.settings/databases
+64772 7207 -1 /data/user_de/0/com.android.settings/databases/homepage_cards.db
+64772 7208 -1 /data/user_de/0/com.android.settings/databases/homepage_cards.db-journal
+64772 7209 -1 /data/user_de/0/com.android.settings/databases/battery_settings.db
+64772 7210 -1 /data/user_de/0/com.android.settings/databases/battery_settings.db-journal
+64772 1789 -1 /data/user_de/0/com.android.phone
+64772 1790 -1 /data/user_de/0/com.android.phone/cache
+64772 1791 -1 /data/user_de/0/com.android.phone/code_cache
+64772 3434 -1 /data/user_de/0/com.android.phone/shared_prefs
+64772 4905 -1 /data/user_de/0/com.android.phone/shared_prefs/com.android.phone_preferences.xml
+64772 3440 -1 /data/user_de/0/com.android.phone/shared_prefs/_has_set_default_values.xml
+64772 3443 -1 /data/user_de/0/com.android.phone/files
+64772 1795 -1 /data/user_de/0/com.android.shell
+64772 1796 -1 /data/user_de/0/com.android.shell/cache
+64772 1797 -1 /data/user_de/0/com.android.shell/code_cache
+64772 1801 -1 /data/user_de/0/com.android.location.fused
+64772 1802 -1 /data/user_de/0/com.android.location.fused/cache
+64772 1803 -1 /data/user_de/0/com.android.location.fused/code_cache
+64772 1807 -1 /data/user_de/0/com.android.systemui
+64772 1808 -1 /data/user_de/0/com.android.systemui/cache
+64772 6712 -1 /data/user_de/0/com.android.systemui/cache/einfo-cache.xml
+64772 6691 -1 /data/user_de/0/com.android.systemui/cache/einfo-userphoto.bmp
+64772 1809 -1 /data/user_de/0/com.android.systemui/code_cache
+64772 4941 -1 /data/user_de/0/com.android.systemui/code_cache/com.android.renderscript.cache
+64772 8726 -1 /data/user_de/0/com.android.systemui/code_cache/com.android.opengl.shaders_cache
+64772 9095 -1 /data/user_de/0/com.android.systemui/code_cache/com.android.skia.shaders_cache
+64772 2724 -1 /data/user_de/0/com.android.systemui/shared_prefs
+64772 5036 -1 /data/user_de/0/com.android.systemui/shared_prefs/plugin_prefs.xml
+64772 6957 -1 /data/user_de/0/com.android.systemui/shared_prefs/com.android.systemui.xml
+64772 6565 -1 /data/user_de/0/com.android.systemui/shared_prefs/powerui_prefs.xml
+64772 4925 -1 /data/user_de/0/com.android.systemui/files
+64772 2519 -1 /data/user_de/0/com.android.systemui/files/smartspace_0_true
+64772 3808 -1 /data/user_de/0/com.google.android.dialer
+64772 3809 -1 /data/user_de/0/com.google.android.dialer/cache
+64772 3810 -1 /data/user_de/0/com.google.android.dialer/code_cache
+64772 4844 -1 /data/user_de/0/com.google.android.dialer/shared_prefs
+64772 3613 -1 /data/user_de/0/com.google.android.dialer/shared_prefs/com.google.android.dialer_preferences.xml
+64772 1824 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.noCutout
+64772 1825 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.noCutout/cache
+64772 1826 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.noCutout/code_cache
+64772 1829 -1 /data/user_de/0/com.android.cts.priv.ctsshim
+64772 1830 -1 /data/user_de/0/com.android.cts.priv.ctsshim/cache
+64772 1831 -1 /data/user_de/0/com.android.cts.priv.ctsshim/code_cache
+64772 1834 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.corner
+64772 1835 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.corner/cache
+64772 1836 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.corner/code_cache
+64772 1839 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.double
+64772 1840 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.double/cache
+64772 1841 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.double/code_cache
+64772 1844 -1 /data/user_de/0/com.android.dynsystem
+64772 1845 -1 /data/user_de/0/com.android.dynsystem/cache
+64772 1846 -1 /data/user_de/0/com.android.dynsystem/code_cache
+64772 1850 -1 /data/user_de/0/com.android.providers.calendar
+64772 1851 -1 /data/user_de/0/com.android.providers.calendar/cache
+64772 1852 -1 /data/user_de/0/com.android.providers.calendar/code_cache
+64772 1856 -1 /data/user_de/0/com.android.providers.media
+64772 1857 -1 /data/user_de/0/com.android.providers.media/cache
+64772 1858 -1 /data/user_de/0/com.android.providers.media/code_cache
+64772 1862 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_wide_back
+64772 1863 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_wide_back/cache
+64772 1864 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_wide_back/code_cache
+64772 3814 -1 /data/user_de/0/com.android.server.wifistack
+64772 3815 -1 /data/user_de/0/com.android.server.wifistack/cache
+64772 3816 -1 /data/user_de/0/com.android.server.wifistack/code_cache
+64772 1873 -1 /data/user_de/0/com.android.theme.color.cinnamon
+64772 1874 -1 /data/user_de/0/com.android.theme.color.cinnamon/cache
+64772 1875 -1 /data/user_de/0/com.android.theme.color.cinnamon/code_cache
+64772 1878 -1 /data/user_de/0/com.android.server.backup.encryption
+64772 1879 -1 /data/user_de/0/com.android.server.backup.encryption/cache
+64772 1880 -1 /data/user_de/0/com.android.server.backup.encryption/code_cache
+64772 1884 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.systemui
+64772 1885 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.systemui/cache
+64772 1886 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.systemui/code_cache
+64772 3835 -1 /data/user_de/0/com.google.omadm.trigger
+64772 3836 -1 /data/user_de/0/com.google.omadm.trigger/cache
+64772 3837 -1 /data/user_de/0/com.google.omadm.trigger/code_cache
+64772 1895 -1 /data/user_de/0/com.android.externalstorage
+64772 1896 -1 /data/user_de/0/com.android.externalstorage/cache
+64772 1897 -1 /data/user_de/0/com.android.externalstorage/code_cache
+64772 1901 -1 /data/user_de/0/com.qualcomm.uimremoteclient
+64772 1902 -1 /data/user_de/0/com.qualcomm.uimremoteclient/cache
+64772 1903 -1 /data/user_de/0/com.qualcomm.uimremoteclient/code_cache
+64772 1907 -1 /data/user_de/0/com.android.htmlviewer
+64772 1908 -1 /data/user_de/0/com.android.htmlviewer/cache
+64772 1909 -1 /data/user_de/0/com.android.htmlviewer/code_cache
+64772 1913 -1 /data/user_de/0/com.android.companiondevicemanager
+64772 1914 -1 /data/user_de/0/com.android.companiondevicemanager/cache
+64772 1915 -1 /data/user_de/0/com.android.companiondevicemanager/code_cache
+64772 3802 -1 /data/user_de/0/com.google.android.permissioncontroller
+64772 3803 -1 /data/user_de/0/com.google.android.permissioncontroller/cache
+64772 3804 -1 /data/user_de/0/com.google.android.permissioncontroller/code_cache
+64772 9691 -1 /data/user_de/0/com.google.android.permissioncontroller/code_cache/com.android.opengl.shaders_cache
+64772 9692 -1 /data/user_de/0/com.google.android.permissioncontroller/code_cache/com.android.skia.shaders_cache
+64772 4927 -1 /data/user_de/0/com.google.android.permissioncontroller/shared_prefs
+64772 9487 -1 /data/user_de/0/com.google.android.permissioncontroller/shared_prefs/preferences.xml
+64772 9491 -1 /data/user_de/0/com.google.android.permissioncontroller/files
+64772 3820 -1 /data/user_de/0/com.google.android.documentsui
+64772 3821 -1 /data/user_de/0/com.google.android.documentsui/cache
+64772 3822 -1 /data/user_de/0/com.google.android.documentsui/code_cache
+64772 3889 -1 /data/user_de/0/com.qualcomm.ltebc_vzw
+64772 3890 -1 /data/user_de/0/com.qualcomm.ltebc_vzw/cache
+64772 3891 -1 /data/user_de/0/com.qualcomm.ltebc_vzw/code_cache
+64772 1937 -1 /data/user_de/0/com.android.providers.downloads
+64772 1938 -1 /data/user_de/0/com.android.providers.downloads/cache
+64772 1939 -1 /data/user_de/0/com.android.providers.downloads/code_cache
+64772 3901 -1 /data/user_de/0/com.google.euiccpixel
+64772 3902 -1 /data/user_de/0/com.google.euiccpixel/cache
+64772 3903 -1 /data/user_de/0/com.google.euiccpixel/code_cache
+64772 5023 -1 /data/user_de/0/com.google.euiccpixel/shared_prefs
+64772 6191 -1 /data/user_de/0/com.google.euiccpixel/shared_prefs/ph_active_prefs.xml
+64772 1949 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.android
+64772 1950 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.android/cache
+64772 1951 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.android/code_cache
+64772 1954 -1 /data/user_de/0/com.android.theme.icon_pack.circular.themepicker
+64772 1955 -1 /data/user_de/0/com.android.theme.icon_pack.circular.themepicker/cache
+64772 1956 -1 /data/user_de/0/com.android.theme.icon_pack.circular.themepicker/code_cache
+64772 1959 -1 /data/user_de/0/com.qualcomm.uimremoteserver
+64772 1960 -1 /data/user_de/0/com.qualcomm.uimremoteserver/cache
+64772 1961 -1 /data/user_de/0/com.qualcomm.uimremoteserver/code_cache
+64772 1965 -1 /data/user_de/0/com.android.timezone.updater
+64772 1966 -1 /data/user_de/0/com.android.timezone.updater/cache
+64772 1967 -1 /data/user_de/0/com.android.timezone.updater/code_cache
+64772 1971 -1 /data/user_de/0/com.android.providers.downloads.ui
+64772 1972 -1 /data/user_de/0/com.android.providers.downloads.ui/cache
+64772 1973 -1 /data/user_de/0/com.android.providers.downloads.ui/code_cache
+64772 1977 -1 /data/user_de/0/com.android.pacprocessor
+64772 1978 -1 /data/user_de/0/com.android.pacprocessor/cache
+64772 1979 -1 /data/user_de/0/com.android.pacprocessor/code_cache
+64772 1983 -1 /data/user_de/0/com.android.simappdialog
+64772 1984 -1 /data/user_de/0/com.android.simappdialog/cache
+64772 1985 -1 /data/user_de/0/com.android.simappdialog/code_cache
+64772 3960 -1 /data/user_de/0/com.breel.wallpapers18
+64772 3961 -1 /data/user_de/0/com.breel.wallpapers18/cache
+64772 3962 -1 /data/user_de/0/com.breel.wallpapers18/code_cache
+64772 1995 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.tall
+64772 1996 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.tall/cache
+64772 1997 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.tall/code_cache
+64772 3841 -1 /data/user_de/0/com.google.android.carriersetup
+64772 3842 -1 /data/user_de/0/com.google.android.carriersetup/cache
+64772 3843 -1 /data/user_de/0/com.google.android.carriersetup/code_cache
+64772 2005 -1 /data/user_de/0/com.android.certinstaller
+64772 2006 -1 /data/user_de/0/com.android.certinstaller/cache
+64772 2007 -1 /data/user_de/0/com.android.certinstaller/code_cache
+64772 2011 -1 /data/user_de/0/com.android.theme.color.black
+64772 2012 -1 /data/user_de/0/com.android.theme.color.black/cache
+64772 2013 -1 /data/user_de/0/com.android.theme.color.black/code_cache
+64772 3847 -1 /data/user_de/0/com.google.android.youtube
+64772 3848 -1 /data/user_de/0/com.google.android.youtube/cache
+64772 3849 -1 /data/user_de/0/com.google.android.youtube/code_cache
+64772 1581 -1 /data/user_de/0/com.google.android.youtube/shared_prefs
+64772 2022 -1 /data/user_de/0/com.android.theme.color.green
+64772 2023 -1 /data/user_de/0/com.android.theme.color.green/cache
+64772 2024 -1 /data/user_de/0/com.android.theme.color.green/code_cache
+64772 2027 -1 /data/user_de/0/com.android.theme.color.ocean
+64772 2028 -1 /data/user_de/0/com.android.theme.color.ocean/cache
+64772 2029 -1 /data/user_de/0/com.android.theme.color.ocean/code_cache
+64772 2032 -1 /data/user_de/0/com.android.theme.color.space
+64772 2033 -1 /data/user_de/0/com.android.theme.color.space/cache
+64772 2034 -1 /data/user_de/0/com.android.theme.color.space/code_cache
+64772 2037 -1 /data/user_de/0/com.android.internal.systemui.navbar.threebutton
+64772 2038 -1 /data/user_de/0/com.android.internal.systemui.navbar.threebutton/cache
+64772 2039 -1 /data/user_de/0/com.android.internal.systemui.navbar.threebutton/code_cache
+64772 2042 -1 /data/user_de/0/com.qti.qualcomm.datastatusnotification
+64772 2043 -1 /data/user_de/0/com.qti.qualcomm.datastatusnotification/cache
+64772 2044 -1 /data/user_de/0/com.qti.qualcomm.datastatusnotification/code_cache
+64772 3826 -1 /data/user_de/0/com.google.android.inputmethod.latin
+64772 3827 -1 /data/user_de/0/com.google.android.inputmethod.latin/cache
+64772 3828 -1 /data/user_de/0/com.google.android.inputmethod.latin/code_cache
+64772 6294 -1 /data/user_de/0/com.google.android.inputmethod.latin/code_cache/com.android.opengl.shaders_cache
+64772 6295 -1 /data/user_de/0/com.google.android.inputmethod.latin/code_cache/com.android.skia.shaders_cache
+64772 1388 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs
+64772 6614 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_ueh.xml
+64772 2016 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_version_code.xml
+64772 6621 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_preferences.xml
+64772 7996 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_transient_files.xml
+64772 2361 -1 /data/user_de/0/com.google.android.inputmethod.latin/files
+64772 2589 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/stylesheet_builtin_google_blue_light.binarypb_2_11_12
+64772 4817 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_7724d6d93521b516227a30295be1bf6c
+64772 6174 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_04c2227f655d75cb36f1cdda9360ee2a
+64772 6176 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_842c03411b05a8b093ab25d4f6b7500b
+64772 6178 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_8584bab33d61b43f7aa67893e2d88147
+64772 7992 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_73d920745e210535364ac93089e68d88
+64772 2060 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.launcher
+64772 2061 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.launcher/cache
+64772 2062 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.launcher/code_cache
+64772 2065 -1 /data/user_de/0/com.android.egg
+64772 2066 -1 /data/user_de/0/com.android.egg/cache
+64772 2067 -1 /data/user_de/0/com.android.egg/code_cache
+64772 2071 -1 /data/user_de/0/com.android.mtp
+64772 2072 -1 /data/user_de/0/com.android.mtp/cache
+64772 2073 -1 /data/user_de/0/com.android.mtp/code_cache
+64772 2077 -1 /data/user_de/0/com.android.nfc
+64772 2078 -1 /data/user_de/0/com.android.nfc/cache
+64772 2079 -1 /data/user_de/0/com.android.nfc/code_cache
+64772 2083 -1 /data/user_de/0/com.android.stk
+64772 2084 -1 /data/user_de/0/com.android.stk/cache
+64772 2085 -1 /data/user_de/0/com.android.stk/code_cache
+64772 3990 -1 /data/user_de/0/com.google.ar.core
+64772 3991 -1 /data/user_de/0/com.google.ar.core/cache
+64772 3992 -1 /data/user_de/0/com.google.ar.core/code_cache
+64772 2095 -1 /data/user_de/0/com.android.backupconfirm
+64772 2096 -1 /data/user_de/0/com.android.backupconfirm/cache
+64772 2097 -1 /data/user_de/0/com.android.backupconfirm/code_cache
+64772 3859 -1 /data/user_de/0/com.google.android.overlay.pixelconfig2018
+64772 3860 -1 /data/user_de/0/com.google.android.overlay.pixelconfig2018/cache
+64772 3861 -1 /data/user_de/0/com.google.android.overlay.pixelconfig2018/code_cache
+64772 2108 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_vendor__
+64772 2109 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_vendor__/cache
+64772 2110 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_vendor__/code_cache
+64772 2114 -1 /data/user_de/0/com.android.internal.systemui.navbar.twobutton
+64772 2115 -1 /data/user_de/0/com.android.internal.systemui.navbar.twobutton/cache
+64772 2116 -1 /data/user_de/0/com.android.internal.systemui.navbar.twobutton/code_cache
+64772 3996 -1 /data/user_de/0/com.android.vending
+64772 3997 -1 /data/user_de/0/com.android.vending/cache
+64772 3998 -1 /data/user_de/0/com.android.vending/code_cache
+64772 5836 -1 /data/user_de/0/com.android.vending/shared_prefs
+64772 2125 -1 /data/user_de/0/com.qualcomm.qti.radioconfiginterface
+64772 2126 -1 /data/user_de/0/com.qualcomm.qti.radioconfiginterface/cache
+64772 2127 -1 /data/user_de/0/com.qualcomm.qti.radioconfiginterface/code_cache
+64772 2131 -1 /data/user_de/0/com.android.statementservice
+64772 2132 -1 /data/user_de/0/com.android.statementservice/cache
+64772 2133 -1 /data/user_de/0/com.android.statementservice/code_cache
+64772 2137 -1 /data/user_de/0/com.android.hotspot2
+64772 2138 -1 /data/user_de/0/com.android.hotspot2/cache
+64772 2139 -1 /data/user_de/0/com.android.hotspot2/code_cache
+64772 3865 -1 /data/user_de/0/com.android.sdm.plugins.connmo
+64772 3866 -1 /data/user_de/0/com.android.sdm.plugins.connmo/cache
+64772 3867 -1 /data/user_de/0/com.android.sdm.plugins.connmo/code_cache
+64772 2156 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_extra_wide_back
+64772 2157 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_extra_wide_back/cache
+64772 2158 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_extra_wide_back/code_cache
+64772 2161 -1 /data/user_de/0/com.android.sharedstoragebackup
+64772 2162 -1 /data/user_de/0/com.android.sharedstoragebackup/cache
+64772 2163 -1 /data/user_de/0/com.android.sharedstoragebackup/code_cache
+64772 2167 -1 /data/user_de/0/com.android.printspooler
+64772 2168 -1 /data/user_de/0/com.android.printspooler/cache
+64772 2169 -1 /data/user_de/0/com.android.printspooler/code_cache
+64772 2173 -1 /data/user_de/0/com.android.theme.icon_pack.filled.settings
+64772 2174 -1 /data/user_de/0/com.android.theme.icon_pack.filled.settings/cache
+64772 2175 -1 /data/user_de/0/com.android.theme.icon_pack.filled.settings/code_cache
+64772 3871 -1 /data/user_de/0/com.google.android.googlequicksearchbox
+64772 3872 -1 /data/user_de/0/com.google.android.googlequicksearchbox/cache
+64772 3873 -1 /data/user_de/0/com.google.android.googlequicksearchbox/code_cache
+64772 9192 -1 /data/user_de/0/com.google.android.googlequicksearchbox/code_cache/com.android.opengl.shaders_cache
+64772 9283 -1 /data/user_de/0/com.google.android.googlequicksearchbox/code_cache/com.android.skia.shaders_cache
+64772 3937 -1 /data/user_de/0/com.verizon.obdm_permissions
+64772 3938 -1 /data/user_de/0/com.verizon.obdm_permissions/cache
+64772 3939 -1 /data/user_de/0/com.verizon.obdm_permissions/code_cache
+64772 2197 -1 /data/user_de/0/com.android.dreams.basic
+64772 2198 -1 /data/user_de/0/com.android.dreams.basic/cache
+64772 2199 -1 /data/user_de/0/com.android.dreams.basic/code_cache
+64772 4037 -1 /data/user_de/0/com.google.android.as
+64772 4038 -1 /data/user_de/0/com.google.android.as/cache
+64772 4039 -1 /data/user_de/0/com.google.android.as/code_cache
+64772 6389 -1 /data/user_de/0/com.google.android.as/code_cache/com.android.opengl.shaders_cache
+64772 6390 -1 /data/user_de/0/com.google.android.as/code_cache/com.android.skia.shaders_cache
+64772 2209 -1 /data/user_de/0/com.android.se
+64772 2210 -1 /data/user_de/0/com.android.se/cache
+64772 2211 -1 /data/user_de/0/com.android.se/code_cache
+64772 2215 -1 /data/user_de/0/com.android.bips
+64772 2216 -1 /data/user_de/0/com.android.bips/cache
+64772 2217 -1 /data/user_de/0/com.android.bips/code_cache
+64772 2222 -1 /data/user_de/0/com.android.theme.icon_pack.circular.settings
+64772 2223 -1 /data/user_de/0/com.android.theme.icon_pack.circular.settings/cache
+64772 2224 -1 /data/user_de/0/com.android.theme.icon_pack.circular.settings/code_cache
+64772 2227 -1 /data/user_de/0/com.qti.xdivert
+64772 2228 -1 /data/user_de/0/com.qti.xdivert/cache
+64772 2229 -1 /data/user_de/0/com.qti.xdivert/code_cache
+64772 2233 -1 /data/user_de/0/com.android.musicfx
+64772 2234 -1 /data/user_de/0/com.android.musicfx/cache
+64772 2235 -1 /data/user_de/0/com.android.musicfx/code_cache
+64772 2239 -1 /data/user_de/0/com.android.bluetooth.auto_generated_rro_vendor__
+64772 2240 -1 /data/user_de/0/com.android.bluetooth.auto_generated_rro_vendor__/cache
+64772 2241 -1 /data/user_de/0/com.android.bluetooth.auto_generated_rro_vendor__/code_cache
+64772 2245 -1 /data/user_de/0/com.android.cellbroadcastreceiver
+64772 2246 -1 /data/user_de/0/com.android.cellbroadcastreceiver/cache
+64772 2247 -1 /data/user_de/0/com.android.cellbroadcastreceiver/code_cache
+64772 3454 -1 /data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs
+64772 3457 -1 /data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/com.android.cellbroadcastreceiver_preferences.xml
+64772 3456 -1 /data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/_has_set_default_values.xml
+64772 2251 -1 /data/user_de/0/android.telephony.overlay.cmcc
+64772 2252 -1 /data/user_de/0/android.telephony.overlay.cmcc/cache
+64772 2253 -1 /data/user_de/0/android.telephony.overlay.cmcc/code_cache
+64772 2258 -1 /data/user_de/0/com.android.theme.icon.teardrop
+64772 2259 -1 /data/user_de/0/com.android.theme.icon.teardrop/cache
+64772 2260 -1 /data/user_de/0/com.android.theme.icon.teardrop/code_cache
+64772 3954 -1 /data/user_de/0/com.google.android.soundpicker
+64772 3955 -1 /data/user_de/0/com.google.android.soundpicker/cache
+64772 3956 -1 /data/user_de/0/com.google.android.soundpicker/code_cache
+64772 2269 -1 /data/user_de/0/com.android.keychain
+64772 2270 -1 /data/user_de/0/com.android.keychain/cache
+64772 2271 -1 /data/user_de/0/com.android.keychain/code_cache
+64772 3883 -1 /data/user_de/0/com.google.android.onetimeinitializer
+64772 3884 -1 /data/user_de/0/com.google.android.onetimeinitializer/cache
+64772 3885 -1 /data/user_de/0/com.google.android.onetimeinitializer/code_cache
+64772 4043 -1 /data/user_de/0/com.google.android.gm
+64772 4044 -1 /data/user_de/0/com.google.android.gm/cache
+64772 4045 -1 /data/user_de/0/com.google.android.gm/code_cache
+64772 2293 -1 /data/user_de/0/com.android.calllogbackup
+64772 2294 -1 /data/user_de/0/com.android.calllogbackup/cache
+64772 2295 -1 /data/user_de/0/com.android.calllogbackup/code_cache
+64772 2299 -1 /data/user_de/0/com.android.safetyregulatoryinfo
+64772 2300 -1 /data/user_de/0/com.android.safetyregulatoryinfo/cache
+64772 2301 -1 /data/user_de/0/com.android.safetyregulatoryinfo/code_cache
+64772 3942 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_product__
+64772 3943 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_product__/cache
+64772 3944 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_product__/code_cache
+64772 4479 -1 /data/user_de/0/com.verizon.obdm
+64772 4480 -1 /data/user_de/0/com.verizon.obdm/cache
+64772 4481 -1 /data/user_de/0/com.verizon.obdm/code_cache
+64772 2334 -1 /data/user_de/0/com.android.theme.icon_pack.circular.systemui
+64772 2335 -1 /data/user_de/0/com.android.theme.icon_pack.circular.systemui/cache
+64772 2336 -1 /data/user_de/0/com.android.theme.icon_pack.circular.systemui/code_cache
+64772 2345 -1 /data/user_de/0/com.android.managedprovisioning
+64772 2346 -1 /data/user_de/0/com.android.managedprovisioning/cache
+64772 2347 -1 /data/user_de/0/com.android.managedprovisioning/code_cache
+64772 2351 -1 /data/user_de/0/com.android.soundpicker
+64772 2352 -1 /data/user_de/0/com.android.soundpicker/cache
+64772 2353 -1 /data/user_de/0/com.android.soundpicker/code_cache
+64772 3972 -1 /data/user_de/0/com.google.android.configupdater
+64772 3973 -1 /data/user_de/0/com.google.android.configupdater/cache
+64772 3974 -1 /data/user_de/0/com.google.android.configupdater/code_cache
+64772 4097 -1 /data/user_de/0/com.google.android.angle
+64772 4098 -1 /data/user_de/0/com.google.android.angle/cache
+64772 4099 -1 /data/user_de/0/com.google.android.angle/code_cache
+64772 2381 -1 /data/user_de/0/com.android.wallpaper.livepicker
+64772 2382 -1 /data/user_de/0/com.android.wallpaper.livepicker/cache
+64772 2383 -1 /data/user_de/0/com.android.wallpaper.livepicker/code_cache
+64772 4109 -1 /data/user_de/0/com.google.android.music
+64772 4110 -1 /data/user_de/0/com.google.android.music/cache
+64772 4111 -1 /data/user_de/0/com.google.android.music/code_cache
+64772 2411 -1 /data/user_de/0/com.android.bookmarkprovider
+64772 2412 -1 /data/user_de/0/com.android.bookmarkprovider/cache
+64772 2413 -1 /data/user_de/0/com.android.bookmarkprovider/code_cache
+64772 2417 -1 /data/user_de/0/com.android.theme.icon_pack.filled.launcher
+64772 2418 -1 /data/user_de/0/com.android.theme.icon_pack.filled.launcher/cache
+64772 2419 -1 /data/user_de/0/com.android.theme.icon_pack.filled.launcher/code_cache
+64772 3978 -1 /data/user_de/0/com.google.android.overlay.googlewebview
+64772 3979 -1 /data/user_de/0/com.google.android.overlay.googlewebview/cache
+64772 3980 -1 /data/user_de/0/com.google.android.overlay.googlewebview/code_cache
+64772 2428 -1 /data/user_de/0/com.android.cts.ctsshim
+64772 2429 -1 /data/user_de/0/com.android.cts.ctsshim/cache
+64772 2430 -1 /data/user_de/0/com.android.cts.ctsshim/code_cache
+64772 2433 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_vendor__
+64772 2434 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_vendor__/cache
+64772 2435 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_vendor__/code_cache
+64772 2451 -1 /data/user_de/0/com.qualcomm.qti.services.secureui
+64772 2452 -1 /data/user_de/0/com.qualcomm.qti.services.secureui/cache
+64772 2453 -1 /data/user_de/0/com.qualcomm.qti.services.secureui/code_cache
+64772 2457 -1 /data/user_de/0/com.android.vpndialogs
+64772 2458 -1 /data/user_de/0/com.android.vpndialogs/cache
+64772 2459 -1 /data/user_de/0/com.android.vpndialogs/code_cache
+64772 2469 -1 /data/user_de/0/com.android.theme.icon_pack.filled.themepicker
+64772 2470 -1 /data/user_de/0/com.android.theme.icon_pack.filled.themepicker/cache
+64772 2471 -1 /data/user_de/0/com.android.theme.icon_pack.filled.themepicker/code_cache
+64772 2474 -1 /data/user_de/0/com.android.wallpaperbackup
+64772 2475 -1 /data/user_de/0/com.android.wallpaperbackup/cache
+64772 2476 -1 /data/user_de/0/com.android.wallpaperbackup/code_cache
+64772 2480 -1 /data/user_de/0/com.android.providers.blockednumber
+64772 2481 -1 /data/user_de/0/com.android.providers.blockednumber/cache
+64772 2482 -1 /data/user_de/0/com.android.providers.blockednumber/code_cache
+64772 3449 -1 /data/user_de/0/com.android.providers.blockednumber/shared_prefs
+64772 2499 -1 /data/user_de/0/com.android.emergency
+64772 2500 -1 /data/user_de/0/com.android.emergency/cache
+64772 2501 -1 /data/user_de/0/com.android.emergency/code_cache
+64772 5824 -1 /data/user_de/0/com.android.emergency/shared_prefs
+64772 5848 -1 /data/user_de/0/com.android.emergency/shared_prefs/com.android.emergency_preferences.xml
+64772 2510 -1 /data/user_de/0/com.android.theme.color.orchid
+64772 2511 -1 /data/user_de/0/com.android.theme.color.orchid/cache
+64772 2512 -1 /data/user_de/0/com.android.theme.color.orchid/code_cache
+64772 4297 -1 /data/user_de/0/com.google.android.gms
+64772 4298 -1 /data/user_de/0/com.google.android.gms/cache
+64772 4983 -1 /data/user_de/0/com.google.android.gms/cache/.stage_update.lock
+64772 4299 -1 /data/user_de/0/com.google.android.gms/code_cache
+64772 4749 -1 /data/user_de/0/com.google.android.gms/code_cache/com.android.opengl.shaders_cache
+64772 4701 -1 /data/user_de/0/com.google.android.gms/code_cache/com.android.skia.shaders_cache
+64772 4969 -1 /data/user_de/0/com.google.android.gms/shared_prefs
+64772 4810 -1 /data/user_de/0/com.google.android.gms/shared_prefs/init.initialized_version.xml
+64772 1580 -1 /data/user_de/0/com.google.android.gms/shared_prefs/QosTierPref.xml
+64772 6556 -1 /data/user_de/0/com.google.android.gms/shared_prefs/ChimeraConfigService.xml
+64772 2268 -1 /data/user_de/0/com.google.android.gms/shared_prefs/gservices-direboot-cache.xml
+64772 4982 -1 /data/user_de/0/com.google.android.gms/app_chimera
+64772 4984 -1 /data/user_de/0/com.google.android.gms/app_chimera/m
+64772 4986 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000
+64772 4987 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/AdsDynamite.apk
+64772 4989 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/n
+64772 9029 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat
+64772 9030 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/arm64
+64772 9032 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/arm64/AdsDynamite.odex
+64772 9033 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/arm64/AdsDynamite.vdex
+64772 9031 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/AdsDynamite.apk.prof
+64772 4991 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000001
+64772 4992 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000001/CronetDynamite.apk
+64772 5001 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002
+64772 5002 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/DynamiteLoader.apk
+64772 9042 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat
+64772 9043 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/arm64
+64772 9045 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/arm64/DynamiteLoader.odex
+64772 9046 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/arm64/DynamiteLoader.vdex
+64772 9044 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/DynamiteLoader.apk.prof
+64772 5004 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000003
+64772 5005 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000003/DynamiteModulesA.apk
+64772 5012 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004
+64772 5013 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/DynamiteModulesC.apk
+64772 9036 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat
+64772 9037 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/arm64
+64772 9039 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/arm64/DynamiteModulesC.odex
+64772 9040 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/arm64/DynamiteModulesC.vdex
+64772 9038 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/DynamiteModulesC.apk.prof
+64772 5015 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005
+64772 5016 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/GoogleCertificates.apk
+64772 9048 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat
+64772 9049 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm64
+64772 9051 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm64/GoogleCertificates.odex
+64772 9052 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm64/GoogleCertificates.vdex
+64772 9050 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/GoogleCertificates.apk.prof
+64772 9054 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm
+64772 9055 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm/GoogleCertificates.odex
+64772 9056 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm/GoogleCertificates.vdex
+64772 5018 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000006
+64772 5019 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000006/MapsDynamite.apk
+64772 5021 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000007
+64772 5022 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000007/MeasurementDynamite.apk
+64772 5032 -1 /data/user_de/0/com.google.android.gms/app_chimera/.config.lock
+64772 6744 -1 /data/user_de/0/com.google.android.gms/app_chimera/current_fileapks.pb
+64772 5035 -1 /data/user_de/0/com.google.android.gms/app_chimera/stored_modulesets.pb
+64772 5039 -1 /data/user_de/0/com.google.android.gms/app_chimera/current_config.fb
+64772 5033 -1 /data/user_de/0/com.google.android.gms/files
+64772 5034 -1 /data/user_de/0/com.google.android.gms/files/gmscore_global_dirs.txt
+64772 5040 -1 /data/user_de/0/com.google.android.gms/app_extracted_libs
+64772 5044 -1 /data/user_de/0/com.google.android.gms/databases
+64772 5045 -1 /data/user_de/0/com.google.android.gms/databases/phenotype.db
+64772 5046 -1 /data/user_de/0/com.google.android.gms/databases/phenotype.db-journal
+64772 1931 -1 /data/user_de/0/com.google.android.gms/databases/playlog.db
+64772 2533 -1 /data/user_de/0/com.qualcomm.qti.confdialer
+64772 2534 -1 /data/user_de/0/com.qualcomm.qti.confdialer/cache
+64772 2535 -1 /data/user_de/0/com.qualcomm.qti.confdialer/code_cache
+64772 2539 -1 /data/user_de/0/com.android.traceur
+64772 2540 -1 /data/user_de/0/com.android.traceur/cache
+64772 2541 -1 /data/user_de/0/com.android.traceur/code_cache
+64772 2545 -1 /data/user_de/0/com.google.pixel.crosshatch.gamedriver
+64772 2546 -1 /data/user_de/0/com.google.pixel.crosshatch.gamedriver/cache
+64772 2547 -1 /data/user_de/0/com.google.pixel.crosshatch.gamedriver/code_cache
+64772 4026 -1 /data/user_de/0/com.android.theme.font.arvolato
+64772 4027 -1 /data/user_de/0/com.android.theme.font.arvolato/cache
+64772 4028 -1 /data/user_de/0/com.android.theme.font.arvolato/code_cache
+64772 2599 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_narrow_back
+64772 2600 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_narrow_back/cache
+64772 2601 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_narrow_back/code_cache
+64772 2615 -1 /data/user_de/0/com.android.theme.icon_pack.circular.android
+64772 2616 -1 /data/user_de/0/com.android.theme.icon_pack.circular.android/cache
+64772 2617 -1 /data/user_de/0/com.android.theme.icon_pack.circular.android/code_cache
+64772 4008 -1 /data/user_de/0/com.google.android.apps.work.oobconfig
+64772 4009 -1 /data/user_de/0/com.google.android.apps.work.oobconfig/cache
+64772 4010 -1 /data/user_de/0/com.google.android.apps.work.oobconfig/code_cache
+64772 4014 -1 /data/user_de/0/com.android.hotwordenrollment.xgoogle
+64772 4015 -1 /data/user_de/0/com.android.hotwordenrollment.xgoogle/cache
+64772 4016 -1 /data/user_de/0/com.android.hotwordenrollment.xgoogle/code_cache
+64772 4020 -1 /data/user_de/0/com.google.android.pixel.setupwizard
+64772 4021 -1 /data/user_de/0/com.google.android.pixel.setupwizard/cache
+64772 4022 -1 /data/user_de/0/com.google.android.pixel.setupwizard/code_cache
+64772 4031 -1 /data/user_de/0/com.google.android.deskclock
+64772 4032 -1 /data/user_de/0/com.google.android.deskclock/cache
+64772 4033 -1 /data/user_de/0/com.google.android.deskclock/code_cache
+64772 1447 -1 /data/user_de/0/com.google.android.deskclock/shared_prefs
+64772 1869 -1 /data/user_de/0/com.google.android.deskclock/shared_prefs/com.google.android.deskclock_preferences.xml
+64772 2360 -1 /data/user_de/0/com.google.android.deskclock/databases
+64772 2376 -1 /data/user_de/0/com.google.android.deskclock/databases/alarms.db
+64772 2378 -1 /data/user_de/0/com.google.android.deskclock/databases/alarms.db-journal
+64772 4049 -1 /data/user_de/0/com.google.android.carrier
+64772 4050 -1 /data/user_de/0/com.google.android.carrier/cache
+64772 4051 -1 /data/user_de/0/com.google.android.carrier/code_cache
+64772 5029 -1 /data/user_de/0/com.google.android.carrier/shared_prefs
+64772 6892 -1 /data/user_de/0/com.google.android.carrier/shared_prefs/com.google.android.carrier_preferences.xml
+64772 6056 -1 /data/user_de/0/com.google.android.carrier/shared_prefs/com.google.android.gms.appid.xml
+64772 1408 -1 /data/user_de/0/com.google.android.carrier/files
+64772 5900 -1 /data/user_de/0/com.google.android.carrier/no_backup
+64772 5901 -1 /data/user_de/0/com.google.android.carrier/no_backup/com.google.android.gms.appid-no-backup
+64772 6055 -1 /data/user_de/0/com.google.android.carrier/no_backup/com.google.InstanceId.properties
+64772 4073 -1 /data/user_de/0/com.google.android.setupwizard
+64772 4074 -1 /data/user_de/0/com.google.android.setupwizard/cache
+64772 4075 -1 /data/user_de/0/com.google.android.setupwizard/code_cache
+64772 4945 -1 /data/user_de/0/com.google.android.setupwizard/shared_prefs
+64772 3780 -1 /data/user_de/0/com.google.android.setupwizard/shared_prefs/SetupWizardPrefs.xml
+64772 1595 -1 /data/user_de/0/com.google.android.setupwizard/shared_prefs/SetupWizardLocalPrefs.xml
+64772 4091 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_product__
+64772 4092 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_product__/cache
+64772 4093 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_product__/code_cache
+64772 4127 -1 /data/user_de/0/com.android.sdm.plugins.diagmon
+64772 4128 -1 /data/user_de/0/com.android.sdm.plugins.diagmon/cache
+64772 4129 -1 /data/user_de/0/com.android.sdm.plugins.diagmon/code_cache
+64772 4151 -1 /data/user_de/0/com.android.providers.settings.auto_generated_rro_product__
+64772 4152 -1 /data/user_de/0/com.android.providers.settings.auto_generated_rro_product__/cache
+64772 4153 -1 /data/user_de/0/com.android.providers.settings.auto_generated_rro_product__/code_cache
+64772 4163 -1 /data/user_de/0/com.google.audio.hearing.visualization.accessibility.scribe
+64772 4164 -1 /data/user_de/0/com.google.audio.hearing.visualization.accessibility.scribe/cache
+64772 4165 -1 /data/user_de/0/com.google.audio.hearing.visualization.accessibility.scribe/code_cache
+64772 4169 -1 /data/user_de/0/com.google.android.captiveportallogin
+64772 4170 -1 /data/user_de/0/com.google.android.captiveportallogin/cache
+64772 4171 -1 /data/user_de/0/com.google.android.captiveportallogin/code_cache
+64772 4181 -1 /data/user_de/0/com.google.mds.permissions
+64772 4182 -1 /data/user_de/0/com.google.mds.permissions/cache
+64772 4183 -1 /data/user_de/0/com.google.mds.permissions/code_cache
+64772 4187 -1 /data/user_de/0/com.google.android.apps.docs
+64772 4188 -1 /data/user_de/0/com.google.android.apps.docs/cache
+64772 4189 -1 /data/user_de/0/com.google.android.apps.docs/code_cache
+64772 4199 -1 /data/user_de/0/com.google.android.apps.tips
+64772 4200 -1 /data/user_de/0/com.google.android.apps.tips/cache
+64772 4201 -1 /data/user_de/0/com.google.android.apps.tips/code_cache
+64772 4215 -1 /data/user_de/0/com.google.android.markup
+64772 4216 -1 /data/user_de/0/com.google.android.markup/cache
+64772 4217 -1 /data/user_de/0/com.google.android.markup/code_cache
+64772 4239 -1 /data/user_de/0/com.google.android.contacts
+64772 4240 -1 /data/user_de/0/com.google.android.contacts/cache
+64772 4241 -1 /data/user_de/0/com.google.android.contacts/code_cache
+64772 4245 -1 /data/user_de/0/com.google.android.syncadapters.contacts
+64772 4246 -1 /data/user_de/0/com.google.android.syncadapters.contacts/cache
+64772 4247 -1 /data/user_de/0/com.google.android.syncadapters.contacts/code_cache
+64772 4316 -1 /data/user_de/0/com.google.android.tag
+64772 4317 -1 /data/user_de/0/com.google.android.tag/cache
+64772 4318 -1 /data/user_de/0/com.google.android.tag/code_cache
+64772 4280 -1 /data/user_de/0/com.android.bips.auto_generated_rro_product__
+64772 4281 -1 /data/user_de/0/com.android.bips.auto_generated_rro_product__/cache
+64772 4282 -1 /data/user_de/0/com.android.bips.auto_generated_rro_product__/code_cache
+64772 4286 -1 /data/user_de/0/com.google.android.packageinstaller
+64772 4287 -1 /data/user_de/0/com.google.android.packageinstaller/cache
+64772 4288 -1 /data/user_de/0/com.google.android.packageinstaller/code_cache
+64772 6072 -1 /data/user_de/0/com.google.android.packageinstaller/no_backup
+64772 4292 -1 /data/user_de/0/com.google.android.apps.customization.pixel
+64772 4293 -1 /data/user_de/0/com.google.android.apps.customization.pixel/cache
+64772 4294 -1 /data/user_de/0/com.google.android.apps.customization.pixel/code_cache
+64772 4328 -1 /data/user_de/0/com.google.android.overlay.permissioncontroller
+64772 4329 -1 /data/user_de/0/com.google.android.overlay.permissioncontroller/cache
+64772 4330 -1 /data/user_de/0/com.google.android.overlay.permissioncontroller/code_cache
+64772 4334 -1 /data/user_de/0/com.google.android.partnersetup
+64772 4335 -1 /data/user_de/0/com.google.android.partnersetup/cache
+64772 4336 -1 /data/user_de/0/com.google.android.partnersetup/code_cache
+64772 4345 -1 /data/user_de/0/com.google.android.videos
+64772 4346 -1 /data/user_de/0/com.google.android.videos/cache
+64772 4347 -1 /data/user_de/0/com.google.android.videos/code_cache
+64772 4357 -1 /data/user_de/0/com.google.RilConfigService
+64772 4358 -1 /data/user_de/0/com.google.RilConfigService/cache
+64772 4359 -1 /data/user_de/0/com.google.RilConfigService/code_cache
+64772 4363 -1 /data/user_de/0/com.google.SSRestartDetector
+64772 4364 -1 /data/user_de/0/com.google.SSRestartDetector/cache
+64772 4365 -1 /data/user_de/0/com.google.SSRestartDetector/code_cache
+64772 4369 -1 /data/user_de/0/com.customermobile.preload.vzw
+64772 4370 -1 /data/user_de/0/com.customermobile.preload.vzw/cache
+64772 4371 -1 /data/user_de/0/com.customermobile.preload.vzw/code_cache
+64772 4391 -1 /data/user_de/0/com.google.android.feedback
+64772 4392 -1 /data/user_de/0/com.google.android.feedback/cache
+64772 4393 -1 /data/user_de/0/com.google.android.feedback/code_cache
+64772 4397 -1 /data/user_de/0/com.google.android.printservice.recommendation
+64772 4398 -1 /data/user_de/0/com.google.android.printservice.recommendation/cache
+64772 4399 -1 /data/user_de/0/com.google.android.printservice.recommendation/code_cache
+64772 4415 -1 /data/user_de/0/com.google.android.apps.internal.betterbug
+64772 4416 -1 /data/user_de/0/com.google.android.apps.internal.betterbug/cache
+64772 4417 -1 /data/user_de/0/com.google.android.apps.internal.betterbug/code_cache
+64772 4427 -1 /data/user_de/0/com.android.providers.telephony.auto_generated_rro_product__
+64772 4428 -1 /data/user_de/0/com.android.providers.telephony.auto_generated_rro_product__/cache
+64772 4429 -1 /data/user_de/0/com.android.providers.telephony.auto_generated_rro_product__/code_cache
+64772 4449 -1 /data/user_de/0/com.google.android.overlay.pixelconfigcommon
+64772 4450 -1 /data/user_de/0/com.google.android.overlay.pixelconfigcommon/cache
+64772 4451 -1 /data/user_de/0/com.google.android.overlay.pixelconfigcommon/code_cache
+64772 4461 -1 /data/user_de/0/com.google.android.apps.pixelmigrate
+64772 4462 -1 /data/user_de/0/com.google.android.apps.pixelmigrate/cache
+64772 4463 -1 /data/user_de/0/com.google.android.apps.pixelmigrate/code_cache
+64772 4467 -1 /data/user_de/0/com.google.android.settings.intelligence
+64772 4468 -1 /data/user_de/0/com.google.android.settings.intelligence/cache
+64772 4469 -1 /data/user_de/0/com.google.android.settings.intelligence/code_cache
+64772 4473 -1 /data/user_de/0/com.google.android.projection.gearhead
+64772 4474 -1 /data/user_de/0/com.google.android.projection.gearhead/cache
+64772 4475 -1 /data/user_de/0/com.google.android.projection.gearhead/code_cache
+64772 4509 -1 /data/user_de/0/com.android.omadm.service
+64772 4510 -1 /data/user_de/0/com.android.omadm.service/cache
+64772 4512 -1 /data/user_de/0/com.android.omadm.service/code_cache
+64772 4540 -1 /data/user_de/0/com.google.googlecbrs
+64772 4541 -1 /data/user_de/0/com.google.googlecbrs/cache
+64772 4542 -1 /data/user_de/0/com.google.googlecbrs/code_cache
+64772 4546 -1 /data/user_de/0/com.google.vr.vrcore
+64772 4547 -1 /data/user_de/0/com.google.vr.vrcore/cache
+64772 4549 -1 /data/user_de/0/com.google.vr.vrcore/code_cache
+64772 4559 -1 /data/user_de/0/com.google.vr.apps.ornament
+64772 4560 -1 /data/user_de/0/com.google.vr.apps.ornament/cache
+64772 4561 -1 /data/user_de/0/com.google.vr.apps.ornament/code_cache
+64772 4565 -1 /data/user_de/0/com.google.android.gms.location.history
+64772 4566 -1 /data/user_de/0/com.google.android.gms.location.history/cache
+64772 4567 -1 /data/user_de/0/com.google.android.gms.location.history/code_cache
+64772 4572 -1 /data/user_de/0/com.android.pixellogger
+64772 4573 -1 /data/user_de/0/com.android.pixellogger/cache
+64772 4574 -1 /data/user_de/0/com.android.pixellogger/code_cache
+64772 4602 -1 /data/user_de/0/com.google.android.apps.helprtc
+64772 4603 -1 /data/user_de/0/com.google.android.apps.helprtc/cache
+64772 4604 -1 /data/user_de/0/com.google.android.apps.helprtc/code_cache
+64772 4614 -1 /data/user_de/0/com.google.mds
+64772 4615 -1 /data/user_de/0/com.google.mds/cache
+64772 4616 -1 /data/user_de/0/com.google.mds/code_cache
+64772 4620 -1 /data/user_de/0/com.android.phone.auto_generated_rro_product__
+64772 4621 -1 /data/user_de/0/com.android.phone.auto_generated_rro_product__/cache
+64772 4622 -1 /data/user_de/0/com.android.phone.auto_generated_rro_product__/code_cache
+64772 4638 -1 /data/user_de/0/com.google.android.apps.gcs
+64772 4639 -1 /data/user_de/0/com.google.android.apps.gcs/cache
+64772 4640 -1 /data/user_de/0/com.google.android.apps.gcs/code_cache
+64772 4662 -1 /data/user_de/0/com.verizon.llkagent
+64772 4663 -1 /data/user_de/0/com.verizon.llkagent/cache
+64772 4664 -1 /data/user_de/0/com.verizon.llkagent/code_cache
+64772 4668 -1 /data/user_de/0/com.android.vzwomatrigger
+64772 4669 -1 /data/user_de/0/com.android.vzwomatrigger/cache
+64772 4670 -1 /data/user_de/0/com.android.vzwomatrigger/code_cache
+64772 2288 -1 /data/user_de/0/com.android.theme.icon_pack.filled.systemui
+64772 2289 -1 /data/user_de/0/com.android.theme.icon_pack.filled.systemui/cache
+64772 2290 -1 /data/user_de/0/com.android.theme.icon_pack.filled.systemui/code_cache
+64772 2305 -1 /data/user_de/0/com.android.localtransport
+64772 2306 -1 /data/user_de/0/com.android.localtransport/cache
+64772 2307 -1 /data/user_de/0/com.android.localtransport/code_cache
+64772 2317 -1 /data/user_de/0/com.android.carrierdefaultapp
+64772 2318 -1 /data/user_de/0/com.android.carrierdefaultapp/cache
+64772 2319 -1 /data/user_de/0/com.android.carrierdefaultapp/code_cache
+64772 2328 -1 /data/user_de/0/com.android.theme.icon_pack.filled.android
+64772 2329 -1 /data/user_de/0/com.android.theme.icon_pack.filled.android/cache
+64772 2330 -1 /data/user_de/0/com.android.theme.icon_pack.filled.android/code_cache
+64772 3895 -1 /data/user_de/0/com.google.android.apps.diagnosticstool
+64772 3896 -1 /data/user_de/0/com.google.android.apps.diagnosticstool/cache
+64772 3897 -1 /data/user_de/0/com.google.android.apps.diagnosticstool/code_cache
+64772 4055 -1 /data/user_de/0/com.android.sdm.plugins.sprintdm
+64772 4056 -1 /data/user_de/0/com.android.sdm.plugins.sprintdm/cache
+64772 4057 -1 /data/user_de/0/com.android.sdm.plugins.sprintdm/code_cache
+64772 2368 -1 /data/user_de/0/com.android.providers.partnerbookmarks
+64772 2369 -1 /data/user_de/0/com.android.providers.partnerbookmarks/cache
+64772 2370 -1 /data/user_de/0/com.android.providers.partnerbookmarks/code_cache
+64772 2387 -1 /data/user_de/0/com.android.phone.auto_generated_rro_vendor__
+64772 2388 -1 /data/user_de/0/com.android.phone.auto_generated_rro_vendor__/cache
+64772 2389 -1 /data/user_de/0/com.android.phone.auto_generated_rro_vendor__/code_cache
+64772 2399 -1 /data/user_de/0/com.android.theme.icon.squircle
+64772 2400 -1 /data/user_de/0/com.android.theme.icon.squircle/cache
+64772 2401 -1 /data/user_de/0/com.android.theme.icon.squircle/code_cache
+64772 4061 -1 /data/user_de/0/com.android.ramdump
+64772 4062 -1 /data/user_de/0/com.android.ramdump/cache
+64772 4063 -1 /data/user_de/0/com.android.ramdump/code_cache
+64772 2439 -1 /data/user_de/0/com.android.theme.icon_pack.circular.launcher
+64772 2440 -1 /data/user_de/0/com.android.theme.icon_pack.circular.launcher/cache
+64772 2441 -1 /data/user_de/0/com.android.theme.icon_pack.circular.launcher/code_cache
+64772 2445 -1 /data/user_de/0/com.qti.diagservices
+64772 2446 -1 /data/user_de/0/com.qti.diagservices/cache
+64772 2447 -1 /data/user_de/0/com.qti.diagservices/code_cache
+64772 3907 -1 /data/user_de/0/com.google.android.trichromelibrary_386509238
+64772 3908 -1 /data/user_de/0/com.google.android.trichromelibrary_386509238/cache
+64772 3909 -1 /data/user_de/0/com.google.android.trichromelibrary_386509238/code_cache
+64772 2493 -1 /data/user_de/0/com.android.providers.userdictionary
+64772 2494 -1 /data/user_de/0/com.android.providers.userdictionary/cache
+64772 2495 -1 /data/user_de/0/com.android.providers.userdictionary/code_cache
+64772 2505 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural
+64772 2506 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural/cache
+64772 2507 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural/code_cache
+64772 2522 -1 /data/user_de/0/com.android.theme.color.purple
+64772 2523 -1 /data/user_de/0/com.android.theme.color.purple/cache
+64772 2524 -1 /data/user_de/0/com.android.theme.color.purple/code_cache
+64772 2527 -1 /data/user_de/0/com.android.bluetoothmidiservice
+64772 2528 -1 /data/user_de/0/com.android.bluetoothmidiservice/cache
+64772 2529 -1 /data/user_de/0/com.android.bluetoothmidiservice/code_cache
+64772 2550 -1 /data/user_de/0/com.android.bluetooth
+64772 2551 -1 /data/user_de/0/com.android.bluetooth/cache
+64772 2552 -1 /data/user_de/0/com.android.bluetooth/code_cache
+64772 2702 -1 /data/user_de/0/com.android.bluetooth/databases
+64772 2704 -1 /data/user_de/0/com.android.bluetooth/databases/bluetooth_db
+64772 2706 -1 /data/user_de/0/com.android.bluetooth/databases/bluetooth_db-wal
+64772 2707 -1 /data/user_de/0/com.android.bluetooth/databases/bluetooth_db-shm
+64772 3378 -1 /data/user_de/0/com.android.bluetooth/databases/btopp.db
+64772 3379 -1 /data/user_de/0/com.android.bluetooth/databases/btopp.db-journal
+64772 2703 -1 /data/user_de/0/com.android.bluetooth/shared_prefs
+64772 3377 -1 /data/user_de/0/com.android.bluetooth/shared_prefs/bluetooth_volume_map.xml
+64772 3394 -1 /data/user_de/0/com.android.bluetooth/shared_prefs/OPPMGR.xml
+64772 2556 -1 /data/user_de/0/com.qualcomm.timeservice
+64772 2557 -1 /data/user_de/0/com.qualcomm.timeservice/cache
+64772 2558 -1 /data/user_de/0/com.qualcomm.timeservice/code_cache
+64772 2563 -1 /data/user_de/0/com.qualcomm.atfwd
+64772 2564 -1 /data/user_de/0/com.qualcomm.atfwd/cache
+64772 2565 -1 /data/user_de/0/com.qualcomm.atfwd/code_cache
+64772 4067 -1 /data/user_de/0/com.google.intelligence.sense
+64772 4068 -1 /data/user_de/0/com.google.intelligence.sense/cache
+64772 4069 -1 /data/user_de/0/com.google.intelligence.sense/code_cache
+64772 2576 -1 /data/user_de/0/com.qualcomm.embms
+64772 2577 -1 /data/user_de/0/com.qualcomm.embms/cache
+64772 2578 -1 /data/user_de/0/com.qualcomm.embms/code_cache
+64772 2582 -1 /data/user_de/0/com.android.providers.contacts
+64772 2583 -1 /data/user_de/0/com.android.providers.contacts/cache
+64772 2584 -1 /data/user_de/0/com.android.providers.contacts/code_cache
+64772 3412 -1 /data/user_de/0/com.android.providers.contacts/databases
+64772 3413 -1 /data/user_de/0/com.android.providers.contacts/databases/calllog_shadow.db
+64772 3414 -1 /data/user_de/0/com.android.providers.contacts/databases/calllog_shadow.db-journal
+64772 2594 -1 /data/user_de/0/com.android.theme.icon.roundedrect
+64772 2595 -1 /data/user_de/0/com.android.theme.icon.roundedrect/cache
+64772 2596 -1 /data/user_de/0/com.android.theme.icon.roundedrect/code_cache
+64772 2604 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.settings
+64772 2605 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.settings/cache
+64772 2606 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.settings/code_cache
+64772 2609 -1 /data/user_de/0/android.auto_generated_rro_vendor__
+64772 2610 -1 /data/user_de/0/android.auto_generated_rro_vendor__/cache
+64772 2611 -1 /data/user_de/0/android.auto_generated_rro_vendor__/code_cache
+64772 3913 -1 /data/user_de/0/com.android.simappdialog.auto_generated_rro_product__
+64772 3914 -1 /data/user_de/0/com.android.simappdialog.auto_generated_rro_product__/cache
+64772 3915 -1 /data/user_de/0/com.android.simappdialog.auto_generated_rro_product__/code_cache
+64772 3919 -1 /data/user_de/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__
+64772 3920 -1 /data/user_de/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__/cache
+64772 3921 -1 /data/user_de/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__/code_cache
+64772 3925 -1 /data/user_de/0/com.google.android.apps.enterprise.dmagent
+64772 3926 -1 /data/user_de/0/com.google.android.apps.enterprise.dmagent/cache
+64772 3927 -1 /data/user_de/0/com.google.android.apps.enterprise.dmagent/code_cache
+64772 3931 -1 /data/user_de/0/com.google.android.connectivitymonitor
+64772 3932 -1 /data/user_de/0/com.google.android.connectivitymonitor/cache
+64772 3933 -1 /data/user_de/0/com.google.android.connectivitymonitor/code_cache
+64772 3948 -1 /data/user_de/0/com.google.android.apps.messaging
+64772 3949 -1 /data/user_de/0/com.google.android.apps.messaging/cache
+64772 3950 -1 /data/user_de/0/com.google.android.apps.messaging/code_cache
+64772 3966 -1 /data/user_de/0/android.autoinstalls.config.google.nexus
+64772 3967 -1 /data/user_de/0/android.autoinstalls.config.google.nexus/cache
+64772 3968 -1 /data/user_de/0/android.autoinstalls.config.google.nexus/code_cache
+64772 3984 -1 /data/user_de/0/com.google.android.apps.safetyhub
+64772 3985 -1 /data/user_de/0/com.google.android.apps.safetyhub/cache
+64772 3986 -1 /data/user_de/0/com.google.android.apps.safetyhub/code_cache
+64772 1621 -1 /data/user_de/0/com.google.android.apps.safetyhub/files
+64772 5862 -1 /data/user_de/0/com.google.android.apps.safetyhub/files/LockScreenDeviceEncryptedDataStore.pb
+64772 4002 -1 /data/user_de/0/com.google.android.marvin.talkback
+64772 4003 -1 /data/user_de/0/com.google.android.marvin.talkback/cache
+64772 4004 -1 /data/user_de/0/com.google.android.marvin.talkback/code_cache
+64772 4079 -1 /data/user_de/0/com.google.android.netgrapher
+64772 4080 -1 /data/user_de/0/com.google.android.netgrapher/cache
+64772 4081 -1 /data/user_de/0/com.google.android.netgrapher/code_cache
+64772 4085 -1 /data/user_de/0/com.verizon.services
+64772 4086 -1 /data/user_de/0/com.verizon.services/cache
+64772 4087 -1 /data/user_de/0/com.verizon.services/code_cache
+64772 4103 -1 /data/user_de/0/com.google.android.euicc
+64772 4104 -1 /data/user_de/0/com.google.android.euicc/cache
+64772 4105 -1 /data/user_de/0/com.google.android.euicc/code_cache
+64772 4985 -1 /data/user_de/0/com.google.android.euicc/shared_prefs
+64772 6572 -1 /data/user_de/0/com.google.android.euicc/shared_prefs/euicc_google.xml
+64772 6756 -1 /data/user_de/0/com.google.android.euicc/shared_prefs/euicc.xml
+64772 4115 -1 /data/user_de/0/com.google.android.volta
+64772 4116 -1 /data/user_de/0/com.google.android.volta/cache
+64772 4117 -1 /data/user_de/0/com.google.android.volta/code_cache
+64772 4121 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle
+64772 4122 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/cache
+64772 4123 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/code_cache
+64772 5551 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/code_cache/com.android.opengl.shaders_cache
+64772 5552 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/code_cache/com.android.skia.shaders_cache
+64772 4157 -1 /data/user_de/0/com.google.android.apps.wellbeing
+64772 4158 -1 /data/user_de/0/com.google.android.apps.wellbeing/cache
+64772 4159 -1 /data/user_de/0/com.google.android.apps.wellbeing/code_cache
+64772 5349 -1 /data/user_de/0/com.google.android.apps.wellbeing/files
+64772 4904 -1 /data/user_de/0/com.google.android.apps.wellbeing/files/DeviceEncryptedWindDownPreferences.pb
+64772 3018 -1 /data/user_de/0/com.google.android.apps.wellbeing/files/DndPreferences.pb
+64772 4175 -1 /data/user_de/0/com.google.android.accessibility.soundamplifier
+64772 4176 -1 /data/user_de/0/com.google.android.accessibility.soundamplifier/cache
+64772 4177 -1 /data/user_de/0/com.google.android.accessibility.soundamplifier/code_cache
+64772 4193 -1 /data/user_de/0/com.google.android.apps.maps
+64772 4194 -1 /data/user_de/0/com.google.android.apps.maps/cache
+64772 4195 -1 /data/user_de/0/com.google.android.apps.maps/code_cache
+64772 4205 -1 /data/user_de/0/com.google.android.documentsui.theme.pixel
+64772 4206 -1 /data/user_de/0/com.google.android.documentsui.theme.pixel/cache
+64772 4207 -1 /data/user_de/0/com.google.android.documentsui.theme.pixel/code_cache
+64772 4210 -1 /data/user_de/0/com.google.android.modulemetadata
+64772 4211 -1 /data/user_de/0/com.google.android.modulemetadata/cache
+64772 4212 -1 /data/user_de/0/com.google.android.modulemetadata/code_cache
+64772 4221 -1 /data/user_de/0/com.google.android.webview
+64772 4222 -1 /data/user_de/0/com.google.android.webview/cache
+64772 4223 -1 /data/user_de/0/com.google.android.webview/code_cache
+64772 4227 -1 /data/user_de/0/com.google.android.apps.carrier.log
+64772 4228 -1 /data/user_de/0/com.google.android.apps.carrier.log/cache
+64772 4229 -1 /data/user_de/0/com.google.android.apps.carrier.log/code_cache
+64772 4233 -1 /data/user_de/0/com.google.android.networkstack
+64772 4234 -1 /data/user_de/0/com.google.android.networkstack/cache
+64772 4235 -1 /data/user_de/0/com.google.android.networkstack/code_cache
+64772 4934 -1 /data/user_de/0/com.google.android.networkstack/databases
+64772 4935 -1 /data/user_de/0/com.google.android.networkstack/databases/IpMemoryStore.db
+64772 4936 -1 /data/user_de/0/com.google.android.networkstack/databases/IpMemoryStore.db-journal
+64772 4251 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.themepicker
+64772 4252 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.themepicker/cache
+64772 4253 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.themepicker/code_cache
+64772 4256 -1 /data/user_de/0/com.android.server.telecom.auto_generated_rro_product__
+64772 4257 -1 /data/user_de/0/com.android.server.telecom.auto_generated_rro_product__/cache
+64772 4258 -1 /data/user_de/0/com.android.server.telecom.auto_generated_rro_product__/code_cache
+64772 4262 -1 /data/user_de/0/com.google.android.overlay.googleconfig
+64772 4263 -1 /data/user_de/0/com.google.android.overlay.googleconfig/cache
+64772 4264 -1 /data/user_de/0/com.google.android.overlay.googleconfig/code_cache
+64772 4268 -1 /data/user_de/0/com.google.android.calculator
+64772 4269 -1 /data/user_de/0/com.google.android.calculator/cache
+64772 4270 -1 /data/user_de/0/com.google.android.calculator/code_cache
+64772 7074 -1 /data/user_de/0/com.google.android.calculator/code_cache/com.android.opengl.shaders_cache
+64772 7075 -1 /data/user_de/0/com.google.android.calculator/code_cache/com.android.skia.shaders_cache
+64772 4274 -1 /data/user_de/0/com.android.chrome
+64772 4275 -1 /data/user_de/0/com.android.chrome/cache
+64772 4276 -1 /data/user_de/0/com.android.chrome/code_cache
+64772 4303 -1 /data/user_de/0/com.google.android.gsf
+64772 4304 -1 /data/user_de/0/com.google.android.gsf/cache
+64772 4305 -1 /data/user_de/0/com.google.android.gsf/code_cache
+64772 4309 -1 /data/user_de/0/com.google.android.ims
+64772 4310 -1 /data/user_de/0/com.google.android.ims/cache
+64772 4311 -1 /data/user_de/0/com.google.android.ims/code_cache
+64772 4322 -1 /data/user_de/0/com.google.android.tts
+64772 4323 -1 /data/user_de/0/com.google.android.tts/cache
+64772 4324 -1 /data/user_de/0/com.google.android.tts/code_cache
+64772 9198 -1 /data/user_de/0/com.google.android.tts/shared_prefs
+64772 9256 -1 /data/user_de/0/com.google.android.tts/app_pm_workaround
+64772 9257 -1 /data/user_de/0/com.google.android.tts/files
+64772 9113 -1 /data/user_de/0/com.google.android.tts/files/integrity_cache
+64772 9225 -1 /data/user_de/0/com.google.android.tts/app_voices_greco_v16
+64772 9242 -1 /data/user_de/0/com.google.android.tts/app_patts
+64772 5865 -1 /data/user_de/0/com.google.android.tts/app_voices
+64772 4340 -1 /data/user_de/0/com.google.android.apps.wallpaper.nexus
+64772 4341 -1 /data/user_de/0/com.google.android.apps.wallpaper.nexus/cache
+64772 4342 -1 /data/user_de/0/com.google.android.apps.wallpaper.nexus/code_cache
+64772 4351 -1 /data/user_de/0/com.google.android.apps.nexuslauncher
+64772 4352 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/cache
+64772 4353 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/code_cache
+64772 8109 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/code_cache/com.android.skia.shaders_cache
+64772 8112 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/code_cache/com.android.opengl.shaders_cache
+64772 4375 -1 /data/user_de/0/com.android.theme.font.arbutussource
+64772 4376 -1 /data/user_de/0/com.android.theme.font.arbutussource/cache
+64772 4377 -1 /data/user_de/0/com.android.theme.font.arbutussource/code_cache
+64772 4380 -1 /data/user_de/0/com.android.theme.font.rubikrubik
+64772 4381 -1 /data/user_de/0/com.android.theme.font.rubikrubik/cache
+64772 4382 -1 /data/user_de/0/com.android.theme.font.rubikrubik/code_cache
+64772 4385 -1 /data/user_de/0/com.android.providers.contacts.auto_generated_rro_product__
+64772 4386 -1 /data/user_de/0/com.android.providers.contacts.auto_generated_rro_product__/cache
+64772 4387 -1 /data/user_de/0/com.android.providers.contacts.auto_generated_rro_product__/code_cache
+64772 4403 -1 /data/user_de/0/com.google.android.apps.photos
+64772 4404 -1 /data/user_de/0/com.google.android.apps.photos/cache
+64772 4405 -1 /data/user_de/0/com.google.android.apps.photos/code_cache
+64772 4409 -1 /data/user_de/0/com.google.android.calendar
+64772 4410 -1 /data/user_de/0/com.google.android.calendar/cache
+64772 4411 -1 /data/user_de/0/com.google.android.calendar/code_cache
+64772 4421 -1 /data/user_de/0/com.android.sdm.plugins.dcmo
+64772 4422 -1 /data/user_de/0/com.android.sdm.plugins.dcmo/cache
+64772 4423 -1 /data/user_de/0/com.android.sdm.plugins.dcmo/code_cache
+64772 4433 -1 /data/user_de/0/com.android.server.wifistack.permissionconfig
+64772 4434 -1 /data/user_de/0/com.android.server.wifistack.permissionconfig/cache
+64772 4435 -1 /data/user_de/0/com.android.server.wifistack.permissionconfig/code_cache
+64772 4443 -1 /data/user_de/0/com.google.android.networkstack.permissionconfig
+64772 4444 -1 /data/user_de/0/com.google.android.networkstack.permissionconfig/cache
+64772 4445 -1 /data/user_de/0/com.google.android.networkstack.permissionconfig/code_cache
+64772 4455 -1 /data/user_de/0/com.google.android.wfcactivation
+64772 4456 -1 /data/user_de/0/com.google.android.wfcactivation/cache
+64772 4457 -1 /data/user_de/0/com.google.android.wfcactivation/code_cache
+64772 4485 -1 /data/user_de/0/com.google.android.apps.scone
+64772 4486 -1 /data/user_de/0/com.google.android.apps.scone/cache
+64772 4487 -1 /data/user_de/0/com.google.android.apps.scone/code_cache
+64772 1601 -1 /data/user_de/0/com.google.android.apps.scone/databases
+64772 1602 -1 /data/user_de/0/com.google.android.apps.scone/databases/call_data_logs.db
+64772 1604 -1 /data/user_de/0/com.google.android.apps.scone/databases/call_data_logs.db-journal
+64772 1617 -1 /data/user_de/0/com.google.android.apps.scone/databases/androidx.work.workdb
+64772 1622 -1 /data/user_de/0/com.google.android.apps.scone/databases/androidx.work.workdb-wal
+64772 1623 -1 /data/user_de/0/com.google.android.apps.scone/databases/androidx.work.workdb-shm
+64772 1757 -1 /data/user_de/0/com.google.android.apps.scone/databases/com.google.modemservice
+64772 1759 -1 /data/user_de/0/com.google.android.apps.scone/databases/com.google.modemservice-journal
+64772 1628 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs
+64772 5867 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs/scone_awareness.xml
+64772 5868 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs/scone_oos_timeline.xml
+64772 6973 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs/scone_phenotype.xml
+64772 4491 -1 /data/user_de/0/com.google.android.apps.turbo
+64772 4492 -1 /data/user_de/0/com.google.android.apps.turbo/cache
+64772 4493 -1 /data/user_de/0/com.google.android.apps.turbo/code_cache
+64772 4503 -1 /data/user_de/0/com.google.android.tetheringentitlement
+64772 4504 -1 /data/user_de/0/com.google.android.tetheringentitlement/cache
+64772 4505 -1 /data/user_de/0/com.google.android.tetheringentitlement/code_cache
+64772 4516 -1 /data/user_de/0/com.google.android.apps.dreamliner
+64772 4517 -1 /data/user_de/0/com.google.android.apps.dreamliner/cache
+64772 4518 -1 /data/user_de/0/com.google.android.apps.dreamliner/code_cache
+64772 4522 -1 /data/user_de/0/com.google.android.apps.wearables.maestro.companion
+64772 4523 -1 /data/user_de/0/com.google.android.apps.wearables.maestro.companion/cache
+64772 4524 -1 /data/user_de/0/com.google.android.apps.wearables.maestro.companion/code_cache
+64772 4528 -1 /data/user_de/0/com.google.android.hiddenmenu
+64772 4529 -1 /data/user_de/0/com.google.android.hiddenmenu/cache
+64772 4530 -1 /data/user_de/0/com.google.android.hiddenmenu/code_cache
+64772 4534 -1 /data/user_de/0/com.google.android.apps.wallpaper
+64772 4535 -1 /data/user_de/0/com.google.android.apps.wallpaper/cache
+64772 4536 -1 /data/user_de/0/com.google.android.apps.wallpaper/code_cache
+64772 4578 -1 /data/user_de/0/com.google.android.hardwareinfo
+64772 4579 -1 /data/user_de/0/com.google.android.hardwareinfo/cache
+64772 4580 -1 /data/user_de/0/com.google.android.hardwareinfo/code_cache
+64772 4584 -1 /data/user_de/0/com.qti.ltebc
+64772 4585 -1 /data/user_de/0/com.qti.ltebc/cache
+64772 4586 -1 /data/user_de/0/com.qti.ltebc/code_cache
+64772 4590 -1 /data/user_de/0/com.google.android.dreamlinerupdater
+64772 4591 -1 /data/user_de/0/com.google.android.dreamlinerupdater/cache
+64772 4592 -1 /data/user_de/0/com.google.android.dreamlinerupdater/code_cache
+64772 4596 -1 /data/user_de/0/com.tmobile.planprovider
+64772 4597 -1 /data/user_de/0/com.tmobile.planprovider/cache
+64772 4598 -1 /data/user_de/0/com.tmobile.planprovider/code_cache
+64772 4608 -1 /data/user_de/0/qualcomm.com.vzw_msdc_api
+64772 4609 -1 /data/user_de/0/qualcomm.com.vzw_msdc_api/cache
+64772 4610 -1 /data/user_de/0/qualcomm.com.vzw_msdc_api/code_cache
+64772 4626 -1 /data/user_de/0/com.google.android.gms.setup
+64772 4627 -1 /data/user_de/0/com.google.android.gms.setup/cache
+64772 4628 -1 /data/user_de/0/com.google.android.gms.setup/code_cache
+64772 4632 -1 /data/user_de/0/android.auto_generated_rro_product__
+64772 4633 -1 /data/user_de/0/android.auto_generated_rro_product__/cache
+64772 4634 -1 /data/user_de/0/android.auto_generated_rro_product__/code_cache
+64772 4644 -1 /data/user_de/0/com.google.android.GoogleCamera
+64772 4645 -1 /data/user_de/0/com.google.android.GoogleCamera/cache
+64772 4646 -1 /data/user_de/0/com.google.android.GoogleCamera/code_cache
+64772 9621 -1 /data/user_de/0/com.google.android.GoogleCamera/code_cache/com.android.opengl.shaders_cache
+64772 9623 -1 /data/user_de/0/com.google.android.GoogleCamera/code_cache/com.android.skia.shaders_cache
+64772 4650 -1 /data/user_de/0/com.google.android.vendorloggingservice
+64772 4651 -1 /data/user_de/0/com.google.android.vendorloggingservice/cache
+64772 4652 -1 /data/user_de/0/com.google.android.vendorloggingservice/code_cache
+64772 4656 -1 /data/user_de/0/com.android.connectivity.metrics
+64772 4657 -1 /data/user_de/0/com.android.connectivity.metrics/cache
+64772 4658 -1 /data/user_de/0/com.android.connectivity.metrics/code_cache
+64772 4674 -1 /data/user_de/0/com.google.android.storagemanager
+64772 4675 -1 /data/user_de/0/com.google.android.storagemanager/cache
+64772 4676 -1 /data/user_de/0/com.google.android.storagemanager/code_cache
+64772 108 -1 /data/media
+64772 2792 -1 /data/media/0
+64772 3330 -1 /data/media/0/Android
+64772 3331 -1 /data/media/0/Android/obb
+64772 3599 -1 /data/media/0/Android/obb/.nomedia
+64772 1566 -1 /data/media/0/Android/data
+64772 1567 -1 /data/media/0/Android/data/.nomedia
+64772 1568 -1 /data/media/0/Android/data/com.google.android.gms
+64772 1569 -1 /data/media/0/Android/data/com.google.android.gms/files
+64772 1630 -1 /data/media/0/Android/data/com.google.android.music
+64772 1631 -1 /data/media/0/Android/data/com.google.android.music/files
+64772 1634 -1 /data/media/0/Android/data/com.google.android.music/files/._playmusicid
+64772 1993 -1 /data/media/0/Android/data/com.google.android.youtube
+64772 2001 -1 /data/media/0/Android/data/com.google.android.youtube/files
+64772 2019 -1 /data/media/0/Android/data/com.google.android.youtube/cache
+64772 2059 -1 /data/media/0/Android/data/com.google.android.youtube/cache/exo
+64772 2191 -1 /data/media/0/Android/data/com.google.android.youtube/cache/exo/7bf85c38c57e9cd6.uid
+64772 4821 -1 /data/media/0/Android/data/com.qti.ltebc
+64772 4825 -1 /data/media/0/Android/data/com.qti.ltebc/files
+64772 5043 -1 /data/media/0/Android/data/com.android.pixellogger
+64772 4998 -1 /data/media/0/Android/data/com.android.pixellogger/files
+64772 4877 -1 /data/media/0/Android/data/com.google.android.apps.docs
+64772 4714 -1 /data/media/0/Android/data/com.google.android.apps.docs/cache
+64772 7063 -1 /data/media/0/Android/data/com.google.android.apps.docs/files
+64772 7065 -1 /data/media/0/Android/data/com.google.android.apps.docs/files/pinned_docs_files_do_not_edit
+64772 5746 -1 /data/media/0/Android/data/com.google.android.apps.maps
+64772 5747 -1 /data/media/0/Android/data/com.google.android.apps.maps/files
+64772 5748 -1 /data/media/0/Android/data/com.google.android.apps.maps/testdata
+64772 5751 -1 /data/media/0/Android/data/com.google.android.apps.maps/cache
+64772 5752 -1 /data/media/0/Android/data/com.android.vending
+64772 5753 -1 /data/media/0/Android/data/com.android.vending/files
+64772 6128 -1 /data/media/0/Android/data/com.google.android.videos
+64772 6129 -1 /data/media/0/Android/data/com.google.android.videos/files
+64772 6130 -1 /data/media/0/Android/data/com.google.android.videos/files/Movies
+64772 7607 -1 /data/media/0/Android/data/com.google.android.GoogleCamera
+64772 7608 -1 /data/media/0/Android/data/com.google.android.GoogleCamera/files
+64772 7627 -1 /data/media/0/Android/data/com.google.android.apps.photos
+64772 7628 -1 /data/media/0/Android/data/com.google.android.apps.photos/files
+64772 3478 -1 /data/media/0/Music
+64772 3479 -1 /data/media/0/Podcasts
+64772 3480 -1 /data/media/0/Ringtones
+64772 3481 -1 /data/media/0/Alarms
+64772 3482 -1 /data/media/0/Notifications
+64772 3483 -1 /data/media/0/Pictures
+64772 3484 -1 /data/media/0/Movies
+64772 3485 -1 /data/media/0/Download
+64772 3486 -1 /data/media/0/DCIM
+64772 7292 -1 /data/media/0/DCIM/Camera
+64772 110 -1 /data/cache
+64772 111 -1 /data/cache/recovery
+64772 112 -1 /data/cache/backup_stage
+64772 113 -1 /data/cache/backup
+64772 114 -1 /data/rollback
+64772 115 -1 /data/rollback-observer
+64772 144 -1 /data/adb
+64772 161 -1 /data/gsi
+64772 162 -1 /data/gsi/dsu
+64772 163 -1 /data/gsi/ota
+64772 175 -1 /data/server_configurable_flags
+64772 4928 -1 /data/per_boot
+64772 7130 -1 /data/nativetest64
+64772 7131 -1 /data/nativetest64/VtsHalDataLatencyV1_0TargetTest
+64772 7132 -1 /data/nativetest64/VtsHalDataLatencyV1_0TargetTest/VtsHalDataLatencyV1_0TargetTest
+64772 7133 -1 /data/nativetest64/iorapd-tests
+64772 7134 -1 /data/nativetest64/iorapd-tests/iorapd-tests
+64772 7135 -1 /data/nativetest
+64772 7136 -1 /data/nativetest/VtsHalDataLatencyV1_0TargetTest
+64772 7137 -1 /data/nativetest/VtsHalDataLatencyV1_0TargetTest/VtsHalDataLatencyV1_0TargetTest
+64772 7138 -1 /data/nativetest/iorapd-tests
+64772 7139 -1 /data/nativetest/iorapd-tests/iorapd-tests
+26 19554 -1 /product
+26 160706 -1 /product/media
+64770 671 -1 /product/media/bootanimation-dark.zip
+64770 672 -1 /product/media/bootanimation.zip
+26 177959 -1 /product/media/audio
+26 182977 -1 /product/media/audio/ui
+64770 659 -1 /product/media/audio/ui/NFCTransferComplete.ogg
+64770 670 -1 /product/media/audio/ui/camera_focus.ogg
+64770 665 -1 /product/media/audio/ui/VideoStop.ogg
+64770 650 -1 /product/media/audio/ui/KeypressInvalid.ogg
+64770 660 -1 /product/media/audio/ui/NFCTransferInitiated.ogg
+64770 663 -1 /product/media/audio/ui/Unlock.ogg
+64770 669 -1 /product/media/audio/ui/camera_click.ogg
+64770 653 -1 /product/media/audio/ui/KeypressStandard.ogg
+64770 649 -1 /product/media/audio/ui/KeypressDelete.ogg
+64770 647 -1 /product/media/audio/ui/Effect_Tick.ogg
+64770 666 -1 /product/media/audio/ui/WirelessChargingStarted.ogg
+64770 668 -1 /product/media/audio/ui/audio_initiate.ogg
+64770 662 -1 /product/media/audio/ui/Undock.ogg
+64770 656 -1 /product/media/audio/ui/NFCFailure.ogg
+64770 655 -1 /product/media/audio/ui/LowBattery.ogg
+64770 651 -1 /product/media/audio/ui/KeypressReturn.ogg
+64770 654 -1 /product/media/audio/ui/Lock.ogg
+64770 652 -1 /product/media/audio/ui/KeypressSpacebar.ogg
+64770 658 -1 /product/media/audio/ui/NFCSuccess.ogg
+64770 648 -1 /product/media/audio/ui/InCallNotification.ogg
+64770 646 -1 /product/media/audio/ui/Dock.ogg
+64770 667 -1 /product/media/audio/ui/audio_end.ogg
+64770 661 -1 /product/media/audio/ui/Trusted.ogg
+64770 657 -1 /product/media/audio/ui/NFCInitiated.ogg
+64770 664 -1 /product/media/audio/ui/VideoRecord.ogg
+64770 645 -1 /product/media/audio/ui/ChargingStarted.ogg
+26 1561686 -1 /product/media/audio/notifications
+64770 621 -1 /product/media/audio/notifications/Mallet.ogg
+64770 618 -1 /product/media/audio/notifications/Duet.ogg
+64770 630 -1 /product/media/audio/notifications/Twinkle.ogg
+64770 619 -1 /product/media/audio/notifications/End_note.ogg
+64770 617 -1 /product/media/audio/notifications/Coconuts.ogg
+64770 616 -1 /product/media/audio/notifications/Beginning.ogg
+64770 623 -1 /product/media/audio/notifications/Ping.ogg
+64770 629 -1 /product/media/audio/notifications/Tweeter.ogg
+64770 628 -1 /product/media/audio/notifications/Tuneup.ogg
+64770 627 -1 /product/media/audio/notifications/Sticks_and_stones.ogg
+64770 626 -1 /product/media/audio/notifications/Shopkeeper.ogg
+64770 624 -1 /product/media/audio/notifications/Pipes.ogg
+64770 620 -1 /product/media/audio/notifications/Gentle_gong.ogg
+64770 622 -1 /product/media/audio/notifications/Orders_up.ogg
+64770 625 -1 /product/media/audio/notifications/Popcorn.ogg
+26 1561702 -1 /product/media/audio/ringtones
+64770 633 -1 /product/media/audio/ringtones/Crackle.ogg
+64770 639 -1 /product/media/audio/ringtones/Mash_up.ogg
+64770 636 -1 /product/media/audio/ringtones/Leaps_and_bounds.ogg
+64770 640 -1 /product/media/audio/ringtones/Monkey_around.ogg
+64770 638 -1 /product/media/audio/ringtones/Lost_and_found.ogg
+64770 641 -1 /product/media/audio/ringtones/Schools_out.ogg
+64770 634 -1 /product/media/audio/ringtones/Flutterby.ogg
+64770 637 -1 /product/media/audio/ringtones/Lollipop.ogg
+64770 642 -1 /product/media/audio/ringtones/The_big_adventure.ogg
+64770 643 -1 /product/media/audio/ringtones/Zen_too.ogg
+64770 635 -1 /product/media/audio/ringtones/Hotline.ogg
+64770 632 -1 /product/media/audio/ringtones/Copycat.ogg
+26 1561715 -1 /product/media/audio/alarms
+64770 611 -1 /product/media/audio/alarms/Loose_change.ogg
+64770 605 -1 /product/media/audio/alarms/Cuckoo_clock.ogg
+64770 610 -1 /product/media/audio/alarms/Jump_start.ogg
+64770 607 -1 /product/media/audio/alarms/Full_of_wonder.ogg
+64770 606 -1 /product/media/audio/alarms/Early_twilight.ogg
+64770 614 -1 /product/media/audio/alarms/Sunshower.ogg
+64770 608 -1 /product/media/audio/alarms/Gentle_breeze.ogg
+64770 612 -1 /product/media/audio/alarms/Rolling_fog.ogg
+64770 613 -1 /product/media/audio/alarms/Spokes.ogg
+64770 604 -1 /product/media/audio/alarms/Bright_morning.ogg
+64770 609 -1 /product/media/audio/alarms/Icicles.ogg
+64770 603 -1 /product/media/audio/alarms/A_real_hoot.ogg
+26 172559 -1 /product/priv-app
+26 1561728 -1 /product/priv-app/AppDirectedSMSService
+26 1561729 -1 /product/priv-app/AppDirectedSMSService/oat
+26 1561730 -1 /product/priv-app/AppDirectedSMSService/oat/arm64
+64770 794 -1 /product/priv-app/AppDirectedSMSService/oat/arm64/AppDirectedSMSService.vdex
+64770 793 -1 /product/priv-app/AppDirectedSMSService/oat/arm64/AppDirectedSMSService.odex
+64770 790 -1 /product/priv-app/AppDirectedSMSService/AppDirectedSMSService.apk
+26 180667 -1 /product/priv-app/GoogleServicesFramework
+26 1561734 -1 /product/priv-app/GoogleServicesFramework/oat
+26 1561735 -1 /product/priv-app/GoogleServicesFramework/oat/arm64
+64770 951 -1 /product/priv-app/GoogleServicesFramework/oat/arm64/GoogleServicesFramework.odex
+64770 952 -1 /product/priv-app/GoogleServicesFramework/oat/arm64/GoogleServicesFramework.vdex
+64770 948 -1 /product/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
+26 1561738 -1 /product/priv-app/OTAConfigPrebuilt
+26 1561739 -1 /product/priv-app/OTAConfigPrebuilt/oat
+26 1561740 -1 /product/priv-app/OTAConfigPrebuilt/oat/arm64
+64770 1032 -1 /product/priv-app/OTAConfigPrebuilt/oat/arm64/OTAConfigPrebuilt.odex
+64770 1033 -1 /product/priv-app/OTAConfigPrebuilt/oat/arm64/OTAConfigPrebuilt.vdex
+64770 1029 -1 /product/priv-app/OTAConfigPrebuilt/OTAConfigPrebuilt.apk
+26 1561744 -1 /product/priv-app/Showcase
+26 1561745 -1 /product/priv-app/Showcase/oat
+26 1561746 -1 /product/priv-app/Showcase/oat/arm64
+64770 1169 -1 /product/priv-app/Showcase/oat/arm64/Showcase.vdex
+64770 1168 -1 /product/priv-app/Showcase/oat/arm64/Showcase.odex
+64770 1165 -1 /product/priv-app/Showcase/Showcase.apk
+26 1561750 -1 /product/priv-app/DreamlinerUpdater
+26 1561751 -1 /product/priv-app/DreamlinerUpdater/oat
+26 1561752 -1 /product/priv-app/DreamlinerUpdater/oat/arm64
+64770 879 -1 /product/priv-app/DreamlinerUpdater/oat/arm64/DreamlinerUpdater.vdex
+64770 878 -1 /product/priv-app/DreamlinerUpdater/oat/arm64/DreamlinerUpdater.odex
+64770 875 -1 /product/priv-app/DreamlinerUpdater/DreamlinerUpdater.apk
+26 1561756 -1 /product/priv-app/OBDM_Permissions
+64770 1023 -1 /product/priv-app/OBDM_Permissions/OBDM_Permissions.apk
+26 1561758 -1 /product/priv-app/OBDM_Permissions/oat
+26 1561759 -1 /product/priv-app/OBDM_Permissions/oat/arm64
+64770 1026 -1 /product/priv-app/OBDM_Permissions/oat/arm64/OBDM_Permissions.odex
+64770 1027 -1 /product/priv-app/OBDM_Permissions/oat/arm64/OBDM_Permissions.vdex
+26 1561762 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt
+64770 1152 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/SettingsIntelligenceGooglePrebuilt.apk.prof
+26 1561764 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat
+26 1561765 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64
+64770 1157 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64/SettingsIntelligenceGooglePrebuilt.vdex
+64770 1155 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64/SettingsIntelligenceGooglePrebuilt.art
+64770 1156 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64/SettingsIntelligenceGooglePrebuilt.odex
+64770 1151 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/SettingsIntelligenceGooglePrebuilt.apk
+26 1561770 -1 /product/priv-app/CarrierSetup
+26 1561771 -1 /product/priv-app/CarrierSetup/oat
+26 1561772 -1 /product/priv-app/CarrierSetup/oat/arm64
+64770 818 -1 /product/priv-app/CarrierSetup/oat/arm64/CarrierSetup.vdex
+64770 817 -1 /product/priv-app/CarrierSetup/oat/arm64/CarrierSetup.odex
+64770 814 -1 /product/priv-app/CarrierSetup/CarrierSetup.apk
+26 1561776 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340
+64770 966 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/HotwordEnrollmentOKGoogleWCD9340.apk
+26 1561778 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat
+26 1561779 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat/arm64
+64770 970 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat/arm64/HotwordEnrollmentOKGoogleWCD9340.vdex
+64770 969 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat/arm64/HotwordEnrollmentOKGoogleWCD9340.odex
+26 1543679 -1 /product/priv-app/ScribePrebuilt
+26 1561782 -1 /product/priv-app/ScribePrebuilt/oat
+26 1561783 -1 /product/priv-app/ScribePrebuilt/oat/arm64
+64770 1141 -1 /product/priv-app/ScribePrebuilt/oat/arm64/ScribePrebuilt.vdex
+64770 1140 -1 /product/priv-app/ScribePrebuilt/oat/arm64/ScribePrebuilt.odex
+64770 1137 -1 /product/priv-app/ScribePrebuilt/ScribePrebuilt.apk
+26 312769 -1 /product/priv-app/SafetyHubPrebuilt
+26 1561786 -1 /product/priv-app/SafetyHubPrebuilt/oat
+26 1561787 -1 /product/priv-app/SafetyHubPrebuilt/oat/arm64
+64770 1135 -1 /product/priv-app/SafetyHubPrebuilt/oat/arm64/SafetyHubPrebuilt.vdex
+64770 1134 -1 /product/priv-app/SafetyHubPrebuilt/oat/arm64/SafetyHubPrebuilt.odex
+64770 1131 -1 /product/priv-app/SafetyHubPrebuilt/SafetyHubPrebuilt.apk
+26 1561790 -1 /product/priv-app/AmbientSensePrebuilt
+26 1561791 -1 /product/priv-app/AmbientSensePrebuilt/oat
+26 1561792 -1 /product/priv-app/AmbientSensePrebuilt/oat/arm64
+64770 775 -1 /product/priv-app/AmbientSensePrebuilt/oat/arm64/AmbientSensePrebuilt.odex
+64770 776 -1 /product/priv-app/AmbientSensePrebuilt/oat/arm64/AmbientSensePrebuilt.vdex
+64770 772 -1 /product/priv-app/AmbientSensePrebuilt/AmbientSensePrebuilt.apk
+26 180668 -1 /product/priv-app/PrebuiltGmsCore
+26 1561796 -1 /product/priv-app/PrebuiltGmsCore/app_chimera
+26 1561797 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m
+64770 1058 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_AdsDynamite.apk
+64770 1065 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_MeasurementDynamite.apk
+64770 1059 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_CronetDynamite.apk
+64770 1062 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_DynamiteModulesC.apk
+26 1561802 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat
+26 1561803 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm
+64770 1078 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_GoogleCertificates.odex
+64770 1083 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MeasurementDynamite.vdex
+64770 1082 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MeasurementDynamite.odex
+64770 1068 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_AdsDynamite.odex
+64770 1071 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_CronetDynamite.vdex
+64770 1077 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesC.vdex
+64770 1081 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MapsDynamite.vdex
+64770 1075 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesA.vdex
+64770 1069 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_AdsDynamite.vdex
+64770 1074 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesA.odex
+64770 1070 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_CronetDynamite.odex
+64770 1076 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesC.odex
+64770 1080 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MapsDynamite.odex
+64770 1079 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_GoogleCertificates.vdex
+64770 1073 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteLoader.vdex
+64770 1072 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteLoader.odex
+26 1561820 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64
+64770 1095 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_GoogleCertificates.odex
+64770 1100 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MeasurementDynamite.vdex
+64770 1099 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MeasurementDynamite.odex
+64770 1085 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_AdsDynamite.odex
+64770 1088 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_CronetDynamite.vdex
+64770 1094 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesC.vdex
+64770 1098 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MapsDynamite.vdex
+64770 1092 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesA.vdex
+64770 1086 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_AdsDynamite.vdex
+64770 1091 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesA.odex
+64770 1087 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_CronetDynamite.odex
+64770 1093 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesC.odex
+64770 1097 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MapsDynamite.odex
+64770 1096 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_GoogleCertificates.vdex
+64770 1090 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteLoader.vdex
+64770 1089 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteLoader.odex
+64770 1061 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_DynamiteModulesA.apk
+64770 1064 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_MapsDynamite.apk
+64770 1063 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_GoogleCertificates.apk
+64770 1060 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_DynamiteLoader.apk
+26 1561841 -1 /product/priv-app/PrebuiltGmsCore/oat
+26 1561842 -1 /product/priv-app/PrebuiltGmsCore/oat/arm
+64770 1110 -1 /product/priv-app/PrebuiltGmsCore/oat/arm/PrebuiltGmsCoreQt.odex
+64770 1111 -1 /product/priv-app/PrebuiltGmsCore/oat/arm/PrebuiltGmsCoreQt.vdex
+26 1561845 -1 /product/priv-app/PrebuiltGmsCore/oat/arm64
+64770 1113 -1 /product/priv-app/PrebuiltGmsCore/oat/arm64/PrebuiltGmsCoreQt.odex
+64770 1114 -1 /product/priv-app/PrebuiltGmsCore/oat/arm64/PrebuiltGmsCoreQt.vdex
+26 1561848 -1 /product/priv-app/PrebuiltGmsCore/m
+26 1561849 -1 /product/priv-app/PrebuiltGmsCore/m/independent
+64770 1103 -1 /product/priv-app/PrebuiltGmsCore/m/independent/AndroidPlatformServices.apk
+26 1561851 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat
+26 1561852 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat/arm64
+64770 1106 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat/arm64/AndroidPlatformServices.odex
+64770 1107 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat/arm64/AndroidPlatformServices.vdex
+64770 1055 -1 /product/priv-app/PrebuiltGmsCore/PrebuiltGmsCoreQt.apk
+26 1561855 -1 /product/priv-app/ConnMO
+26 1561856 -1 /product/priv-app/ConnMO/oat
+26 1561857 -1 /product/priv-app/ConnMO/oat/arm64
+64770 830 -1 /product/priv-app/ConnMO/oat/arm64/ConnMO.vdex
+64770 829 -1 /product/priv-app/ConnMO/oat/arm64/ConnMO.odex
+64770 826 -1 /product/priv-app/ConnMO/ConnMO.apk
+26 1561861 -1 /product/priv-app/DCMO
+26 1561862 -1 /product/priv-app/DCMO/oat
+26 1561863 -1 /product/priv-app/DCMO/oat/arm64
+64770 851 -1 /product/priv-app/DCMO/oat/arm64/DCMO.vdex
+64770 850 -1 /product/priv-app/DCMO/oat/arm64/DCMO.odex
+64770 847 -1 /product/priv-app/DCMO/DCMO.apk
+26 1561867 -1 /product/priv-app/GoogleANGLE
+26 1561868 -1 /product/priv-app/GoogleANGLE/oat
+26 1561869 -1 /product/priv-app/GoogleANGLE/oat/arm
+64770 910 -1 /product/priv-app/GoogleANGLE/oat/arm/GoogleANGLE.odex
+64770 911 -1 /product/priv-app/GoogleANGLE/oat/arm/GoogleANGLE.vdex
+26 1561872 -1 /product/priv-app/GoogleANGLE/oat/arm64
+64770 913 -1 /product/priv-app/GoogleANGLE/oat/arm64/GoogleANGLE.odex
+64770 914 -1 /product/priv-app/GoogleANGLE/oat/arm64/GoogleANGLE.vdex
+64770 907 -1 /product/priv-app/GoogleANGLE/GoogleANGLE.apk
+26 1561876 -1 /product/priv-app/ConfigUpdater
+26 1561877 -1 /product/priv-app/ConfigUpdater/oat
+26 1561878 -1 /product/priv-app/ConfigUpdater/oat/arm64
+64770 824 -1 /product/priv-app/ConfigUpdater/oat/arm64/ConfigUpdater.vdex
+64770 823 -1 /product/priv-app/ConfigUpdater/oat/arm64/ConfigUpdater.odex
+64770 820 -1 /product/priv-app/ConfigUpdater/ConfigUpdater.apk
+26 1561882 -1 /product/priv-app/TetheringEntitlement
+26 1561883 -1 /product/priv-app/TetheringEntitlement/oat
+26 1561884 -1 /product/priv-app/TetheringEntitlement/oat/arm64
+64770 1205 -1 /product/priv-app/TetheringEntitlement/oat/arm64/TetheringEntitlement.vdex
+64770 1204 -1 /product/priv-app/TetheringEntitlement/oat/arm64/TetheringEntitlement.odex
+64770 1201 -1 /product/priv-app/TetheringEntitlement/TetheringEntitlement.apk
+26 1561658 -1 /product/priv-app/DMService
+26 1561888 -1 /product/priv-app/DMService/oat
+26 1561889 -1 /product/priv-app/DMService/oat/arm
+64770 861 -1 /product/priv-app/DMService/oat/arm/DMService.vdex
+64770 860 -1 /product/priv-app/DMService/oat/arm/DMService.odex
+64770 853 -1 /product/priv-app/DMService/DMService.apk
+26 1561659 -1 /product/priv-app/DMService/lib
+26 1561660 -1 /product/priv-app/DMService/lib/arm
+64770 582 -1 /product/priv-app/DMService/lib/arm/libdmjavaplugin.so
+64770 581 -1 /product/priv-app/DMService/lib/arm/libdmengine.so
+26 1561897 -1 /product/priv-app/TMobilePlanProvider
+26 1561898 -1 /product/priv-app/TMobilePlanProvider/oat
+26 1561899 -1 /product/priv-app/TMobilePlanProvider/oat/arm64
+64770 1199 -1 /product/priv-app/TMobilePlanProvider/oat/arm64/TMobilePlanProvider.vdex
+64770 1198 -1 /product/priv-app/TMobilePlanProvider/oat/arm64/TMobilePlanProvider.odex
+64770 1195 -1 /product/priv-app/TMobilePlanProvider/TMobilePlanProvider.apk
+26 180704 -1 /product/priv-app/GoogleDialer
+64770 923 -1 /product/priv-app/GoogleDialer/GoogleDialer.apk.prof
+26 1561904 -1 /product/priv-app/GoogleDialer/oat
+26 1561905 -1 /product/priv-app/GoogleDialer/oat/arm64
+64770 928 -1 /product/priv-app/GoogleDialer/oat/arm64/GoogleDialer.vdex
+64770 926 -1 /product/priv-app/GoogleDialer/oat/arm64/GoogleDialer.art
+64770 927 -1 /product/priv-app/GoogleDialer/oat/arm64/GoogleDialer.odex
+64770 922 -1 /product/priv-app/GoogleDialer/GoogleDialer.apk
+26 1561909 -1 /product/priv-app/EuiccGoogle
+26 1561910 -1 /product/priv-app/EuiccGoogle/oat
+26 1561911 -1 /product/priv-app/EuiccGoogle/oat/arm64
+64770 884 -1 /product/priv-app/EuiccGoogle/oat/arm64/EuiccGoogle.odex
+64770 885 -1 /product/priv-app/EuiccGoogle/oat/arm64/EuiccGoogle.vdex
+64770 881 -1 /product/priv-app/EuiccGoogle/EuiccGoogle.apk
+26 1561915 -1 /product/priv-app/OemDmTrigger
+26 1561916 -1 /product/priv-app/OemDmTrigger/oat
+26 1561917 -1 /product/priv-app/OemDmTrigger/oat/arm64
+64770 1038 -1 /product/priv-app/OemDmTrigger/oat/arm64/OemDmTrigger.odex
+64770 1039 -1 /product/priv-app/OemDmTrigger/oat/arm64/OemDmTrigger.vdex
+64770 1035 -1 /product/priv-app/OemDmTrigger/OemDmTrigger.apk
+26 1485882 -1 /product/priv-app/Volta
+26 1561921 -1 /product/priv-app/Volta/oat
+26 1561922 -1 /product/priv-app/Volta/oat/arm64
+64770 1244 -1 /product/priv-app/Volta/oat/arm64/Volta.vdex
+64770 1243 -1 /product/priv-app/Volta/oat/arm64/Volta.odex
+64770 1240 -1 /product/priv-app/Volta/Volta.apk
+26 1561925 -1 /product/priv-app/VzwOmaTrigger
+26 1561926 -1 /product/priv-app/VzwOmaTrigger/oat
+26 1561927 -1 /product/priv-app/VzwOmaTrigger/oat/arm64
+64770 1249 -1 /product/priv-app/VzwOmaTrigger/oat/arm64/VzwOmaTrigger.odex
+64770 1250 -1 /product/priv-app/VzwOmaTrigger/oat/arm64/VzwOmaTrigger.vdex
+64770 1246 -1 /product/priv-app/VzwOmaTrigger/VzwOmaTrigger.apk
+26 1561931 -1 /product/priv-app/GoogleOneTimeInitializer
+26 1561932 -1 /product/priv-app/GoogleOneTimeInitializer/oat
+26 1561933 -1 /product/priv-app/GoogleOneTimeInitializer/oat/arm64
+64770 939 -1 /product/priv-app/GoogleOneTimeInitializer/oat/arm64/GoogleOneTimeInitializer.odex
+64770 940 -1 /product/priv-app/GoogleOneTimeInitializer/oat/arm64/GoogleOneTimeInitializer.vdex
+64770 936 -1 /product/priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk
+26 464525 -1 /product/priv-app/SettingsGoogle
+64770 1144 -1 /product/priv-app/SettingsGoogle/SettingsGoogle.apk.prof
+26 1561938 -1 /product/priv-app/SettingsGoogle/oat
+26 1561939 -1 /product/priv-app/SettingsGoogle/oat/arm64
+64770 1148 -1 /product/priv-app/SettingsGoogle/oat/arm64/SettingsGoogle.odex
+64770 1147 -1 /product/priv-app/SettingsGoogle/oat/arm64/SettingsGoogle.art
+64770 1149 -1 /product/priv-app/SettingsGoogle/oat/arm64/SettingsGoogle.vdex
+64770 1143 -1 /product/priv-app/SettingsGoogle/SettingsGoogle.apk
+26 1561943 -1 /product/priv-app/obdm_stub
+26 1561944 -1 /product/priv-app/obdm_stub/oat
+26 1561945 -1 /product/priv-app/obdm_stub/oat/arm64
+64770 1279 -1 /product/priv-app/obdm_stub/oat/arm64/obdm_stub.vdex
+64770 1278 -1 /product/priv-app/obdm_stub/oat/arm64/obdm_stub.odex
+64770 1280 -1 /product/priv-app/obdm_stub/obdm_stub.apk
+26 180656 -1 /product/priv-app/NexusLauncherRelease
+64770 1017 -1 /product/priv-app/NexusLauncherRelease/NexusLauncherRelease.apk
+26 1561949 -1 /product/priv-app/NexusLauncherRelease/oat
+26 1561950 -1 /product/priv-app/NexusLauncherRelease/oat/arm64
+64770 1021 -1 /product/priv-app/NexusLauncherRelease/oat/arm64/NexusLauncherRelease.vdex
+64770 1020 -1 /product/priv-app/NexusLauncherRelease/oat/arm64/NexusLauncherRelease.odex
+26 1484978 -1 /product/priv-app/TipsPrebuilt
+26 1561953 -1 /product/priv-app/TipsPrebuilt/oat
+26 1561954 -1 /product/priv-app/TipsPrebuilt/oat/arm64
+64770 1211 -1 /product/priv-app/TipsPrebuilt/oat/arm64/TipsPrebuilt.vdex
+64770 1210 -1 /product/priv-app/TipsPrebuilt/oat/arm64/TipsPrebuilt.odex
+64770 1207 -1 /product/priv-app/TipsPrebuilt/TipsPrebuilt.apk
+26 1494254 -1 /product/priv-app/Phonesky
+64770 1042 -1 /product/priv-app/Phonesky/Phonesky.apk.prof
+26 1561958 -1 /product/priv-app/Phonesky/oat
+26 1561959 -1 /product/priv-app/Phonesky/oat/arm
+64770 1046 -1 /product/priv-app/Phonesky/oat/arm/Phonesky.odex
+64770 1047 -1 /product/priv-app/Phonesky/oat/arm/Phonesky.vdex
+64770 1045 -1 /product/priv-app/Phonesky/oat/arm/Phonesky.art
+64770 1041 -1 /product/priv-app/Phonesky/Phonesky.apk
+26 1561963 -1 /product/priv-app/GmsCoreSetupPrebuilt
+26 1561964 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat
+26 1561965 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat/arm64
+64770 905 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat/arm64/GmsCoreSetupPrebuilt.vdex
+64770 904 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat/arm64/GmsCoreSetupPrebuilt.odex
+64770 901 -1 /product/priv-app/GmsCoreSetupPrebuilt/GmsCoreSetupPrebuilt.apk
+26 1561969 -1 /product/priv-app/WfcActivation
+26 1561970 -1 /product/priv-app/WfcActivation/oat
+26 1561971 -1 /product/priv-app/WfcActivation/oat/arm64
+64770 1268 -1 /product/priv-app/WfcActivation/oat/arm64/WfcActivation.vdex
+64770 1267 -1 /product/priv-app/WfcActivation/oat/arm64/WfcActivation.odex
+64770 1264 -1 /product/priv-app/WfcActivation/WfcActivation.apk
+26 1561975 -1 /product/priv-app/CarrierSettings
+26 1561976 -1 /product/priv-app/CarrierSettings/oat
+26 1561977 -1 /product/priv-app/CarrierSettings/oat/arm64
+64770 812 -1 /product/priv-app/CarrierSettings/oat/arm64/CarrierSettings.vdex
+64770 811 -1 /product/priv-app/CarrierSettings/oat/arm64/CarrierSettings.odex
+64770 808 -1 /product/priv-app/CarrierSettings/CarrierSettings.apk
+26 1561981 -1 /product/priv-app/EuiccSupportPixel
+26 1561982 -1 /product/priv-app/EuiccSupportPixel/oat
+26 1561983 -1 /product/priv-app/EuiccSupportPixel/oat/arm64
+64770 892 -1 /product/priv-app/EuiccSupportPixel/oat/arm64/EuiccSupportPixel.odex
+64770 893 -1 /product/priv-app/EuiccSupportPixel/oat/arm64/EuiccSupportPixel.vdex
+64770 888 -1 /product/priv-app/EuiccSupportPixel/esim-full-v0.img
+64770 887 -1 /product/priv-app/EuiccSupportPixel/EuiccSupportPixel.apk
+64770 889 -1 /product/priv-app/EuiccSupportPixel/esim-v1.img
+26 1561989 -1 /product/priv-app/SprintDM
+64770 1171 -1 /product/priv-app/SprintDM/SprintDM.apk
+26 1561991 -1 /product/priv-app/SprintDM/oat
+26 1561992 -1 /product/priv-app/SprintDM/oat/arm64
+64770 1174 -1 /product/priv-app/SprintDM/oat/arm64/SprintDM.odex
+64770 1175 -1 /product/priv-app/SprintDM/oat/arm64/SprintDM.vdex
+26 180735 -1 /product/priv-app/MatchmakerPrebuiltPixel3
+64770 986 -1 /product/priv-app/MatchmakerPrebuiltPixel3/MatchmakerPrebuiltPixel3.apk
+26 1561995 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat
+26 1561996 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat/arm64
+64770 990 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat/arm64/MatchmakerPrebuiltPixel3.vdex
+64770 989 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat/arm64/MatchmakerPrebuiltPixel3.odex
+26 1561999 -1 /product/priv-app/CarrierServices
+26 1562000 -1 /product/priv-app/CarrierServices/oat
+26 1562001 -1 /product/priv-app/CarrierServices/oat/arm64
+64770 806 -1 /product/priv-app/CarrierServices/oat/arm64/CarrierServices.vdex
+64770 805 -1 /product/priv-app/CarrierServices/oat/arm64/CarrierServices.odex
+64770 802 -1 /product/priv-app/CarrierServices/CarrierServices.apk
+26 180750 -1 /product/priv-app/grilservice
+26 1562005 -1 /product/priv-app/grilservice/oat
+26 1562006 -1 /product/priv-app/grilservice/oat/arm64
+64770 1273 -1 /product/priv-app/grilservice/oat/arm64/grilservice.odex
+64770 1274 -1 /product/priv-app/grilservice/oat/arm64/grilservice.vdex
+64770 1270 -1 /product/priv-app/grilservice/grilservice.apk
+26 1470378 -1 /product/priv-app/GooglePartnerSetup
+26 1562009 -1 /product/priv-app/GooglePartnerSetup/oat
+26 1562010 -1 /product/priv-app/GooglePartnerSetup/oat/arm64
+64770 945 -1 /product/priv-app/GooglePartnerSetup/oat/arm64/GooglePartnerSetup.odex
+64770 946 -1 /product/priv-app/GooglePartnerSetup/oat/arm64/GooglePartnerSetup.vdex
+64770 942 -1 /product/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk
+26 1496135 -1 /product/priv-app/AndroidAutoFullPrebuilt
+26 1562013 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat
+26 1562014 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat/arm64
+64770 781 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat/arm64/AndroidAutoFullPrebuilt.odex
+64770 782 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat/arm64/AndroidAutoFullPrebuilt.vdex
+64770 778 -1 /product/priv-app/AndroidAutoFullPrebuilt/AndroidAutoFullPrebuilt.apk
+26 1496133 -1 /product/priv-app/BetterBug
+26 1562017 -1 /product/priv-app/BetterBug/oat
+26 1562018 -1 /product/priv-app/BetterBug/oat/arm64
+64770 799 -1 /product/priv-app/BetterBug/oat/arm64/BetterBug.odex
+64770 800 -1 /product/priv-app/BetterBug/oat/arm64/BetterBug.vdex
+64770 796 -1 /product/priv-app/BetterBug/BetterBug.apk
+26 180705 -1 /product/priv-app/WellbeingPrebuilt
+64770 1258 -1 /product/priv-app/WellbeingPrebuilt/WellbeingPrebuilt.apk
+26 1562021 -1 /product/priv-app/WellbeingPrebuilt/oat
+26 1562022 -1 /product/priv-app/WellbeingPrebuilt/oat/arm64
+64770 1261 -1 /product/priv-app/WellbeingPrebuilt/oat/arm64/WellbeingPrebuilt.odex
+64770 1262 -1 /product/priv-app/WellbeingPrebuilt/oat/arm64/WellbeingPrebuilt.vdex
+26 1562025 -1 /product/priv-app/AndroidMigratePrebuilt
+26 1562026 -1 /product/priv-app/AndroidMigratePrebuilt/oat
+26 1562027 -1 /product/priv-app/AndroidMigratePrebuilt/oat/arm64
+64770 787 -1 /product/priv-app/AndroidMigratePrebuilt/oat/arm64/AndroidMigratePrebuilt.odex
+64770 788 -1 /product/priv-app/AndroidMigratePrebuilt/oat/arm64/AndroidMigratePrebuilt.vdex
+64770 784 -1 /product/priv-app/AndroidMigratePrebuilt/AndroidMigratePrebuilt.apk
+26 1562031 -1 /product/priv-app/TmobileGrsuPrebuilt
+26 1562032 -1 /product/priv-app/TmobileGrsuPrebuilt/oat
+26 1562033 -1 /product/priv-app/TmobileGrsuPrebuilt/oat/arm64
+64770 1217 -1 /product/priv-app/TmobileGrsuPrebuilt/oat/arm64/TmobileGrsuPrebuilt.vdex
+64770 1216 -1 /product/priv-app/TmobileGrsuPrebuilt/oat/arm64/TmobileGrsuPrebuilt.odex
+64770 1213 -1 /product/priv-app/TmobileGrsuPrebuilt/TmobileGrsuPrebuilt.apk
+26 1562037 -1 /product/priv-app/GoogleCBRS
+26 1562038 -1 /product/priv-app/GoogleCBRS/oat
+26 1562039 -1 /product/priv-app/GoogleCBRS/oat/arm64
+64770 919 -1 /product/priv-app/GoogleCBRS/oat/arm64/GoogleCBRS.odex
+64770 920 -1 /product/priv-app/GoogleCBRS/oat/arm64/GoogleCBRS.vdex
+64770 916 -1 /product/priv-app/GoogleCBRS/GoogleCBRS.apk
+26 1482035 -1 /product/priv-app/WallpaperPickerGoogleRelease
+26 1562043 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat
+26 1562044 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat/arm64
+64770 1256 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat/arm64/WallpaperPickerGoogleRelease.vdex
+64770 1255 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat/arm64/WallpaperPickerGoogleRelease.odex
+64770 1252 -1 /product/priv-app/WallpaperPickerGoogleRelease/WallpaperPickerGoogleRelease.apk
+26 1562047 -1 /product/priv-app/MaestroPrebuilt
+64770 984 -1 /product/priv-app/MaestroPrebuilt/MaestroPrebuilt.apk
+26 1562049 -1 /product/priv-app/ModemDiagnosticSystemPermissions
+26 1562050 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat
+26 1562051 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat/arm64
+64770 1005 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat/arm64/ModemDiagnosticSystemPermissions.vdex
+64770 1004 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat/arm64/ModemDiagnosticSystemPermissions.odex
+64770 1001 -1 /product/priv-app/ModemDiagnosticSystemPermissions/ModemDiagnosticSystemPermissions.apk
+26 1342343 -1 /product/priv-app/GCS
+26 1562055 -1 /product/priv-app/GCS/oat
+26 1562056 -1 /product/priv-app/GCS/oat/arm64
+64770 899 -1 /product/priv-app/GCS/oat/arm64/GCS.vdex
+64770 898 -1 /product/priv-app/GCS/oat/arm64/GCS.odex
+64770 895 -1 /product/priv-app/GCS/GCS.apk
+26 1562059 -1 /product/priv-app/ConnectivityMonitor
+26 1562060 -1 /product/priv-app/ConnectivityMonitor/oat
+26 1562061 -1 /product/priv-app/ConnectivityMonitor/oat/arm64
+64770 845 -1 /product/priv-app/ConnectivityMonitor/oat/arm64/ConnectivityMonitor.vdex
+64770 844 -1 /product/priv-app/ConnectivityMonitor/oat/arm64/ConnectivityMonitor.odex
+64770 838 -1 /product/priv-app/ConnectivityMonitor/ConnectivityMonitor.apk
+26 1562065 -1 /product/priv-app/ConnectivityMonitor/lib
+26 1562066 -1 /product/priv-app/ConnectivityMonitor/lib/arm64
+64770 592 -1 /product/priv-app/ConnectivityMonitor/lib/arm64/liblpmdeviceutils.so
+26 1562069 -1 /product/priv-app/SprintHM
+26 1562070 -1 /product/priv-app/SprintHM/oat
+26 1562071 -1 /product/priv-app/SprintHM/oat/arm64
+64770 1181 -1 /product/priv-app/SprintHM/oat/arm64/SprintHM.vdex
+64770 1180 -1 /product/priv-app/SprintHM/oat/arm64/SprintHM.odex
+64770 1177 -1 /product/priv-app/SprintHM/SprintHM.apk
+26 1562075 -1 /product/priv-app/RilConfigService
+26 1562076 -1 /product/priv-app/RilConfigService/oat
+26 1562077 -1 /product/priv-app/RilConfigService/oat/arm64
+64770 1119 -1 /product/priv-app/RilConfigService/oat/arm64/RilConfigService.odex
+64770 1120 -1 /product/priv-app/RilConfigService/oat/arm64/RilConfigService.vdex
+64770 1116 -1 /product/priv-app/RilConfigService/RilConfigService.apk
+26 215970 -1 /product/priv-app/TurboPrebuilt
+26 1562081 -1 /product/priv-app/TurboPrebuilt/oat
+26 1562082 -1 /product/priv-app/TurboPrebuilt/oat/arm64
+64770 1222 -1 /product/priv-app/TurboPrebuilt/oat/arm64/TurboPrebuilt.odex
+64770 1223 -1 /product/priv-app/TurboPrebuilt/oat/arm64/TurboPrebuilt.vdex
+64770 1219 -1 /product/priv-app/TurboPrebuilt/TurboPrebuilt.apk
+26 1562085 -1 /product/priv-app/HardwareInfo
+26 1562086 -1 /product/priv-app/HardwareInfo/oat
+26 1562087 -1 /product/priv-app/HardwareInfo/oat/arm64
+64770 957 -1 /product/priv-app/HardwareInfo/oat/arm64/HardwareInfo.odex
+64770 958 -1 /product/priv-app/HardwareInfo/oat/arm64/HardwareInfo.vdex
+64770 954 -1 /product/priv-app/HardwareInfo/HardwareInfo.apk
+26 1562091 -1 /product/priv-app/GoogleFeedback
+26 1562092 -1 /product/priv-app/GoogleFeedback/oat
+26 1562093 -1 /product/priv-app/GoogleFeedback/oat/arm64
+64770 934 -1 /product/priv-app/GoogleFeedback/oat/arm64/GoogleFeedback.vdex
+64770 933 -1 /product/priv-app/GoogleFeedback/oat/arm64/GoogleFeedback.odex
+64770 930 -1 /product/priv-app/GoogleFeedback/GoogleFeedback.apk
+26 180752 -1 /product/priv-app/PixelSetupWizard
+26 1562097 -1 /product/priv-app/PixelSetupWizard/oat
+26 1562098 -1 /product/priv-app/PixelSetupWizard/oat/arm64
+64770 1053 -1 /product/priv-app/PixelSetupWizard/oat/arm64/PixelSetupWizard.vdex
+64770 1052 -1 /product/priv-app/PixelSetupWizard/oat/arm64/PixelSetupWizard.odex
+64770 1049 -1 /product/priv-app/PixelSetupWizard/PixelSetupWizard.apk
+26 180619 -1 /product/priv-app/SCONE
+26 1562101 -1 /product/priv-app/SCONE/oat
+26 1562102 -1 /product/priv-app/SCONE/oat/arm64
+64770 1129 -1 /product/priv-app/SCONE/oat/arm64/SCONE.vdex
+64770 1128 -1 /product/priv-app/SCONE/oat/arm64/SCONE.odex
+64770 1122 -1 /product/priv-app/SCONE/SCONE.apk
+26 1562105 -1 /product/priv-app/SCONE/lib
+26 1562106 -1 /product/priv-app/SCONE/lib/arm64
+64770 1125 -1 /product/priv-app/SCONE/lib/arm64/libborders_scone_leveldb_jni.so
+26 1562108 -1 /product/priv-app/MyVerizonServices
+26 1562109 -1 /product/priv-app/MyVerizonServices/oat
+26 1562110 -1 /product/priv-app/MyVerizonServices/oat/arm64
+64770 1014 -1 /product/priv-app/MyVerizonServices/oat/arm64/MyVerizonServices.odex
+64770 1015 -1 /product/priv-app/MyVerizonServices/oat/arm64/MyVerizonServices.vdex
+64770 1007 -1 /product/priv-app/MyVerizonServices/MyVerizonServices.apk
+26 1562114 -1 /product/priv-app/MyVerizonServices/lib
+26 1562115 -1 /product/priv-app/MyVerizonServices/lib/arm64
+64770 1010 -1 /product/priv-app/MyVerizonServices/lib/arm64/libakuaf.so
+64770 1011 -1 /product/priv-app/MyVerizonServices/lib/arm64/libmotricity.so
+26 1562118 -1 /product/priv-app/ConnMetrics
+26 1562119 -1 /product/priv-app/ConnMetrics/oat
+26 1562120 -1 /product/priv-app/ConnMetrics/oat/arm64
+64770 835 -1 /product/priv-app/ConnMetrics/oat/arm64/ConnMetrics.odex
+64770 836 -1 /product/priv-app/ConnMetrics/oat/arm64/ConnMetrics.vdex
+64770 832 -1 /product/priv-app/ConnMetrics/ConnMetrics.apk
+26 1562124 -1 /product/priv-app/DiagMon
+26 1562125 -1 /product/priv-app/DiagMon/oat
+26 1562126 -1 /product/priv-app/DiagMon/oat/arm64
+64770 867 -1 /product/priv-app/DiagMon/oat/arm64/DiagMon.vdex
+64770 866 -1 /product/priv-app/DiagMon/oat/arm64/DiagMon.odex
+64770 863 -1 /product/priv-app/DiagMon/DiagMon.apk
+26 1562130 -1 /product/priv-app/HelpRtcPrebuilt
+26 1562131 -1 /product/priv-app/HelpRtcPrebuilt/oat
+26 1562132 -1 /product/priv-app/HelpRtcPrebuilt/oat/arm64
+64770 963 -1 /product/priv-app/HelpRtcPrebuilt/oat/arm64/HelpRtcPrebuilt.odex
+64770 964 -1 /product/priv-app/HelpRtcPrebuilt/oat/arm64/HelpRtcPrebuilt.vdex
+64770 960 -1 /product/priv-app/HelpRtcPrebuilt/HelpRtcPrebuilt.apk
+26 1562136 -1 /product/priv-app/StorageManagerGoogle
+26 1562137 -1 /product/priv-app/StorageManagerGoogle/oat
+26 1562138 -1 /product/priv-app/StorageManagerGoogle/oat/arm64
+64770 1187 -1 /product/priv-app/StorageManagerGoogle/oat/arm64/StorageManagerGoogle.vdex
+64770 1186 -1 /product/priv-app/StorageManagerGoogle/oat/arm64/StorageManagerGoogle.odex
+64770 1183 -1 /product/priv-app/StorageManagerGoogle/StorageManagerGoogle.apk
+26 1562142 -1 /product/priv-app/LLKAgent
+26 1562143 -1 /product/priv-app/LLKAgent/oat
+26 1562144 -1 /product/priv-app/LLKAgent/oat/arm64
+64770 982 -1 /product/priv-app/LLKAgent/oat/arm64/LLKAgent.vdex
+64770 981 -1 /product/priv-app/LLKAgent/oat/arm64/LLKAgent.odex
+64770 978 -1 /product/priv-app/LLKAgent/LLKAgent.apk
+26 180809 -1 /product/priv-app/Velvet
+64770 1225 -1 /product/priv-app/Velvet/Velvet.apk
+26 1562148 -1 /product/priv-app/Velvet/oat
+26 1562149 -1 /product/priv-app/Velvet/oat/arm
+64770 1229 -1 /product/priv-app/Velvet/oat/arm/Velvet.vdex
+64770 1228 -1 /product/priv-app/Velvet/oat/arm/Velvet.odex
+26 1562152 -1 /product/priv-app/Velvet/oat/arm64
+64770 1232 -1 /product/priv-app/Velvet/oat/arm64/Velvet.vdex
+64770 1231 -1 /product/priv-app/Velvet/oat/arm64/Velvet.odex
+26 1562155 -1 /product/priv-app/VendorLoggingService
+26 1562156 -1 /product/priv-app/VendorLoggingService/oat
+26 1562157 -1 /product/priv-app/VendorLoggingService/oat/arm64
+64770 1238 -1 /product/priv-app/VendorLoggingService/oat/arm64/VendorLoggingService.vdex
+64770 1237 -1 /product/priv-app/VendorLoggingService/oat/arm64/VendorLoggingService.odex
+64770 1234 -1 /product/priv-app/VendorLoggingService/VendorLoggingService.apk
+26 1562161 -1 /product/priv-app/DreamlinerPrebuilt
+64770 869 -1 /product/priv-app/DreamlinerPrebuilt/DreamlinerPrebuilt.apk
+26 1562163 -1 /product/priv-app/DreamlinerPrebuilt/oat
+26 1562164 -1 /product/priv-app/DreamlinerPrebuilt/oat/arm64
+64770 873 -1 /product/priv-app/DreamlinerPrebuilt/oat/arm64/DreamlinerPrebuilt.vdex
+64770 872 -1 /product/priv-app/DreamlinerPrebuilt/oat/arm64/DreamlinerPrebuilt.odex
+26 1562167 -1 /product/priv-app/ModemDiagnosticSystem
+26 1562168 -1 /product/priv-app/ModemDiagnosticSystem/oat
+26 1562169 -1 /product/priv-app/ModemDiagnosticSystem/oat/arm64
+64770 999 -1 /product/priv-app/ModemDiagnosticSystem/oat/arm64/ModemDiagnosticSystem.vdex
+64770 998 -1 /product/priv-app/ModemDiagnosticSystem/oat/arm64/ModemDiagnosticSystem.odex
+64770 992 -1 /product/priv-app/ModemDiagnosticSystem/ModemDiagnosticSystem.apk
+26 1562173 -1 /product/priv-app/ModemDiagnosticSystem/lib
+26 1562174 -1 /product/priv-app/ModemDiagnosticSystem/lib/arm64
+64770 593 -1 /product/priv-app/ModemDiagnosticSystem/lib/arm64/libmdsdiag.so
+26 180588 -1 /product/priv-app/SystemUIGoogle
+64770 1189 -1 /product/priv-app/SystemUIGoogle/SystemUIGoogle.apk
+26 182954 -1 /product/priv-app/SystemUIGoogle/oat
+26 182955 -1 /product/priv-app/SystemUIGoogle/oat/arm64
+64770 1192 -1 /product/priv-app/SystemUIGoogle/oat/arm64/SystemUIGoogle.odex
+64770 1193 -1 /product/priv-app/SystemUIGoogle/oat/arm64/SystemUIGoogle.vdex
+26 180727 -1 /product/priv-app/SetupWizardPrebuilt
+26 1562177 -1 /product/priv-app/SetupWizardPrebuilt/oat
+26 1562178 -1 /product/priv-app/SetupWizardPrebuilt/oat/arm64
+64770 1163 -1 /product/priv-app/SetupWizardPrebuilt/oat/arm64/SetupWizardPrebuilt.vdex
+64770 1162 -1 /product/priv-app/SetupWizardPrebuilt/oat/arm64/SetupWizardPrebuilt.odex
+64770 1159 -1 /product/priv-app/SetupWizardPrebuilt/SetupWizardPrebuilt.apk
+26 1562181 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340
+26 1562182 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat
+26 1562183 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat/arm64
+64770 976 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat/arm64/HotwordEnrollmentXGoogleWCD9340.vdex
+64770 975 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat/arm64/HotwordEnrollmentXGoogleWCD9340.odex
+64770 972 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/HotwordEnrollmentXGoogleWCD9340.apk
+26 36874 -1 /product/fonts
+64770 528 -1 /product/fonts/ArbutusSlab-Regular.ttf
+64770 538 -1 /product/fonts/Lato-Medium.ttf
+64770 543 -1 /product/fonts/Rubik-Italic.ttf
+64770 536 -1 /product/fonts/Lato-BoldItalic.ttf
+64770 534 -1 /product/fonts/GoogleSans-Regular.ttf
+64770 531 -1 /product/fonts/GoogleSans-Italic.ttf
+64770 547 -1 /product/fonts/ZillaSlab-Medium.ttf
+64770 550 -1 /product/fonts/ZillaSlab-SemiBoldItalic.ttf
+64770 533 -1 /product/fonts/GoogleSans-MediumItalic.ttf
+64770 544 -1 /product/fonts/Rubik-Medium.ttf
+64770 535 -1 /product/fonts/Lato-Bold.ttf
+64770 541 -1 /product/fonts/Rubik-Bold.ttf
+64770 546 -1 /product/fonts/Rubik-Regular.ttf
+64770 540 -1 /product/fonts/Lato-Regular.ttf
+64770 545 -1 /product/fonts/Rubik-MediumItalic.ttf
+64770 529 -1 /product/fonts/GoogleSans-Bold.ttf
+64770 539 -1 /product/fonts/Lato-MediumItalic.ttf
+64770 530 -1 /product/fonts/GoogleSans-BoldItalic.ttf
+64770 542 -1 /product/fonts/Rubik-BoldItalic.ttf
+64770 548 -1 /product/fonts/ZillaSlab-MediumItalic.ttf
+64770 532 -1 /product/fonts/GoogleSans-Medium.ttf
+64770 549 -1 /product/fonts/ZillaSlab-SemiBold.ttf
+64770 537 -1 /product/fonts/Lato-Italic.ttf
+26 1513470 -1 /product/usr
+26 1562189 -1 /product/usr/share
+26 1562190 -1 /product/usr/share/ime
+26 1562191 -1 /product/usr/share/ime/google
+26 1562192 -1 /product/usr/share/ime/google/d3_lms
+64770 1288 -1 /product/usr/share/ime/google/d3_lms/zh_CN_2018030706.zip
+64770 1286 -1 /product/usr/share/ime/google/d3_lms/ko_2018030706.zip
+64770 1287 -1 /product/usr/share/ime/google/d3_lms/mozc.data
+26 1513471 -1 /product/usr/srec
+26 1513472 -1 /product/usr/srec/en-US
+64770 1346 -1 /product/usr/srec/en-US/portable_lstm
+64770 1324 -1 /product/usr/srec/en-US/endpointer_model
+64770 1301 -1 /product/usr/srec/en-US/TERSE_LSTM_LM.lstm_lm.syms
+64770 1305 -1 /product/usr/srec/en-US/compile_grammar.config
+64770 1348 -1 /product/usr/srec/en-US/prons_exception_dictionary_file.txt
+64770 1328 -1 /product/usr/srec/en-US/ep_portable_model.uint8.mmap
+64770 1294 -1 /product/usr/srec/en-US/CONTACT.transform.mfar
+64770 1298 -1 /product/usr/srec/en-US/SONG_NAME.syms
+64770 1355 -1 /product/usr/srec/en-US/word_confidence_classifier
+64770 1326 -1 /product/usr/srec/en-US/endpointer_voicesearch.config
+64770 1339 -1 /product/usr/srec/en-US/magic_mic.config
+64770 1312 -1 /product/usr/srec/en-US/embedded_normalizer.mfar
+64770 1295 -1 /product/usr/srec/en-US/CONTACT_NAME.fst
+64770 1354 -1 /product/usr/srec/en-US/voice_actions_compiler.config
+64770 1325 -1 /product/usr/srec/en-US/endpointer_model.mmap
+64770 1313 -1 /product/usr/srec/en-US/en-US_app-actions_prompted-app-name_TWIDDLER_FST.fst
+64770 1304 -1 /product/usr/srec/en-US/commands.abnf
+64770 1293 -1 /product/usr/srec/en-US/CLG.prewalk.fst
+64770 1344 -1 /product/usr/srec/en-US/offline_action_data.pb
+64770 1331 -1 /product/usr/srec/en-US/g2p_graphemes.syms
+64770 1310 -1 /product/usr/srec/en-US/dnn
+64770 1297 -1 /product/usr/srec/en-US/SONG_NAME.fst
+64770 1309 -1 /product/usr/srec/en-US/dictation.config
+64770 1327 -1 /product/usr/srec/en-US/ep_portable_mean_stddev
+64770 1314 -1 /product/usr/srec/en-US/en-US_calendar-actions_AddCalendarEvent-Prompted-FieldToChange_TWIDDLER_FST.fst
+64770 1318 -1 /product/usr/srec/en-US/en-US_monastery_GenericAction-Prompted-ContactName_TWIDDLER_FST.fst
+64770 1353 -1 /product/usr/srec/en-US/voice_actions.config
+64770 1336 -1 /product/usr/srec/en-US/input_mean_std_dev
+64770 1340 -1 /product/usr/srec/en-US/metadata
+64770 1351 -1 /product/usr/srec/en-US/semantics.pumpkin
+64770 1302 -1 /product/usr/srec/en-US/am_phonemes.syms
+64770 1291 -1 /product/usr/srec/en-US/APP_NAME.fst
+64770 1349 -1 /product/usr/srec/en-US/pumpkin.mmap
+64770 1322 -1 /product/usr/srec/en-US/en-US_time-actions_time-context_TWIDDLER_FST.fst
+64770 1356 -1 /product/usr/srec/en-US/wordlist.syms
+64770 1352 -1 /product/usr/srec/en-US/verbalizer_terse.mfar
+64770 1320 -1 /product/usr/srec/en-US/en-US_read-items_SearchMessageAction-Prompted-Read_TWIDDLER_FST.fst
+64770 1292 -1 /product/usr/srec/en-US/APP_NAME.syms
+64770 1332 -1 /product/usr/srec/en-US/g2p_phonemes.syms
+64770 1342 -1 /product/usr/srec/en-US/norm_fst
+64770 1333 -1 /product/usr/srec/en-US/grammar.config
+64770 1307 -1 /product/usr/srec/en-US/contacts.abnf
+64770 1335 -1 /product/usr/srec/en-US/hmmlist
+64770 1315 -1 /product/usr/srec/en-US/en-US_confirmation_confirmation-cancellation_TWIDDLER_FST.fst
+64770 1345 -1 /product/usr/srec/en-US/phonelist
+64770 1319 -1 /product/usr/srec/en-US/en-US_monastery_contact-disambig-static_TWIDDLER_FST.fst
+64770 1350 -1 /product/usr/srec/en-US/rescoring.fst.compact
+64770 1303 -1 /product/usr/srec/en-US/c_fst
+64770 1296 -1 /product/usr/srec/en-US/CONTACT_NAME.syms
+64770 1329 -1 /product/usr/srec/en-US/g2p.data
+64770 1330 -1 /product/usr/srec/en-US/g2p_fst
+64770 1308 -1 /product/usr/srec/en-US/dict
+64770 1317 -1 /product/usr/srec/en-US/en-US_media-actions_music-service-controllable_TWIDDLER_FST.fst
+64770 1343 -1 /product/usr/srec/en-US/offensive_word_normalizer.mfar
+64770 1299 -1 /product/usr/srec/en-US/TERSE_LSTM_LM.lstm_lm.main_model.uint8.data
+64770 1321 -1 /product/usr/srec/en-US/en-US_read-items_SearchMessageAction-Prompted-Skip_TWIDDLER_FST.fst
+64770 1300 -1 /product/usr/srec/en-US/TERSE_LSTM_LM.lstm_lm.self_normalized_model.uint8.data
+64770 1337 -1 /product/usr/srec/en-US/lexicon.U.fst
+64770 1334 -1 /product/usr/srec/en-US/hmm_symbols
+64770 1306 -1 /product/usr/srec/en-US/config.pumpkin
+64770 1316 -1 /product/usr/srec/en-US/en-US_gmm-actions_gmm-nav-actions_TWIDDLER_FST.fst
+64770 1341 -1 /product/usr/srec/en-US/monastery_config.pumpkin
+64770 1338 -1 /product/usr/srec/en-US/lstm_model.uint8.data
+64770 1323 -1 /product/usr/srec/en-US/endpointer_dictation.config
+64770 1311 -1 /product/usr/srec/en-US/embedded_class_denorm.mfar
+64770 1347 -1 /product/usr/srec/en-US/portable_meanstddev
+26 1441598 -1 /product/bin
+64770 352 -1 /product/bin/check_f2fs
+64770 354 -1 /product/bin/f2fs_io
+64770 355 -1 /product/bin/sg_write_buffer
+64770 350 -1 /product/bin/a_sns_test
+64770 351 -1 /product/bin/check_dynamic_partitions
+64770 353 -1 /product/bin/dmabuf_dump
+64770 356 -1 /product/build.prop
+26 1562228 -1 /product/lost+found
+26 177202 -1 /product/lib64
+64770 599 -1 /product/lib64/vendor.qti.hardware.qdutils_disp@1.0.so
+64770 598 -1 /product/lib64/vendor.google.wireless_charger@1.0.so
+64770 590 -1 /product/lib64/libaptX_encoder.so
+64770 589 -1 /product/lib64/libaptXHD_encoder.so
+64770 597 -1 /product/lib64/vendor.google.wifi_ext@1.0.so
+64770 593 -1 /product/lib64/libmdsdiag.so
+64770 592 -1 /product/lib64/liblpmdeviceutils.so
+64770 596 -1 /product/lib64/libwallpapers-breel-2018-jni.so
+64770 594 -1 /product/lib64/libsecureuisvc_jni.so
+64770 591 -1 /product/lib64/libgdx.so
+64770 595 -1 /product/lib64/libsketchology_native.so
+64770 588 -1 /product/lib64/com.qualcomm.qti.ant@1.0.so
+26 1562235 -1 /product/framework
+64770 552 -1 /product/framework/VerizonLoggingLibrary.jar
+26 1562237 -1 /product/framework/oat
+26 1562238 -1 /product/framework/oat/arm
+64770 563 -1 /product/framework/oat/arm/com.google.android.maps.vdex
+64770 560 -1 /product/framework/oat/arm/com.google.android.dialer.support.odex
+64770 559 -1 /product/framework/oat/arm/VerizonLoggingLibrary.vdex
+64770 564 -1 /product/framework/oat/arm/libhwinfo.odex
+64770 562 -1 /product/framework/oat/arm/com.google.android.maps.odex
+64770 561 -1 /product/framework/oat/arm/com.google.android.dialer.support.vdex
+64770 558 -1 /product/framework/oat/arm/VerizonLoggingLibrary.odex
+64770 565 -1 /product/framework/oat/arm/libhwinfo.vdex
+26 1562247 -1 /product/framework/oat/arm64
+64770 572 -1 /product/framework/oat/arm64/com.google.android.maps.vdex
+64770 569 -1 /product/framework/oat/arm64/com.google.android.dialer.support.odex
+64770 568 -1 /product/framework/oat/arm64/VerizonLoggingLibrary.vdex
+64770 573 -1 /product/framework/oat/arm64/libhwinfo.odex
+64770 571 -1 /product/framework/oat/arm64/com.google.android.maps.odex
+64770 570 -1 /product/framework/oat/arm64/com.google.android.dialer.support.vdex
+64770 567 -1 /product/framework/oat/arm64/VerizonLoggingLibrary.odex
+64770 574 -1 /product/framework/oat/arm64/libhwinfo.vdex
+64770 553 -1 /product/framework/com.google.android.dialer.support.jar
+64770 554 -1 /product/framework/com.google.android.maps.jar
+64770 555 -1 /product/framework/libhwinfo.jar
+26 1453664 -1 /product/etc
+64770 452 -1 /product/etc/group
+64770 450 -1 /product/etc/fs_config_dirs
+26 1562261 -1 /product/etc/security
+26 1562262 -1 /product/etc/security/avb
+64770 500 -1 /product/etc/security/avb/system_other.avbpubkey
+64770 430 -1 /product/etc/NOTICE.xml.gz
+26 1562265 -1 /product/etc/felica
+64770 444 -1 /product/etc/felica/mfm.cfg
+64770 443 -1 /product/etc/felica/common.cfg
+64770 445 -1 /product/etc/felica/mfs.cfg
+26 1517396 -1 /product/etc/selinux
+64770 508 -1 /product/etc/selinux/product_seapp_contexts
+64770 504 -1 /product/etc/selinux/product_file_contexts
+64770 506 -1 /product/etc/selinux/product_mac_permissions.xml
+64770 505 -1 /product/etc/selinux/product_hwservice_contexts
+64770 509 -1 /product/etc/selinux/product_sepolicy.cil
+26 1562273 -1 /product/etc/selinux/mapping
+64770 503 -1 /product/etc/selinux/mapping/10000.0.cil
+64770 510 -1 /product/etc/selinux/product_sepolicy_and_mapping.sha256
+64770 507 -1 /product/etc/selinux/product_property_contexts
+64770 511 -1 /product/etc/selinux/product_service_contexts
+26 1562278 -1 /product/etc/res
+26 1562279 -1 /product/etc/res/values
+26 1562280 -1 /product/etc/res/values/charger
+64770 497 -1 /product/etc/res/values/charger/animation.txt
+26 1562282 -1 /product/etc/res/images
+26 1562283 -1 /product/etc/res/images/charger
+64770 494 -1 /product/etc/res/images/charger/main_font.png
+64770 493 -1 /product/etc/res/images/charger/battery_scale.png
+64770 492 -1 /product/etc/res/images/charger/battery_fail.png
+64770 454 -1 /product/etc/passwd
+26 1562287 -1 /product/etc/CarrierSettings
+64770 428 -1 /product/etc/CarrierSettings/vodafone_nl.pb
+64770 415 -1 /product/etc/CarrierSettings/tracfoneverizon_us.pb
+64770 398 -1 /product/etc/CarrierSettings/pcmobilebell_ca.pb
+64770 402 -1 /product/etc/CarrierSettings/sfr_fr.pb
+64770 388 -1 /product/etc/CarrierSettings/koodo_ca.pb
+64770 391 -1 /product/etc/CarrierSettings/o2postpaid_gb.pb
+64770 419 -1 /product/etc/CarrierSettings/videotron_ca.pb
+64770 381 -1 /product/etc/CarrierSettings/fizz_ca.pb
+64770 397 -1 /product/etc/CarrierSettings/others.pb
+64770 420 -1 /product/etc/CarrierSettings/virgin_ca.pb
+64770 375 -1 /product/etc/CarrierSettings/eplus_de.pb
+64770 403 -1 /product/etc/CarrierSettings/singtel_sg.pb
+64770 427 -1 /product/etc/CarrierSettings/vodafone_it.pb
+64770 370 -1 /product/etc/CarrierSettings/cricket_us.pb
+64770 396 -1 /product/etc/CarrierSettings/orange_fr.pb
+64770 429 -1 /product/etc/CarrierSettings/xfinity_us.pb
+64770 405 -1 /product/etc/CarrierSettings/solomobile_ca.pb
+64770 408 -1 /product/etc/CarrierSettings/sprintwholesale_us.pb
+64770 371 -1 /product/etc/CarrierSettings/cspire_us.pb
+64770 361 -1 /product/etc/CarrierSettings/att_us.pb
+64770 390 -1 /product/etc/CarrierSettings/o2_de.pb
+64770 418 -1 /product/etc/CarrierSettings/verizon_us.pb
+64770 385 -1 /product/etc/CarrierSettings/idmobile_gb.pb
+64770 393 -1 /product/etc/CarrierSettings/o2prepaid_gb.pb
+64770 364 -1 /product/etc/CarrierSettings/btb_gb.pb
+64770 382 -1 /product/etc/CarrierSettings/freedommobile_ca.pb
+64770 373 -1 /product/etc/CarrierSettings/docomo_jp.pb
+64770 406 -1 /product/etc/CarrierSettings/spectrum_us.pb
+64770 416 -1 /product/etc/CarrierSettings/twm_tw.pb
+64770 387 -1 /product/etc/CarrierSettings/kddimvno_jp.pb
+64770 425 -1 /product/etc/CarrierSettings/vodafone_gb.pb
+64770 372 -1 /product/etc/CarrierSettings/default.pb
+64770 366 -1 /product/etc/CarrierSettings/carrier_list.pb
+64770 369 -1 /product/etc/CarrierSettings/cricket5g_us.pb
+64770 383 -1 /product/etc/CarrierSettings/h3_gb.pb
+64770 421 -1 /product/etc/CarrierSettings/visible_us.pb
+64770 360 -1 /product/etc/CarrierSettings/att5g_us.pb
+64770 409 -1 /product/etc/CarrierSettings/starhub_sg.pb
+64770 423 -1 /product/etc/CarrierSettings/vodafone_de.pb
+64770 377 -1 /product/etc/CarrierSettings/fi_us.pb
+64770 426 -1 /product/etc/CarrierSettings/vodafone_in.pb
+64770 411 -1 /product/etc/CarrierSettings/telstra_au.pb
+64770 380 -1 /product/etc/CarrierSettings/firstnetpacific_us.pb
+64770 413 -1 /product/etc/CarrierSettings/tmobile_us.pb
+64770 384 -1 /product/etc/CarrierSettings/idea_in.pb
+64770 407 -1 /product/etc/CarrierSettings/sprint_us.pb
+64770 412 -1 /product/etc/CarrierSettings/telus_ca.pb
+64770 389 -1 /product/etc/CarrierSettings/luckymobile_ca.pb
+64770 424 -1 /product/etc/CarrierSettings/vodafone_es.pb
+64770 410 -1 /product/etc/CarrierSettings/telekom_de.pb
+64770 368 -1 /product/etc/CarrierSettings/cht_tw.pb
+64770 414 -1 /product/etc/CarrierSettings/tracfonetmo_us.pb
+64770 422 -1 /product/etc/CarrierSettings/vodafone_au.pb
+64770 392 -1 /product/etc/CarrierSettings/o2prepaid_de.pb
+64770 365 -1 /product/etc/CarrierSettings/btc_gb.pb
+64770 386 -1 /product/etc/CarrierSettings/kddi_jp.pb
+64770 359 -1 /product/etc/CarrierSettings/airtel_in.pb
+64770 363 -1 /product/etc/CarrierSettings/bouygues_fr.pb
+64770 367 -1 /product/etc/CarrierSettings/cellcom_us.pb
+64770 395 -1 /product/etc/CarrierSettings/orange_es.pb
+64770 399 -1 /product/etc/CarrierSettings/rakuten_jp.pb
+64770 404 -1 /product/etc/CarrierSettings/softbank_jp.pb
+64770 401 -1 /product/etc/CarrierSettings/rogers_ca.pb
+64770 379 -1 /product/etc/CarrierSettings/firstnet_us.pb
+64770 400 -1 /product/etc/CarrierSettings/rjio_in.pb
+64770 362 -1 /product/etc/CarrierSettings/bell_ca.pb
+64770 394 -1 /product/etc/CarrierSettings/optus_au.pb
+64770 378 -1 /product/etc/CarrierSettings/fido_ca.pb
+64770 376 -1 /product/etc/CarrierSettings/fet_tw.pb
+64770 417 -1 /product/etc/CarrierSettings/uscc_us.pb
+64770 374 -1 /product/etc/CarrierSettings/ee_gb.pb
+26 1562359 -1 /product/etc/cne
+64770 441 -1 /product/etc/cne/andsfCne.xml
+26 1562361 -1 /product/etc/cne/Nexus
+26 1562362 -1 /product/etc/cne/Nexus/ROW
+64770 438 -1 /product/etc/cne/Nexus/ROW/ROW_profiles.xml
+26 1562364 -1 /product/etc/cne/Nexus/ATT
+64770 436 -1 /product/etc/cne/Nexus/ATT/ATT_profiles.xml
+26 1562366 -1 /product/etc/cne/Nexus/VZW
+64770 440 -1 /product/etc/cne/Nexus/VZW/VZW_profiles.xml
+26 1562368 -1 /product/etc/permissions
+64770 480 -1 /product/etc/permissions/com.verizon.services.xml
+64770 466 -1 /product/etc/permissions/com.android.vzwomatrigger.xml
+64770 481 -1 /product/etc/permissions/features-verizon.xml
+64770 484 -1 /product/etc/permissions/split-permissions-google.xml
+64770 477 -1 /product/etc/permissions/com.tmobile.planprovider.xml
+64770 462 -1 /product/etc/permissions/com.android.sdm.plugins.diagmon.xml
+64770 458 -1 /product/etc/permissions/com.android.launcher3.xml
+64770 456 -1 /product/etc/permissions/android.hardware.telephony.euicc.xml
+64770 476 -1 /product/etc/permissions/com.google.omadm.trigger.xml
+64770 459 -1 /product/etc/permissions/com.android.omadm.service.xml
+64770 479 -1 /product/etc/permissions/com.verizon.llkagent.xml
+64770 468 -1 /product/etc/permissions/com.google.android.apps.dreamliner.xml
+64770 474 -1 /product/etc/permissions/com.google.mds.permissions.xml
+64770 471 -1 /product/etc/permissions/com.google.android.maps.xml
+64770 470 -1 /product/etc/permissions/com.google.android.hardwareinfo.xml
+64770 467 -1 /product/etc/permissions/com.customermobile.preload.vzw.xml
+64770 482 -1 /product/etc/permissions/obdm_permissions.xml
+64770 457 -1 /product/etc/permissions/android.software.verified_boot.xml
+64770 463 -1 /product/etc/permissions/com.android.sdm.plugins.sprintdm.xml
+64770 483 -1 /product/etc/permissions/privapp-permissions-google-p.xml
+64770 461 -1 /product/etc/permissions/com.android.sdm.plugins.dcmo.xml
+64770 464 -1 /product/etc/permissions/com.android.settings.xml
+64770 475 -1 /product/etc/permissions/com.google.mds.xml
+64770 478 -1 /product/etc/permissions/com.verizon.apn.xml
+64770 469 -1 /product/etc/permissions/com.google.android.dialer.support.xml
+64770 473 -1 /product/etc/permissions/com.google.googlecbrs.xml
+64770 460 -1 /product/etc/permissions/com.android.sdm.plugins.connmo.xml
+64770 465 -1 /product/etc/permissions/com.android.systemui.xml
+64770 472 -1 /product/etc/permissions/com.google.android.verizonloggingservice.xml
+64770 486 -1 /product/etc/permissions/vzw_mvs_permissions.xml
+64770 485 -1 /product/etc/permissions/tmo_grsu_permissions.xml
+64770 451 -1 /product/etc/fs_config_files
+64770 453 -1 /product/etc/libnfc-nci.conf
+64770 449 -1 /product/etc/fonts_customization.xml
+26 1562403 -1 /product/etc/ambient
+64770 432 -1 /product/etc/ambient/matcher_tah.leveldb
+26 1562405 -1 /product/etc/sysconfig
+64770 513 -1 /product/etc/sysconfig/dreamliner.xml
+64770 517 -1 /product/etc/sysconfig/google_vr_build.xml
+64770 525 -1 /product/etc/sysconfig/vzw_mvs_sysconfig.xml
+64770 515 -1 /product/etc/sysconfig/google.xml
+64770 519 -1 /product/etc/sysconfig/pixel_2018_exclusive.xml
+64770 516 -1 /product/etc/sysconfig/google_build.xml
+64770 524 -1 /product/etc/sysconfig/tmo_grsu_sysconfig.xml
+64770 522 -1 /product/etc/sysconfig/preinstalled-packages-product-pixel-2018.xml
+64770 514 -1 /product/etc/sysconfig/google-hiddenapi-package-whitelist.xml
+64770 523 -1 /product/etc/sysconfig/qti_whitelist.xml
+64770 520 -1 /product/etc/sysconfig/pixel_experience_2017.xml
+64770 526 -1 /product/etc/sysconfig/whitelist_com.android.omadm.service.xml
+64770 521 -1 /product/etc/sysconfig/pixel_experience_2018.xml
+64770 518 -1 /product/etc/sysconfig/nexus.xml
+26 1562420 -1 /product/etc/firmware
+64770 448 -1 /product/etc/firmware/music_detector.sound_model
+64770 447 -1 /product/etc/firmware/music_detector.descriptor
+26 1562423 -1 /product/etc/preferred-apps
+64770 488 -1 /product/etc/preferred-apps/google.xml
+26 34900 -1 /product/overlay
+26 1562425 -1 /product/overlay/IconPackCircularAndroid
+64770 710 -1 /product/overlay/IconPackCircularAndroid/IconPackCircularAndroidOverlay.apk
+26 1562427 -1 /product/overlay/IconPackCircularSettings
+64770 716 -1 /product/overlay/IconPackCircularSettings/IconPackCircularSettingsOverlay.apk
+26 1562429 -1 /product/overlay/NavigationBarMode3Button
+64770 748 -1 /product/overlay/NavigationBarMode3Button/NavigationBarMode3ButtonOverlay.apk
+26 1562431 -1 /product/overlay/DisplayCutoutEmulationTall
+64770 697 -1 /product/overlay/DisplayCutoutEmulationTall/DisplayCutoutEmulationTallOverlay.apk
+64770 765 -1 /product/overlay/SystemUIGoogle__auto_generated_rro_product.apk
+26 1562433 -1 /product/overlay/IconPackRoundedSettings
+64770 736 -1 /product/overlay/IconPackRoundedSettings/IconPackRoundedSettingsOverlay.apk
+64770 688 -1 /product/overlay/BuiltInPrintService__auto_generated_rro_product.apk
+26 1562436 -1 /product/overlay/AccentColorGreen
+64770 679 -1 /product/overlay/AccentColorGreen/AccentColorGreenOverlay.apk
+26 1562438 -1 /product/overlay/IconPackCircularPixelThemePicker
+64770 714 -1 /product/overlay/IconPackCircularPixelThemePicker/IconPackCircularPixelThemePickerOverlay.apk
+26 1562440 -1 /product/overlay/AccentColorSpace
+64770 687 -1 /product/overlay/AccentColorSpace/AccentColorSpaceOverlay.apk
+26 1562442 -1 /product/overlay/IconShapeSquircle
+64770 742 -1 /product/overlay/IconShapeSquircle/IconShapeSquircleOverlay.apk
+26 1562444 -1 /product/overlay/IconPackCircularSystemUI
+64770 718 -1 /product/overlay/IconPackCircularSystemUI/IconPackCircularSystemUIOverlay.apk
+26 1562446 -1 /product/overlay/ChinaMobileFrameworksRes
+64770 690 -1 /product/overlay/ChinaMobileFrameworksRes/ChinaMobileFrameworksRes.apk
+26 1562448 -1 /product/overlay/IconPackRoundedSystemUI
+64770 738 -1 /product/overlay/IconPackRoundedSystemUI/IconPackRoundedSystemUIOverlay.apk
+26 1562450 -1 /product/overlay/NavigationBarModeGesturalNarrowBack
+64770 754 -1 /product/overlay/NavigationBarModeGesturalNarrowBack/NavigationBarModeGesturalOverlayNarrowBack.apk
+26 1562452 -1 /product/overlay/DisplayCutoutNoCutout
+64770 699 -1 /product/overlay/DisplayCutoutNoCutout/NoCutoutOverlay.apk
+26 1562454 -1 /product/overlay/IconShapeTeardrop
+64770 744 -1 /product/overlay/IconShapeTeardrop/IconShapeTeardropOverlay.apk
+26 1562456 -1 /product/overlay/IconPackRoundedAndroid
+64770 730 -1 /product/overlay/IconPackRoundedAndroid/IconPackRoundedAndroidOverlay.apk
+26 1562458 -1 /product/overlay/AccentColorPurple
+64770 685 -1 /product/overlay/AccentColorPurple/AccentColorPurpleOverlay.apk
+64770 767 -1 /product/overlay/Telecom__auto_generated_rro_product.apk
+26 1562460 -1 /product/overlay/IconPackFilledAndroid
+64770 720 -1 /product/overlay/IconPackFilledAndroid/IconPackFilledAndroidOverlay.apk
+64770 766 -1 /product/overlay/TeleService__auto_generated_rro_product.apk
+64770 757 -1 /product/overlay/NfcNci__auto_generated_rro_product.apk
+26 1562462 -1 /product/overlay/DisplayCutoutEmulationDouble
+64770 695 -1 /product/overlay/DisplayCutoutEmulationDouble/DisplayCutoutEmulationDoubleOverlay.apk
+26 1562464 -1 /product/overlay/AccentColorCinnamon
+64770 677 -1 /product/overlay/AccentColorCinnamon/AccentColorCinnamonOverlay.apk
+64770 768 -1 /product/overlay/TelephonyProvider__auto_generated_rro_product.apk
+64770 762 -1 /product/overlay/SafetyRegulatoryInfo__auto_generated_rro_product.apk
+64770 764 -1 /product/overlay/SimAppDialog__auto_generated_rro_product.apk
+26 1562468 -1 /product/overlay/AccentColorOcean
+64770 681 -1 /product/overlay/AccentColorOcean/AccentColorOceanOverlay.apk
+26 1562470 -1 /product/overlay/AccentColorOrchid
+64770 683 -1 /product/overlay/AccentColorOrchid/AccentColorOrchidOverlay.apk
+26 1562472 -1 /product/overlay/IconPackRoundedPixelThemePicker
+64770 734 -1 /product/overlay/IconPackRoundedPixelThemePicker/IconPackRoundedPixelThemePickerOverlay.apk
+26 1562474 -1 /product/overlay/IconPackFilledSettings
+64770 726 -1 /product/overlay/IconPackFilledSettings/IconPackFilledSettingsOverlay.apk
+26 1562476 -1 /product/overlay/FontArbutusSource
+64770 701 -1 /product/overlay/FontArbutusSource/FontArbutusSourceOverlay.apk
+26 1562478 -1 /product/overlay/IconPackFilledPixelThemePicker
+64770 724 -1 /product/overlay/IconPackFilledPixelThemePicker/IconPackFilledPixelThemePickerOverlay.apk
+64770 707 -1 /product/overlay/GooglePermissionControllerOverlay.apk
+26 1562480 -1 /product/overlay/DisplayCutoutEmulationCorner
+64770 693 -1 /product/overlay/DisplayCutoutEmulationCorner/DisplayCutoutEmulationCornerOverlay.apk
+26 1562482 -1 /product/overlay/IconPackRoundedPixelLauncher
+64770 732 -1 /product/overlay/IconPackRoundedPixelLauncher/IconPackRoundedPixelLauncherOverlay.apk
+64770 759 -1 /product/overlay/PixelConfigOverlayCommon.apk
+26 1495636 -1 /product/overlay/PixelDocumentsUIGoogleOverlay
+64770 761 -1 /product/overlay/PixelDocumentsUIGoogleOverlay/PixelDocumentsUIGoogleOverlay.apk
+26 1562484 -1 /product/overlay/IconPackCircularPixelLauncher
+64770 712 -1 /product/overlay/IconPackCircularPixelLauncher/IconPackCircularPixelLauncherOverlay.apk
+64770 708 -1 /product/overlay/GoogleWebViewOverlay.apk
+26 180740 -1 /product/overlay/NavigationBarMode2Button
+64770 746 -1 /product/overlay/NavigationBarMode2Button/NavigationBarMode2ButtonOverlay.apk
+26 1562486 -1 /product/overlay/IconPackFilledSystemUI
+64770 728 -1 /product/overlay/IconPackFilledSystemUI/IconPackFilledSystemUIOverlay.apk
+64770 758 -1 /product/overlay/PixelConfigOverlay2018.apk
+64770 691 -1 /product/overlay/ContactsProvider__auto_generated_rro_product.apk
+26 1562488 -1 /product/overlay/AccentColorBlack
+64770 675 -1 /product/overlay/AccentColorBlack/AccentColorBlackOverlay.apk
+26 1562490 -1 /product/overlay/NavigationBarModeGesturalWideBack
+64770 756 -1 /product/overlay/NavigationBarModeGesturalWideBack/NavigationBarModeGesturalOverlayWideBack.apk
+26 1562492 -1 /product/overlay/FontRubikRubik
+64770 705 -1 /product/overlay/FontRubikRubik/FontRubikRubikOverlay.apk
+26 1562494 -1 /product/overlay/NavigationBarModeGesturalExtraWideBack
+64770 752 -1 /product/overlay/NavigationBarModeGesturalExtraWideBack/NavigationBarModeGesturalOverlayExtraWideBack.apk
+64770 706 -1 /product/overlay/GoogleConfigOverlay.apk
+64770 763 -1 /product/overlay/SettingsProvider__auto_generated_rro_product.apk
+26 1562496 -1 /product/overlay/NavigationBarModeGestural
+64770 750 -1 /product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk
+26 1562498 -1 /product/overlay/IconPackFilledPixelLauncher
+64770 722 -1 /product/overlay/IconPackFilledPixelLauncher/IconPackFilledPixelLauncherOverlay.apk
+26 1562500 -1 /product/overlay/FontArvoLato
+64770 703 -1 /product/overlay/FontArvoLato/FontArvoLatoOverlay.apk
+64770 769 -1 /product/overlay/framework-res__auto_generated_rro_product.apk
+26 1562502 -1 /product/overlay/IconShapeRoundedRect
+64770 740 -1 /product/overlay/IconShapeRoundedRect/IconShapeRoundedRectOverlay.apk
+26 172558 -1 /product/app
+26 1495631 -1 /product/app/Drive
+26 1562504 -1 /product/app/Drive/oat
+26 1562505 -1 /product/app/Drive/oat/arm64
+64770 61 -1 /product/app/Drive/oat/arm64/Drive.odex
+64770 62 -1 /product/app/Drive/oat/arm64/Drive.vdex
+64770 58 -1 /product/app/Drive/Drive.apk
+26 180686 -1 /product/app/WebViewGoogle
+26 1562508 -1 /product/app/WebViewGoogle/oat
+26 1562509 -1 /product/app/WebViewGoogle/oat/arm
+64770 308 -1 /product/app/WebViewGoogle/oat/arm/WebViewGoogle.odex
+64770 309 -1 /product/app/WebViewGoogle/oat/arm/WebViewGoogle.vdex
+26 1562512 -1 /product/app/WebViewGoogle/oat/arm64
+64770 311 -1 /product/app/WebViewGoogle/oat/arm64/WebViewGoogle.odex
+64770 312 -1 /product/app/WebViewGoogle/oat/arm64/WebViewGoogle.vdex
+64770 305 -1 /product/app/WebViewGoogle/WebViewGoogle.apk
+26 180591 -1 /product/app/PixelLogger
+64770 205 -1 /product/app/PixelLogger/PixelLogger.apk
+26 1562515 -1 /product/app/PixelLogger/oat
+26 1562516 -1 /product/app/PixelLogger/oat/arm64
+64770 209 -1 /product/app/PixelLogger/oat/arm64/PixelLogger.vdex
+64770 208 -1 /product/app/PixelLogger/oat/arm64/PixelLogger.odex
+26 1562519 -1 /product/app/MobileFeliCaWebPluginBoot
+26 1562520 -1 /product/app/MobileFeliCaWebPluginBoot/oat
+26 1562521 -1 /product/app/MobileFeliCaWebPluginBoot/oat/arm64
+64770 170 -1 /product/app/MobileFeliCaWebPluginBoot/oat/arm64/MobileFeliCaWebPluginBoot.vdex
+64770 169 -1 /product/app/MobileFeliCaWebPluginBoot/oat/arm64/MobileFeliCaWebPluginBoot.odex
+64770 166 -1 /product/app/MobileFeliCaWebPluginBoot/MobileFeliCaWebPluginBoot.apk
+26 1496123 -1 /product/app/PrebuiltDeskClockGoogle
+26 1547367 -1 /product/app/PrebuiltDeskClockGoogle/oat
+26 1545743 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64
+64770 234 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64/PrebuiltDeskClockGoogle.vdex
+64770 232 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64/PrebuiltDeskClockGoogle.art
+64770 233 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64/PrebuiltDeskClockGoogle.odex
+64770 229 -1 /product/app/PrebuiltDeskClockGoogle/PrebuiltDeskClockGoogle.apk.prof
+64770 228 -1 /product/app/PrebuiltDeskClockGoogle/PrebuiltDeskClockGoogle.apk
+26 1562526 -1 /product/app/MobileFeliCaClient
+26 1562527 -1 /product/app/MobileFeliCaClient/oat
+26 1562528 -1 /product/app/MobileFeliCaClient/oat/arm64
+64770 140 -1 /product/app/MobileFeliCaClient/oat/arm64/MobileFeliCaClient.vdex
+64770 139 -1 /product/app/MobileFeliCaClient/oat/arm64/MobileFeliCaClient.odex
+64770 136 -1 /product/app/MobileFeliCaClient/MobileFeliCaClient.apk
+26 1546782 -1 /product/app/SoundAmplifierPrebuilt
+26 1562532 -1 /product/app/SoundAmplifierPrebuilt/oat
+26 1562533 -1 /product/app/SoundAmplifierPrebuilt/oat/arm64
+64770 260 -1 /product/app/SoundAmplifierPrebuilt/oat/arm64/SoundAmplifierPrebuilt.vdex
+64770 259 -1 /product/app/SoundAmplifierPrebuilt/oat/arm64/SoundAmplifierPrebuilt.odex
+64770 256 -1 /product/app/SoundAmplifierPrebuilt/SoundAmplifierPrebuilt.apk
+26 1562536 -1 /product/app/Tycho
+26 1562537 -1 /product/app/Tycho/oat
+26 1562538 -1 /product/app/Tycho/oat/arm64
+64770 281 -1 /product/app/Tycho/oat/arm64/Tycho.vdex
+64770 280 -1 /product/app/Tycho/oat/arm64/Tycho.odex
+64770 277 -1 /product/app/Tycho/Tycho.apk
+26 1496122 -1 /product/app/GoogleContacts
+26 1494556 -1 /product/app/GoogleContacts/oat
+26 1494557 -1 /product/app/GoogleContacts/oat/arm64
+64770 82 -1 /product/app/GoogleContacts/oat/arm64/GoogleContacts.art
+64770 83 -1 /product/app/GoogleContacts/oat/arm64/GoogleContacts.odex
+64770 84 -1 /product/app/GoogleContacts/oat/arm64/GoogleContacts.vdex
+64770 79 -1 /product/app/GoogleContacts/GoogleContacts.apk.prof
+64770 78 -1 /product/app/GoogleContacts/GoogleContacts.apk
+26 1562543 -1 /product/app/GoogleVrCore
+26 1562544 -1 /product/app/GoogleVrCore/oat
+26 1562545 -1 /product/app/GoogleVrCore/oat/arm
+64770 101 -1 /product/app/GoogleVrCore/oat/arm/GoogleVrCore.odex
+64770 102 -1 /product/app/GoogleVrCore/oat/arm/GoogleVrCore.vdex
+26 1562548 -1 /product/app/GoogleVrCore/oat/arm64
+64770 104 -1 /product/app/GoogleVrCore/oat/arm64/GoogleVrCore.odex
+64770 105 -1 /product/app/GoogleVrCore/oat/arm64/GoogleVrCore.vdex
+64770 98 -1 /product/app/GoogleVrCore/GoogleVrCore.apk
+26 1562552 -1 /product/app/SoundPickerPrebuilt
+64770 262 -1 /product/app/SoundPickerPrebuilt/SoundPickerPrebuilt.apk
+26 1562554 -1 /product/app/SoundPickerPrebuilt/oat
+26 1562555 -1 /product/app/SoundPickerPrebuilt/oat/arm64
+64770 265 -1 /product/app/SoundPickerPrebuilt/oat/arm64/SoundPickerPrebuilt.odex
+64770 266 -1 /product/app/SoundPickerPrebuilt/oat/arm64/SoundPickerPrebuilt.vdex
+26 1496129 -1 /product/app/YouTube
+26 1562558 -1 /product/app/YouTube/oat
+26 1562559 -1 /product/app/YouTube/oat/arm
+64770 319 -1 /product/app/YouTube/oat/arm/YouTube.odex
+64770 320 -1 /product/app/YouTube/oat/arm/YouTube.vdex
+64770 318 -1 /product/app/YouTube/oat/arm/YouTube.art
+26 1562563 -1 /product/app/YouTube/oat/arm64
+64770 323 -1 /product/app/YouTube/oat/arm64/YouTube.odex
+64770 324 -1 /product/app/YouTube/oat/arm64/YouTube.vdex
+64770 322 -1 /product/app/YouTube/oat/arm64/YouTube.art
+64770 315 -1 /product/app/YouTube/YouTube.apk.prof
+64770 314 -1 /product/app/YouTube/YouTube.apk
+26 1562568 -1 /product/app/DiagnosticsToolPrebuilt
+26 1562569 -1 /product/app/DiagnosticsToolPrebuilt/oat
+26 1562570 -1 /product/app/DiagnosticsToolPrebuilt/oat/arm64
+64770 55 -1 /product/app/DiagnosticsToolPrebuilt/oat/arm64/DiagnosticsToolPrebuilt.odex
+64770 56 -1 /product/app/DiagnosticsToolPrebuilt/oat/arm64/DiagnosticsToolPrebuilt.vdex
+64770 52 -1 /product/app/DiagnosticsToolPrebuilt/DiagnosticsToolPrebuilt.apk
+26 1562574 -1 /product/app/MarkupGoogle
+64770 127 -1 /product/app/MarkupGoogle/MarkupGoogle.apk
+26 1562576 -1 /product/app/MarkupGoogle/oat
+26 1562577 -1 /product/app/MarkupGoogle/oat/arm64
+64770 134 -1 /product/app/MarkupGoogle/oat/arm64/MarkupGoogle.vdex
+64770 133 -1 /product/app/MarkupGoogle/oat/arm64/MarkupGoogle.odex
+26 1562580 -1 /product/app/MarkupGoogle/lib
+26 1562581 -1 /product/app/MarkupGoogle/lib/arm64
+64770 595 -1 /product/app/MarkupGoogle/lib/arm64/libsketchology_native.so
+26 1562583 -1 /product/app/arcore
+26 1562584 -1 /product/app/arcore/oat
+26 1562585 -1 /product/app/arcore/oat/arm64
+64770 330 -1 /product/app/arcore/oat/arm64/arcore.vdex
+64770 329 -1 /product/app/arcore/oat/arm64/arcore.odex
+64770 326 -1 /product/app/arcore/arcore.apk
+26 180651 -1 /product/app/SSRestartDetector
+64770 250 -1 /product/app/SSRestartDetector/SSRestartDetector.apk
+26 1562589 -1 /product/app/SSRestartDetector/oat
+26 1562590 -1 /product/app/SSRestartDetector/oat/arm64
+64770 254 -1 /product/app/SSRestartDetector/oat/arm64/SSRestartDetector.vdex
+64770 253 -1 /product/app/SSRestartDetector/oat/arm64/SSRestartDetector.odex
+26 1486139 -1 /product/app/CalendarGooglePrebuilt
+26 1562593 -1 /product/app/CalendarGooglePrebuilt/oat
+26 1562594 -1 /product/app/CalendarGooglePrebuilt/oat/arm64
+64770 25 -1 /product/app/CalendarGooglePrebuilt/oat/arm64/CalendarGooglePrebuilt.odex
+64770 26 -1 /product/app/CalendarGooglePrebuilt/oat/arm64/CalendarGooglePrebuilt.vdex
+64770 22 -1 /product/app/CalendarGooglePrebuilt/CalendarGooglePrebuilt.apk
+26 1562597 -1 /product/app/DMAgent
+64770 46 -1 /product/app/DMAgent/DMAgent.apk
+26 1562599 -1 /product/app/DMAgent/oat
+26 1562600 -1 /product/app/DMAgent/oat/arm64
+64770 49 -1 /product/app/DMAgent/oat/arm64/DMAgent.odex
+64770 50 -1 /product/app/DMAgent/oat/arm64/DMAgent.vdex
+26 1517594 -1 /product/app/GoogleTTS
+64770 92 -1 /product/app/GoogleTTS/GoogleTTS.apk
+26 1562603 -1 /product/app/GoogleTTS/oat
+26 1562604 -1 /product/app/GoogleTTS/oat/arm64
+64770 96 -1 /product/app/GoogleTTS/oat/arm64/GoogleTTS.vdex
+64770 95 -1 /product/app/GoogleTTS/oat/arm64/GoogleTTS.odex
+26 1496125 -1 /product/app/PrebuiltGmail
+26 1562607 -1 /product/app/PrebuiltGmail/oat
+26 1562608 -1 /product/app/PrebuiltGmail/oat/arm64
+64770 240 -1 /product/app/PrebuiltGmail/oat/arm64/PrebuiltGmail.art
+64770 241 -1 /product/app/PrebuiltGmail/oat/arm64/PrebuiltGmail.odex
+64770 242 -1 /product/app/PrebuiltGmail/oat/arm64/PrebuiltGmail.vdex
+64770 237 -1 /product/app/PrebuiltGmail/PrebuiltGmail.apk.prof
+64770 236 -1 /product/app/PrebuiltGmail/PrebuiltGmail.apk
+26 1545929 -1 /product/app/talkback
+64770 342 -1 /product/app/talkback/talkback.apk
+26 1562613 -1 /product/app/talkback/oat
+26 1562614 -1 /product/app/talkback/oat/arm64
+64770 340 -1 /product/app/talkback/oat/arm64/talkback.odex
+64770 341 -1 /product/app/talkback/oat/arm64/talkback.vdex
+26 1429451 -1 /product/app/Photos
+64770 199 -1 /product/app/Photos/Photos.apk
+26 1562617 -1 /product/app/Photos/oat
+26 1562618 -1 /product/app/Photos/oat/arm64
+64770 203 -1 /product/app/Photos/oat/arm64/Photos.vdex
+64770 202 -1 /product/app/Photos/oat/arm64/Photos.odex
+26 1562621 -1 /product/app/PixelThemesStub2018
+64770 211 -1 /product/app/PixelThemesStub2018/PixelThemesStub2018.apk
+26 1562623 -1 /product/app/VZWAPNLib
+26 1562624 -1 /product/app/VZWAPNLib/oat
+26 1562625 -1 /product/app/VZWAPNLib/oat/arm64
+64770 286 -1 /product/app/VZWAPNLib/oat/arm64/VZWAPNLib.odex
+64770 287 -1 /product/app/VZWAPNLib/oat/arm64/VZWAPNLib.vdex
+64770 283 -1 /product/app/VZWAPNLib/VZWAPNLib.apk
+26 1562629 -1 /product/app/xdivert
+26 1562630 -1 /product/app/xdivert/oat
+26 1562631 -1 /product/app/xdivert/oat/arm64
+64770 346 -1 /product/app/xdivert/oat/arm64/xdivert.odex
+64770 347 -1 /product/app/xdivert/oat/arm64/xdivert.vdex
+64770 348 -1 /product/app/xdivert/xdivert.apk
+26 180731 -1 /product/app/RamdumpUploader
+26 1562635 -1 /product/app/RamdumpUploader/oat
+26 1562636 -1 /product/app/RamdumpUploader/oat/arm64
+64770 248 -1 /product/app/RamdumpUploader/oat/arm64/RamdumpUploader.vdex
+64770 247 -1 /product/app/RamdumpUploader/oat/arm64/RamdumpUploader.odex
+64770 244 -1 /product/app/RamdumpUploader/RamdumpUploader.apk
+26 1562639 -1 /product/app/NexusWallpapersStubPrebuilt2018
+64770 191 -1 /product/app/NexusWallpapersStubPrebuilt2018/NexusWallpapersStubPrebuilt2018.apk
+26 1496120 -1 /product/app/PrebuiltBugle
+26 1562641 -1 /product/app/PrebuiltBugle/oat
+26 1562642 -1 /product/app/PrebuiltBugle/oat/arm64
+64770 225 -1 /product/app/PrebuiltBugle/oat/arm64/PrebuiltBugle.odex
+64770 226 -1 /product/app/PrebuiltBugle/oat/arm64/PrebuiltBugle.vdex
+64770 222 -1 /product/app/PrebuiltBugle/PrebuiltBugle.apk
+26 984486 -1 /product/app/CalculatorGooglePrebuilt
+64770 15 -1 /product/app/CalculatorGooglePrebuilt/CalculatorGooglePrebuilt.apk.prof
+26 1562646 -1 /product/app/CalculatorGooglePrebuilt/oat
+26 1562647 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64
+64770 18 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64/CalculatorGooglePrebuilt.art
+64770 20 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64/CalculatorGooglePrebuilt.vdex
+64770 19 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64/CalculatorGooglePrebuilt.odex
+64770 14 -1 /product/app/CalculatorGooglePrebuilt/CalculatorGooglePrebuilt.apk
+26 1562651 -1 /product/app/MobileFeliCaWebPlugin
+26 1562652 -1 /product/app/MobileFeliCaWebPlugin/oat
+26 1562653 -1 /product/app/MobileFeliCaWebPlugin/oat/arm64
+64770 163 -1 /product/app/MobileFeliCaWebPlugin/oat/arm64/MobileFeliCaWebPlugin.odex
+64770 164 -1 /product/app/MobileFeliCaWebPlugin/oat/arm64/MobileFeliCaWebPlugin.vdex
+64770 160 -1 /product/app/MobileFeliCaWebPlugin/MobileFeliCaWebPlugin.apk
+26 1562657 -1 /product/app/LocationHistoryPrebuilt
+26 1562658 -1 /product/app/LocationHistoryPrebuilt/oat
+26 1562659 -1 /product/app/LocationHistoryPrebuilt/oat/arm64
+64770 117 -1 /product/app/LocationHistoryPrebuilt/oat/arm64/LocationHistoryPrebuilt.vdex
+64770 116 -1 /product/app/LocationHistoryPrebuilt/oat/arm64/LocationHistoryPrebuilt.odex
+64770 113 -1 /product/app/LocationHistoryPrebuilt/LocationHistoryPrebuilt.apk
+26 1495638 -1 /product/app/NetGrapher
+64770 182 -1 /product/app/NetGrapher/NetGrapher.apk
+26 1562663 -1 /product/app/NetGrapher/oat
+26 1562664 -1 /product/app/NetGrapher/oat/arm64
+64770 189 -1 /product/app/NetGrapher/oat/arm64/NetGrapher.vdex
+64770 188 -1 /product/app/NetGrapher/oat/arm64/NetGrapher.odex
+26 1562667 -1 /product/app/NetGrapher/lib
+26 1562668 -1 /product/app/NetGrapher/lib/arm64
+64770 185 -1 /product/app/NetGrapher/lib/arm64/libcronet.65.0.3291.0.so
+26 180607 -1 /product/app/com.qualcomm.qti.services.secureui
+64770 332 -1 /product/app/com.qualcomm.qti.services.secureui/com.qualcomm.qti.services.secureui.apk
+26 1562670 -1 /product/app/com.qualcomm.qti.services.secureui/oat
+26 1562671 -1 /product/app/com.qualcomm.qti.services.secureui/oat/arm64
+64770 336 -1 /product/app/com.qualcomm.qti.services.secureui/oat/arm64/com.qualcomm.qti.services.secureui.vdex
+64770 335 -1 /product/app/com.qualcomm.qti.services.secureui/oat/arm64/com.qualcomm.qti.services.secureui.odex
+26 1562674 -1 /product/app/PlayAutoInstallConfig
+26 1562675 -1 /product/app/PlayAutoInstallConfig/oat
+26 1562676 -1 /product/app/PlayAutoInstallConfig/oat/arm
+64770 217 -1 /product/app/PlayAutoInstallConfig/oat/arm/PlayAutoInstallConfig.vdex
+64770 216 -1 /product/app/PlayAutoInstallConfig/oat/arm/PlayAutoInstallConfig.odex
+26 1562679 -1 /product/app/PlayAutoInstallConfig/oat/arm64
+64770 220 -1 /product/app/PlayAutoInstallConfig/oat/arm64/PlayAutoInstallConfig.vdex
+64770 219 -1 /product/app/PlayAutoInstallConfig/oat/arm64/PlayAutoInstallConfig.odex
+64770 213 -1 /product/app/PlayAutoInstallConfig/PlayAutoInstallConfig.apk
+26 180657 -1 /product/app/Videos
+64770 289 -1 /product/app/Videos/Videos.apk
+26 1562683 -1 /product/app/Videos/oat
+26 1562684 -1 /product/app/Videos/oat/arm
+64770 293 -1 /product/app/Videos/oat/arm/Videos.vdex
+64770 292 -1 /product/app/Videos/oat/arm/Videos.odex
+26 180566 -1 /product/app/GoogleCamera
+26 1466389 -1 /product/app/GoogleCamera/oat
+26 1452725 -1 /product/app/GoogleCamera/oat/arm64
+64770 75 -1 /product/app/GoogleCamera/oat/arm64/GoogleCamera.odex
+64770 74 -1 /product/app/GoogleCamera/oat/arm64/GoogleCamera.art
+64770 76 -1 /product/app/GoogleCamera/oat/arm64/GoogleCamera.vdex
+64770 71 -1 /product/app/GoogleCamera/GoogleCamera.apk.prof
+64770 70 -1 /product/app/GoogleCamera/GoogleCamera.apk
+26 1562688 -1 /product/app/MobileFeliCaMenuMainApp
+26 1562689 -1 /product/app/MobileFeliCaMenuMainApp/oat
+26 1562690 -1 /product/app/MobileFeliCaMenuMainApp/oat/arm64
+64770 152 -1 /product/app/MobileFeliCaMenuMainApp/oat/arm64/MobileFeliCaMenuMainApp.vdex
+64770 151 -1 /product/app/MobileFeliCaMenuMainApp/oat/arm64/MobileFeliCaMenuMainApp.odex
+64770 148 -1 /product/app/MobileFeliCaMenuMainApp/MobileFeliCaMenuMainApp.apk
+26 1562694 -1 /product/app/MobileFeliCaSettingApp
+26 1562695 -1 /product/app/MobileFeliCaSettingApp/oat
+26 1562696 -1 /product/app/MobileFeliCaSettingApp/oat/arm64
+64770 157 -1 /product/app/MobileFeliCaSettingApp/oat/arm64/MobileFeliCaSettingApp.odex
+64770 158 -1 /product/app/MobileFeliCaSettingApp/oat/arm64/MobileFeliCaSettingApp.vdex
+64770 154 -1 /product/app/MobileFeliCaSettingApp/MobileFeliCaSettingApp.apk
+26 180559 -1 /product/app/LatinIMEGooglePrebuilt
+64770 107 -1 /product/app/LatinIMEGooglePrebuilt/LatinIMEGooglePrebuilt.apk
+26 1562700 -1 /product/app/LatinIMEGooglePrebuilt/oat
+26 1562701 -1 /product/app/LatinIMEGooglePrebuilt/oat/arm64
+64770 110 -1 /product/app/LatinIMEGooglePrebuilt/oat/arm64/LatinIMEGooglePrebuilt.odex
+64770 111 -1 /product/app/LatinIMEGooglePrebuilt/oat/arm64/LatinIMEGooglePrebuilt.vdex
+26 1562704 -1 /product/app/ModuleMetadataGoogle
+64770 172 -1 /product/app/ModuleMetadataGoogle/ModuleMetadataGoogle.apk
+26 1347095 -1 /product/app/Maps
+26 1350039 -1 /product/app/Maps/oat
+26 1347099 -1 /product/app/Maps/oat/arm64
+64770 125 -1 /product/app/Maps/oat/arm64/Maps.vdex
+64770 123 -1 /product/app/Maps/oat/arm64/Maps.art
+64770 124 -1 /product/app/Maps/oat/arm64/Maps.odex
+64770 119 -1 /product/app/Maps/Maps.apk
+64770 120 -1 /product/app/Maps/Maps.apk.prof
+26 1562707 -1 /product/app/Ornament
+26 1562708 -1 /product/app/Ornament/oat
+26 1562709 -1 /product/app/Ornament/oat/arm64
+64770 197 -1 /product/app/Ornament/oat/arm64/Ornament.vdex
+64770 196 -1 /product/app/Ornament/oat/arm64/Ornament.odex
+64770 193 -1 /product/app/Ornament/Ornament.apk
+26 1496127 -1 /product/app/Music2
+26 1562713 -1 /product/app/Music2/oat
+26 1562714 -1 /product/app/Music2/oat/arm64
+64770 178 -1 /product/app/Music2/oat/arm64/Music2.art
+64770 179 -1 /product/app/Music2/oat/arm64/Music2.odex
+64770 180 -1 /product/app/Music2/oat/arm64/Music2.vdex
+64770 174 -1 /product/app/Music2/Music2.apk
+64770 175 -1 /product/app/Music2/Music2.apk.prof
+26 1562719 -1 /product/app/EmergencyInfoGoogleNoUi
+26 1562720 -1 /product/app/EmergencyInfoGoogleNoUi/oat
+26 1562721 -1 /product/app/EmergencyInfoGoogleNoUi/oat/arm64
+64770 67 -1 /product/app/EmergencyInfoGoogleNoUi/oat/arm64/EmergencyInfoGoogleNoUi.odex
+64770 68 -1 /product/app/EmergencyInfoGoogleNoUi/oat/arm64/EmergencyInfoGoogleNoUi.vdex
+64770 64 -1 /product/app/EmergencyInfoGoogleNoUi/EmergencyInfoGoogleNoUi.apk
+26 180795 -1 /product/app/TrichromeLibrary
+64770 268 -1 /product/app/TrichromeLibrary/TrichromeLibrary.apk
+26 1562725 -1 /product/app/TrichromeLibrary/oat
+26 1562726 -1 /product/app/TrichromeLibrary/oat/arm
+64770 271 -1 /product/app/TrichromeLibrary/oat/arm/TrichromeLibrary.odex
+64770 272 -1 /product/app/TrichromeLibrary/oat/arm/TrichromeLibrary.vdex
+26 1562729 -1 /product/app/TrichromeLibrary/oat/arm64
+64770 274 -1 /product/app/TrichromeLibrary/oat/arm64/TrichromeLibrary.odex
+64770 275 -1 /product/app/TrichromeLibrary/oat/arm64/TrichromeLibrary.vdex
+26 1496117 -1 /product/app/Chrome
+64770 35 -1 /product/app/Chrome/Chrome.apk.prof
+26 1562733 -1 /product/app/Chrome/oat
+26 1562734 -1 /product/app/Chrome/oat/arm
+64770 38 -1 /product/app/Chrome/oat/arm/Chrome.art
+64770 40 -1 /product/app/Chrome/oat/arm/Chrome.vdex
+64770 39 -1 /product/app/Chrome/oat/arm/Chrome.odex
+26 1562738 -1 /product/app/Chrome/oat/arm64
+64770 42 -1 /product/app/Chrome/oat/arm64/Chrome.art
+64770 44 -1 /product/app/Chrome/oat/arm64/Chrome.vdex
+64770 43 -1 /product/app/Chrome/oat/arm64/Chrome.odex
+64770 34 -1 /product/app/Chrome/Chrome.apk
+26 1562742 -1 /product/app/WallpapersBReel2018
+26 1562743 -1 /product/app/WallpapersBReel2018/oat
+26 1562744 -1 /product/app/WallpapersBReel2018/oat/arm64
+64770 302 -1 /product/app/WallpapersBReel2018/oat/arm64/WallpapersBReel2018.odex
+64770 303 -1 /product/app/WallpapersBReel2018/oat/arm64/WallpapersBReel2018.vdex
+64770 295 -1 /product/app/WallpapersBReel2018/WallpapersBReel2018.apk
+26 1562748 -1 /product/app/WallpapersBReel2018/lib
+26 1562749 -1 /product/app/WallpapersBReel2018/lib/arm64
+64770 596 -1 /product/app/WallpapersBReel2018/lib/arm64/libwallpapers-breel-2018-jni.so
+64770 591 -1 /product/app/WallpapersBReel2018/lib/arm64/libgdx.so
+26 1562752 -1 /product/app/MobileFeliCaMenuApp
+26 1562753 -1 /product/app/MobileFeliCaMenuApp/oat
+26 1562754 -1 /product/app/MobileFeliCaMenuApp/oat/arm64
+64770 145 -1 /product/app/MobileFeliCaMenuApp/oat/arm64/MobileFeliCaMenuApp.odex
+64770 146 -1 /product/app/MobileFeliCaMenuApp/oat/arm64/MobileFeliCaMenuApp.vdex
+64770 142 -1 /product/app/MobileFeliCaMenuApp/MobileFeliCaMenuApp.apk
+26 1481918 -1 /product/app/CarrierMetrics
+26 1562758 -1 /product/app/CarrierMetrics/oat
+26 1562759 -1 /product/app/CarrierMetrics/oat/arm64
+64770 31 -1 /product/app/CarrierMetrics/oat/arm64/CarrierMetrics.odex
+64770 32 -1 /product/app/CarrierMetrics/oat/arm64/CarrierMetrics.vdex
+64770 28 -1 /product/app/CarrierMetrics/CarrierMetrics.apk
+26 1562762 -1 /product/app/GoogleContactsSyncAdapter
+26 1562763 -1 /product/app/GoogleContactsSyncAdapter/oat
+26 1562764 -1 /product/app/GoogleContactsSyncAdapter/oat/arm64
+64770 90 -1 /product/app/GoogleContactsSyncAdapter/oat/arm64/GoogleContactsSyncAdapter.vdex
+64770 89 -1 /product/app/GoogleContactsSyncAdapter/oat/arm64/GoogleContactsSyncAdapter.odex
+64770 86 -1 /product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk
+26 1562768 -1 /product/iorap-trace
+64770 576 -1 /product/iorap-trace/com.android.calendar.compiled_trace.pb
+64770 577 -1 /product/iorap-trace/com.android.deskclock.compiled_trace.pb
+64770 578 -1 /product/iorap-trace/com.google.android.GoogleCamera.compiled_trace.pb
+2054 27 -1 /product/iorap-trace/com.android.settings.compiled_trace.pb
+2054 28 -1 /product/iorap-trace/com.google.android.calculator.compiled_trace.pb
+26 1494253 -1 /product/lib
+64770 582 -1 /product/lib/libdmjavaplugin.so
+64770 586 -1 /product/lib/vendor.qti.hardware.qdutils_disp@1.0.so
+64770 585 -1 /product/lib/vendor.google.wireless_charger@1.0.so
+64770 584 -1 /product/lib/vendor.google.wifi_ext@1.0.so
+64770 583 -1 /product/lib/libsecureuisvc_jni.so
+64770 581 -1 /product/lib/libdmengine.so
+64770 580 -1 /product/lib/com.qualcomm.qti.ant@1.0.so
+66317 2 -1 /metadata
+66317 16 -1 /metadata/apex
+66317 17 -1 /metadata/apex/sessions
+66317 13 -1 /metadata/password_slots
+66317 14 -1 /metadata/ota
+66317 15 -1 /metadata/ota/snapshots
+66317 12 -1 /metadata/vold
+66317 21 -1 /metadata/vold/metadata_encryption
+66317 22 -1 /metadata/vold/metadata_encryption/key
+66317 26 -1 /metadata/vold/metadata_encryption/key/keymaster_key_blob
+66317 23 -1 /metadata/vold/metadata_encryption/key/version
+66317 25 -1 /metadata/vold/metadata_encryption/key/stretching
+66317 27 -1 /metadata/vold/metadata_encryption/key/encrypted_key
+66317 24 -1 /metadata/vold/metadata_encryption/key/secdiscardable
+66317 18 -1 /metadata/gsi
+66317 20 -1 /metadata/gsi/ota
+66317 19 -1 /metadata/gsi/dsu
+66317 11 -1 /metadata/lost+found
diff --git a/tests/src/db/app_component_name_test.cc b/tests/src/db/app_component_name_test.cc
new file mode 100644
index 0000000..2d2fa59
--- /dev/null
+++ b/tests/src/db/app_component_name_test.cc
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2019 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
+ *
+ * http://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 "common/debug.h"
+#include "db/app_component_name.h"
+
+#include <gtest/gtest.h>
+
+namespace iorap::compiler {
+
+TEST(AppComponentNameTest, FullyQualifiedActivityName) {
+ db::AppComponentName component_name{"foo.bar", "foo.bar.MainActivity"};
+
+ db::AppComponentName result = component_name.Canonicalize();
+
+ EXPECT_EQ(result.package, "foo.bar");
+ EXPECT_EQ(result.activity_name, "foo.bar.MainActivity");
+}
+
+TEST(AppComponentNameTest, NotFullyQualifiedActivityName) {
+ db::AppComponentName component_name{"foo.bar", ".MainActivity"};
+
+ db::AppComponentName result = component_name.Canonicalize();
+
+ EXPECT_EQ(result.package, "foo.bar");
+ EXPECT_EQ(result.activity_name, "foo.bar.MainActivity");
+}
+} // namespace iorap::compiler
diff --git a/tests/src/inode2filename/search_directories_test.cc b/tests/src/inode2filename/search_directories_test.cc
index d9903d6..89dc433 100644
--- a/tests/src/inode2filename/search_directories_test.cc
+++ b/tests/src/inode2filename/search_directories_test.cc
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+#include "inode2filename/inode.h"
#include "inode2filename/search_directories.h"
#include "inode2filename/system_call.h"
@@ -28,6 +29,10 @@
#include <sys/sysmacros.h>
+#ifdef makedev
+#undef makedev
+#endif
+
// Set this to 1 when debugging by hand to get more output.
// Otherwise the spam might be too much when most tests are failing.
@@ -2446,9 +2451,9 @@ class FakeSystemCall : public SystemCall {
memset(statbuf, 0, sizeof(*statbuf));
Inode inode = maybe_path_entry->inode;
- statbuf->st_dev = makedev(static_cast<int>(inode.device_major),
- static_cast<int>(inode.device_minor));
- statbuf->st_ino = static_cast<ino_t>(inode.inode);
+ statbuf->st_dev = iorap::inode2filename::makedev(static_cast<int>(inode.device_major),
+ static_cast<int>(inode.device_minor));
+ statbuf->st_ino = static_cast<iorap::inode2filename::ino_t>(inode.inode);
return 0;
}
@@ -2813,7 +2818,7 @@ auto MakeAllPassInodes(std::vector<std::string> root_dirs, std::vector<std::stri
INSTANTIATE_TEST_CASE_P(AllResultsAreSuccess,
SearchDirectoriesTest,
::testing::Values(
- MakeAllPassInodes(/*root_dirs*/{"/"}, {"66323@1127133"}, {"/data"})
+ MakeAllPassInodes(/*root_dirs*/{"/"}, {"66323@1127133"}, {"//data"}) // TODO: why is it adding an extra '/' ?
));
#endif
diff --git a/tests/src/maintenance/controller_test.cc b/tests/src/maintenance/controller_test.cc
new file mode 100644
index 0000000..d2ce19f
--- /dev/null
+++ b/tests/src/maintenance/controller_test.cc
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2019 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
+ *
+ * http://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 "common/debug.h"
+#include "maintenance/controller.h"
+
+#include "db/file_models.h"
+#include "db/models.h"
+
+#include <cstdio>
+#include <filesystem>
+#include <fstream>
+#include <string>
+#include <vector>
+
+#include <android-base/file.h>
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+using ::testing::Return;
+using ::testing::_;
+using ::testing::SaveArg;
+using ::testing::SaveArgPointee;
+
+namespace iorap::maintenance {
+
+static std::string GetTestDataPath(const std::string& fn) {
+ static std::string exec_dir = android::base::GetExecutableDirectory();
+ return exec_dir + "/tests/src/maintenance/testdata/" + fn;
+}
+
+class MockExec : public IExec {
+ public:
+ MOCK_METHOD(int,
+ Execve,
+ (const std::string& pathname, std::vector<std::string>& argv_vec, char *const envp[]),
+ (override));
+
+ MOCK_METHOD(pid_t, Fork, (), (override));
+};
+
+class ControllerTest: public ::testing::Test {
+ protected:
+ void SetUp() override {
+ // The db is a fake db with the following tables:
+ //
+ // packages:
+ // id, name, version
+ // 1, com.android.settings, 1
+ // 2, com.yawanng, 1
+ //
+ // activities:
+ // id, name
+ // 1, Setting
+ // 2, yawanng
+ //
+ // app_launch_histories:
+ // id, activity_id, temperature, trace_enabled, readahead_enabled, intent_start_ns, total_time_ns, report_fully_drawn_ns
+ // 1, 1, 1, 1, 1, 1, 2, NULL
+ // 2, 1, 1, 1, 1, NULL, 4, 5
+ // 3, 1, 1, 1, 1, 3, NULL, NULL
+ // 4, 1, 1, 1, 1, 3, 7, 8
+ // 5, 1, 1, 0, 1, 4, 9, 10
+ // 6, 1, 2, 1, 1, 5, 11, 12
+ // 7, 2, 1, 1, 1, 6, 21, 22
+ // 8, 2, 1, 1, 1, 7, 22, 23
+ //
+ // raw_traces:
+ // id, history_id, file_path
+ // 1, 1, 1.txt
+ // 2, 3, 3.txt
+ // 3, 4, 4.txt
+ // 4, 5, 5.txt
+ // 5, 6, 6.txt
+ // 6, 7, 7.txt
+ // 7, 8, 8.txt
+ db_path = GetTestDataPath("test_sqlite.db");
+ }
+
+ std::string db_path;
+ TemporaryDir root_path;
+};
+
+MATCHER_P(AreArgsExpected, compiled_trace_path, "") {
+ std::vector<std::string> expect =
+ { "1.txt",
+ "3.txt",
+ "4.txt",
+ "--timestamp_limit_ns", "2",
+ "--timestamp_limit_ns", "18446744073709551615",
+ "--timestamp_limit_ns", "8",
+ "--output-text",
+ "--output-proto", compiled_trace_path,
+ "--verbose" };
+ return arg == expect;
+}
+
+TEST_F(ControllerTest, CompilationController) {
+ auto mock_exec = std::make_shared<MockExec>();
+ iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path);
+ db::DbHandle db{db_schema.db()};
+
+ setenv("IORAPD_ROOT_DIR", root_path.path ,1);
+ std::string compiled_trace_path = std::string(root_path.path) +
+ "/com.android.settings/1/Setting/compiled_traces/compiled_trace.pb";
+
+ // No recompile
+ ControllerParameters params{
+ /*output_text=*/true,
+ /*inode_textcache=*/std::nullopt,
+ /*verbose=*/true,
+ /*recompile=*/false,
+ /*min_traces=*/3,
+ mock_exec};
+
+ ON_CALL(*mock_exec, Fork())
+ .WillByDefault(Return(-2));
+
+ EXPECT_CALL(*mock_exec,
+ Execve("/system/bin/iorap.cmd.compiler",
+ AreArgsExpected(compiled_trace_path),
+ nullptr))
+ .Times(2);
+
+ CompileAppsOnDevice(db, params);
+
+ // Recompile
+ ControllerParameters params2{
+ /*output_text=*/true,
+ /*inode_textcache=*/std::nullopt,
+ /*verbose=*/true,
+ /*recompile=*/true,
+ /*min_traces=*/3,
+ mock_exec};
+
+ // Create a fake compiled trace file to test recompile.
+ std::ofstream tmp_file;
+ tmp_file.open(compiled_trace_path);
+ tmp_file.close();
+
+ CompileAppsOnDevice(db, params2);
+}
+
+} // namespace iorap::maintenance
diff --git a/tests/src/maintenance/testdata/test_sqlite.db b/tests/src/maintenance/testdata/test_sqlite.db
new file mode 100644
index 0000000..8e823f2
--- /dev/null
+++ b/tests/src/maintenance/testdata/test_sqlite.db
Binary files differ