Merge "tp: rework version detection logic in startup metric" into main
diff --git a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql
index b4988b7..8c496d9 100644
--- a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql
@@ -73,8 +73,8 @@
 -- Left join since some CPUs may only match the 2D LUT
 LEFT JOIN _filtered_curves_1d lut ON
   iff.policy = lut.policy AND
-  iff.idle = lut.idle AND
-  iff.freq = lut.freq_khz;
+  iff.freq = lut.freq_khz AND
+  iff.idle = lut.idle;
 
 CREATE PERFETTO TABLE _stats_cpu0
 AS
diff --git a/src/trace_processor/perfetto_sql/stdlib/wattson/curves/ungrouped.sql b/src/trace_processor/perfetto_sql/stdlib/wattson/curves/ungrouped.sql
index 307025d..ca678a7 100644
--- a/src/trace_processor/perfetto_sql/stdlib/wattson/curves/ungrouped.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/wattson/curves/ungrouped.sql
@@ -73,23 +73,23 @@
 FROM _idle_freq_l3_hit_l3_miss_slice as base
 LEFT JOIN _filtered_curves_2d lut4 ON
   base.freq_0 = lut4.freq_khz AND
-  base.freq_4 = lut4.other_freq_khz AND
   base.policy_4 = lut4.other_policy AND
+  base.freq_4 = lut4.other_freq_khz AND
   lut4.idle = 255
 LEFT JOIN _filtered_curves_2d lut5 ON
   base.freq_0 = lut5.freq_khz AND
-  base.freq_5 = lut5.other_freq_khz AND
   base.policy_5 = lut5.other_policy AND
+  base.freq_5 = lut5.other_freq_khz AND
   lut5.idle = 255
 LEFT JOIN _filtered_curves_2d lut6 ON
   base.freq_0 = lut6.freq_khz AND
-  base.freq_6 = lut6.other_freq_khz AND
   base.policy_6 = lut6.other_policy AND
+  base.freq_6 = lut6.other_freq_khz AND
   lut6.idle = 255
 LEFT JOIN _filtered_curves_2d lut7 ON
   base.freq_0 = lut7.freq_khz AND
-  base.freq_7 = lut7.other_freq_khz AND
   base.policy_7 = lut7.other_policy AND
+  base.freq_7 = lut7.other_freq_khz AND
   lut7.idle = 255
 -- Needs to be at least 1us to reduce inconsequential rows.
 WHERE dur > time_from_us(1);
@@ -169,44 +169,44 @@
 FROM _get_max_vote as base
 -- LUT for 2D dependencies
 LEFT JOIN _filtered_curves_2d lut0 ON
-  lut0.idle = base.idle_0 AND
   lut0.freq_khz = base.freq_0 AND
+  lut0.other_policy = base.max_policy_vote AND
   lut0.other_freq_khz = base.max_freq_vote AND
-  lut0.other_policy = base.max_policy_vote
+  lut0.idle = base.idle_0
 LEFT JOIN _filtered_curves_2d lut1 ON
-  lut1.idle = base.idle_1 AND
   lut1.freq_khz = base.freq_1 AND
+  lut1.other_policy = base.max_policy_vote AND
   lut1.other_freq_khz = base.max_freq_vote AND
-  lut1.other_policy = base.max_policy_vote
+  lut1.idle = base.idle_1
 LEFT JOIN _filtered_curves_2d lut2 ON
-  lut2.idle = base.idle_2 AND
   lut2.freq_khz = base.freq_2 AND
+  lut2.other_policy = base.max_policy_vote AND
   lut2.other_freq_khz = base.max_freq_vote AND
-  lut2.other_policy = base.max_policy_vote
+  lut2.idle = base.idle_2
 LEFT JOIN _filtered_curves_2d lut3 ON
-  lut3.idle = base.idle_3 AND
   lut3.freq_khz = base.freq_3 AND
+  lut3.other_policy = base.max_policy_vote AND
   lut3.other_freq_khz = base.max_freq_vote AND
-  lut3.other_policy = base.max_policy_vote
+  lut3.idle = base.idle_3
 -- LUT for static curve lookup
 LEFT JOIN _filtered_curves_2d static_2d ON
   static_2d.freq_khz = base.freq_0 AND
-  static_2d.other_freq_khz = base.max_freq_vote AND
   static_2d.other_policy = base.max_policy_vote AND
+  static_2d.other_freq_khz = base.max_freq_vote AND
   static_2d.idle = 255
 LEFT JOIN _filtered_curves_1d static_1d ON
-  static_1d.freq_khz = base.freq_0 AND
   static_1d.policy = 0 AND
+  static_1d.freq_khz = base.freq_0 AND
   static_1d.idle = 255
 -- LUT joins for L3 cache
 LEFT JOIN _filtered_curves_l3 l3_hit_lut ON
-  l3_hit_lut.action= 'hit' AND
   l3_hit_lut.freq_khz = base.freq_0 AND
+  l3_hit_lut.other_policy = base.max_policy_vote AND
   l3_hit_lut.other_freq_khz = base.max_freq_vote AND
-  l3_hit_lut.other_policy = base.max_policy_vote
+  l3_hit_lut.action = 'hit'
 LEFT JOIN _filtered_curves_l3 l3_miss_lut ON
-  l3_miss_lut.action = 'miss' AND
   l3_miss_lut.freq_khz = base.freq_0 AND
+  l3_miss_lut.other_policy = base.max_policy_vote AND
   l3_miss_lut.other_freq_khz = base.max_freq_vote AND
-  l3_miss_lut.other_policy = base.max_policy_vote;
+  l3_miss_lut.action = 'miss';
 
diff --git a/src/trace_processor/tables/winscope_tables.py b/src/trace_processor/tables/winscope_tables.py
index 1562eb9..245c072 100644
--- a/src/trace_processor/tables/winscope_tables.py
+++ b/src/trace_processor/tables/winscope_tables.py
@@ -26,7 +26,7 @@
     class_name='InputMethodClientsTable',
     sql_name='__intrinsic_inputmethod_clients',
     columns=[
-        C('ts', CppInt64()),
+        C('ts', CppInt64(), ColumnFlag.SORTED),
         C('arg_set_id', CppUint32()),
     ],
     tabledoc=TableDoc(
@@ -42,7 +42,7 @@
     class_name='InputMethodManagerServiceTable',
     sql_name='__intrinsic_inputmethod_manager_service',
     columns=[
-        C('ts', CppInt64()),
+        C('ts', CppInt64(), ColumnFlag.SORTED),
         C('arg_set_id', CppUint32()),
     ],
     tabledoc=TableDoc(
@@ -58,7 +58,7 @@
     class_name='InputMethodServiceTable',
     sql_name='__intrinsic_inputmethod_service',
     columns=[
-        C('ts', CppInt64()),
+        C('ts', CppInt64(), ColumnFlag.SORTED),
         C('arg_set_id', CppUint32()),
     ],
     tabledoc=TableDoc(
@@ -74,7 +74,7 @@
     class_name='SurfaceFlingerLayersSnapshotTable',
     sql_name='surfaceflinger_layers_snapshot',
     columns=[
-        C('ts', CppInt64()),
+        C('ts', CppInt64(), ColumnFlag.SORTED),
         C('arg_set_id', CppUint32()),
     ],
     tabledoc=TableDoc(
@@ -106,7 +106,7 @@
     class_name='SurfaceFlingerTransactionsTable',
     sql_name='surfaceflinger_transactions',
     columns=[
-        C('ts', CppInt64()),
+        C('ts', CppInt64(), ColumnFlag.SORTED),
         C('arg_set_id', CppUint32()),
     ],
     tabledoc=TableDoc(
@@ -123,7 +123,7 @@
     class_name='ViewCaptureTable',
     sql_name='__intrinsic_viewcapture',
     columns=[
-        C('ts', CppInt64()),
+        C('ts', CppInt64(), ColumnFlag.SORTED),
         C('arg_set_id', CppUint32()),
     ],
     tabledoc=TableDoc(
@@ -140,7 +140,7 @@
     sql_name='window_manager_shell_transitions',
     columns=[
         C('ts', CppInt64()),
-        C('transition_id', CppInt64()),
+        C('transition_id', CppInt64(), ColumnFlag.SORTED),
         C('arg_set_id', CppUint32()),
     ],
     tabledoc=TableDoc(
diff --git a/src/traceconv/pprof_builder.cc b/src/traceconv/pprof_builder.cc
index 4018776..130399c 100644
--- a/src/traceconv/pprof_builder.cc
+++ b/src/traceconv/pprof_builder.cc
@@ -974,7 +974,7 @@
 
       // Find parent of the parent
       auto parent_id_it = parents.find(current_parent_id);
-      PERFETTO_CHECK(parent_id_it != interned_ids.end());
+      PERFETTO_CHECK(parent_id_it != parents.end());
 
       current_parent_id = parent_id_it->second;
     }
diff --git a/ui/build.js b/ui/build.js
index c6fecd0..2df02c3 100644
--- a/ui/build.js
+++ b/ui/build.js
@@ -740,7 +740,8 @@
   const absDir = path.isAbsolute(dir) ? dir : pjoin(ROOT_DIR, dir);
   // Add a fs watch if in watch mode.
   if (cfg.watch) {
-    fs.watch(absDir, {recursive: true}, (_eventType, filePath) => {
+    fs.watch(absDir, {recursive: true}, (_eventType, relFilePath) => {
+      const filePath = pjoin(absDir, relFilePath);
       if (!filterFn(filePath)) return;
       if (cfg.verbose) {
         console.log('File change detected', _eventType, filePath);
diff --git a/ui/package.json b/ui/package.json
index d04ed9f..8d1c489 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -69,7 +69,7 @@
     "pngjs": "^7.0.0",
     "prettier": "^3.3.2",
     "puppeteer": "^22.12.1",
-    "rollup": "^4.18.0",
+    "rollup": "^2.79.1",
     "rollup-plugin-re": "^1.0.7",
     "rollup-plugin-sourcemaps": "^0.6.3",
     "rollup-plugin-uglify": "^6.0.4",
diff --git a/ui/pnpm-lock.yaml b/ui/pnpm-lock.yaml
index c360716..328c796 100644
--- a/ui/pnpm-lock.yaml
+++ b/ui/pnpm-lock.yaml
@@ -129,10 +129,10 @@
     version: 9.6.0
   '@rollup/plugin-commonjs':
     specifier: ^26.0.1
-    version: 26.0.1(rollup@4.18.0)
+    version: 26.0.1(rollup@2.79.1)
   '@rollup/plugin-node-resolve':
     specifier: ^15.2.3
-    version: 15.2.3(rollup@4.18.0)
+    version: 15.2.3(rollup@2.79.1)
   '@types/jest':
     specifier: ^29.5.12
     version: 29.5.12
@@ -188,17 +188,17 @@
     specifier: ^22.12.1
     version: 22.12.1(typescript@5.5.2)
   rollup:
-    specifier: ^4.18.0
-    version: 4.18.0
+    specifier: ^2.79.1
+    version: 2.79.1
   rollup-plugin-re:
     specifier: ^1.0.7
     version: 1.0.7
   rollup-plugin-sourcemaps:
     specifier: ^0.6.3
-    version: 0.6.3(@types/node@20.14.9)(rollup@4.18.0)
+    version: 0.6.3(@types/node@20.14.9)(rollup@2.79.1)
   rollup-plugin-uglify:
     specifier: ^6.0.4
-    version: 6.0.4(rollup@4.18.0)
+    version: 6.0.4(rollup@2.79.1)
   sass:
     specifier: ^1.77.6
     version: 1.77.6
@@ -1521,7 +1521,7 @@
       - supports-color
     dev: true
 
-  /@rollup/plugin-commonjs@26.0.1(rollup@4.18.0):
+  /@rollup/plugin-commonjs@26.0.1(rollup@2.79.1):
     resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==}
     engines: {node: '>=16.0.0 || 14 >= 14.17'}
     peerDependencies:
@@ -1530,16 +1530,16 @@
       rollup:
         optional: true
     dependencies:
-      '@rollup/pluginutils': 5.0.2(rollup@4.18.0)
+      '@rollup/pluginutils': 5.0.2(rollup@2.79.1)
       commondir: 1.0.1
       estree-walker: 2.0.2
       glob: 10.4.2
       is-reference: 1.2.1
       magic-string: 0.30.10
-      rollup: 4.18.0
+      rollup: 2.79.1
     dev: true
 
-  /@rollup/plugin-node-resolve@15.2.3(rollup@4.18.0):
+  /@rollup/plugin-node-resolve@15.2.3(rollup@2.79.1):
     resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
@@ -1548,16 +1548,16 @@
       rollup:
         optional: true
     dependencies:
-      '@rollup/pluginutils': 5.0.2(rollup@4.18.0)
+      '@rollup/pluginutils': 5.0.2(rollup@2.79.1)
       '@types/resolve': 1.20.2
       deepmerge: 4.3.1
       is-builtin-module: 3.2.1
       is-module: 1.0.0
       resolve: 1.22.2
-      rollup: 4.18.0
+      rollup: 2.79.1
     dev: true
 
-  /@rollup/pluginutils@3.1.0(rollup@4.18.0):
+  /@rollup/pluginutils@3.1.0(rollup@2.79.1):
     resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
     engines: {node: '>= 8.0.0'}
     peerDependencies:
@@ -1566,10 +1566,10 @@
       '@types/estree': 0.0.39
       estree-walker: 1.0.1
       picomatch: 2.3.1
-      rollup: 4.18.0
+      rollup: 2.79.1
     dev: true
 
-  /@rollup/pluginutils@5.0.2(rollup@4.18.0):
+  /@rollup/pluginutils@5.0.2(rollup@2.79.1):
     resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
@@ -1581,137 +1581,9 @@
       '@types/estree': 1.0.5
       estree-walker: 2.0.2
       picomatch: 2.3.1
-      rollup: 4.18.0
+      rollup: 2.79.1
     dev: true
 
-  /@rollup/rollup-android-arm-eabi@4.18.0:
-    resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==}
-    cpu: [arm]
-    os: [android]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-android-arm64@4.18.0:
-    resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==}
-    cpu: [arm64]
-    os: [android]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-darwin-arm64@4.18.0:
-    resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==}
-    cpu: [arm64]
-    os: [darwin]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-darwin-x64@4.18.0:
-    resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==}
-    cpu: [x64]
-    os: [darwin]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-arm-gnueabihf@4.18.0:
-    resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==}
-    cpu: [arm]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-arm-musleabihf@4.18.0:
-    resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==}
-    cpu: [arm]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-arm64-gnu@4.18.0:
-    resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==}
-    cpu: [arm64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-arm64-musl@4.18.0:
-    resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==}
-    cpu: [arm64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-powerpc64le-gnu@4.18.0:
-    resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==}
-    cpu: [ppc64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-riscv64-gnu@4.18.0:
-    resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==}
-    cpu: [riscv64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-s390x-gnu@4.18.0:
-    resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==}
-    cpu: [s390x]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-x64-gnu@4.18.0:
-    resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==}
-    cpu: [x64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-linux-x64-musl@4.18.0:
-    resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==}
-    cpu: [x64]
-    os: [linux]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-win32-arm64-msvc@4.18.0:
-    resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==}
-    cpu: [arm64]
-    os: [win32]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-win32-ia32-msvc@4.18.0:
-    resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==}
-    cpu: [ia32]
-    os: [win32]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@rollup/rollup-win32-x64-msvc@4.18.0:
-    resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==}
-    cpu: [x64]
-    os: [win32]
-    requiresBuild: true
-    dev: true
-    optional: true
-
   /@sinclair/typebox@0.27.8:
     resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
     dev: true
@@ -5198,7 +5070,7 @@
       rollup-pluginutils: 2.8.2
     dev: true
 
-  /rollup-plugin-sourcemaps@0.6.3(@types/node@20.14.9)(rollup@4.18.0):
+  /rollup-plugin-sourcemaps@0.6.3(@types/node@20.14.9)(rollup@2.79.1):
     resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==}
     engines: {node: '>=10.0.0'}
     peerDependencies:
@@ -5208,20 +5080,20 @@
       '@types/node':
         optional: true
     dependencies:
-      '@rollup/pluginutils': 3.1.0(rollup@4.18.0)
+      '@rollup/pluginutils': 3.1.0(rollup@2.79.1)
       '@types/node': 20.14.9
-      rollup: 4.18.0
+      rollup: 2.79.1
       source-map-resolve: 0.6.0
     dev: true
 
-  /rollup-plugin-uglify@6.0.4(rollup@4.18.0):
+  /rollup-plugin-uglify@6.0.4(rollup@2.79.1):
     resolution: {integrity: sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==}
     peerDependencies:
       rollup: '>=0.66.0 <2'
     dependencies:
       '@babel/code-frame': 7.22.5
       jest-worker: 24.9.0
-      rollup: 4.18.0
+      rollup: 2.79.1
       serialize-javascript: 2.1.2
       uglify-js: 3.17.4
     dev: true
@@ -5232,29 +5104,11 @@
       estree-walker: 0.6.1
     dev: true
 
-  /rollup@4.18.0:
-    resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==}
-    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+  /rollup@2.79.1:
+    resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+    engines: {node: '>=10.0.0'}
     hasBin: true
-    dependencies:
-      '@types/estree': 1.0.5
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.18.0
-      '@rollup/rollup-android-arm64': 4.18.0
-      '@rollup/rollup-darwin-arm64': 4.18.0
-      '@rollup/rollup-darwin-x64': 4.18.0
-      '@rollup/rollup-linux-arm-gnueabihf': 4.18.0
-      '@rollup/rollup-linux-arm-musleabihf': 4.18.0
-      '@rollup/rollup-linux-arm64-gnu': 4.18.0
-      '@rollup/rollup-linux-arm64-musl': 4.18.0
-      '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0
-      '@rollup/rollup-linux-riscv64-gnu': 4.18.0
-      '@rollup/rollup-linux-s390x-gnu': 4.18.0
-      '@rollup/rollup-linux-x64-gnu': 4.18.0
-      '@rollup/rollup-linux-x64-musl': 4.18.0
-      '@rollup/rollup-win32-arm64-msvc': 4.18.0
-      '@rollup/rollup-win32-ia32-msvc': 4.18.0
-      '@rollup/rollup-win32-x64-msvc': 4.18.0
       fsevents: 2.3.3
     dev: true